mirror of
https://github.com/openfaas/faasd.git
synced 2025-06-09 00:16:46 +00:00
Reduce duplication of pre-pull logic
Signed-off-by: Alex Ellis (OpenFaaS Ltd) <alexellis2@gmail.com>
This commit is contained in:
parent
c4936133f6
commit
9c04b8dfd7
@ -72,11 +72,11 @@ func MakeDeployHandler(client *containerd.Client, cni gocni.CNI, secretMountPath
|
|||||||
// prepull is an optimization which means an image can be pulled before a deployment
|
// prepull is an optimization which means an image can be pulled before a deployment
|
||||||
// request, since a deployment request first deletes the active function before
|
// request, since a deployment request first deletes the active function before
|
||||||
// trying to deploy a new one.
|
// trying to deploy a new one.
|
||||||
func prepull(ctx context.Context, req types.FunctionDeployment, client *containerd.Client, alwaysPull bool) error {
|
func prepull(ctx context.Context, req types.FunctionDeployment, client *containerd.Client, alwaysPull bool) (containerd.Image, error) {
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
r, err := reference.ParseNormalizedNamed(req.Image)
|
r, err := reference.ParseNormalizedNamed(req.Image)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
imgRef := reference.TagNameOnly(r).String()
|
imgRef := reference.TagNameOnly(r).String()
|
||||||
@ -88,38 +88,27 @@ func prepull(ctx context.Context, req types.FunctionDeployment, client *containe
|
|||||||
|
|
||||||
image, err := service.PrepareImage(ctx, client, imgRef, snapshotter, alwaysPull)
|
image, err := service.PrepareImage(ctx, client, imgRef, snapshotter, alwaysPull)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrapf(err, "unable to pull image %s", imgRef)
|
return nil, errors.Wrapf(err, "unable to pull image %s", imgRef)
|
||||||
}
|
}
|
||||||
|
|
||||||
size, _ := image.Size(ctx)
|
size, _ := image.Size(ctx)
|
||||||
log.Printf("[Prepull] Deploy %s size: %d, took: %fs\n", image.Name(), size, time.Since(start).Seconds())
|
log.Printf("Image for: %s size: %d, took: %fs\n", image.Name(), size, time.Since(start).Seconds())
|
||||||
|
|
||||||
return nil
|
return image, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func deploy(ctx context.Context, req types.FunctionDeployment, client *containerd.Client, cni gocni.CNI, secretMountPath string, alwaysPull bool) error {
|
func deploy(ctx context.Context, req types.FunctionDeployment, client *containerd.Client, cni gocni.CNI, secretMountPath string, alwaysPull bool) error {
|
||||||
start := time.Now()
|
|
||||||
|
|
||||||
r, err := reference.ParseNormalizedNamed(req.Image)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
imgRef := reference.TagNameOnly(r).String()
|
|
||||||
|
|
||||||
snapshotter := ""
|
snapshotter := ""
|
||||||
if val, ok := os.LookupEnv("snapshotter"); ok {
|
if val, ok := os.LookupEnv("snapshotter"); ok {
|
||||||
snapshotter = val
|
snapshotter = val
|
||||||
}
|
}
|
||||||
|
|
||||||
image, err := service.PrepareImage(ctx, client, imgRef, snapshotter, alwaysPull)
|
image, err := prepull(ctx, req, client, alwaysPull)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrapf(err, "unable to pull image %s", imgRef)
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
size, _ := image.Size(ctx)
|
|
||||||
log.Printf("[deploy] Deploy %s size: %d, took: %fs\n", image.Name(), size, time.Since(start).Seconds())
|
|
||||||
|
|
||||||
envs := prepareEnv(req.EnvProcess, req.EnvVars)
|
envs := prepareEnv(req.EnvProcess, req.EnvVars)
|
||||||
mounts := getMounts()
|
mounts := getMounts()
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ func MakeUpdateHandler(client *containerd.Client, cni gocni.CNI, secretMountPath
|
|||||||
|
|
||||||
ctx := namespaces.WithNamespace(context.Background(), faasd.FunctionNamespace)
|
ctx := namespaces.WithNamespace(context.Background(), faasd.FunctionNamespace)
|
||||||
|
|
||||||
if err := prepull(ctx, req, client, alwaysPull); err != nil {
|
if _, err := prepull(ctx, req, client, alwaysPull); err != nil {
|
||||||
log.Printf("[Update] error with pre-pull: %s, %s\n", name, err)
|
log.Printf("[Update] error with pre-pull: %s, %s\n", name, err)
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user