From 802ed2badb38b7b2cf22c703405e8e4833510411 Mon Sep 17 00:00:00 2001 From: Sanket Sudake Date: Mon, 6 Sep 2021 13:12:33 +0530 Subject: [PATCH] Check package resource version from fetch request with fetched package (#2183) When fetch request is received by fetcher, it fetches package information. Checking if package resource version mentioned in fetch req matches with one received. Adding warning for now, in future we need to ensure we give error if resource version are not matching. Signed-off-by: Sanket Sudake --- pkg/fetcher/config/config.go | 5 +++-- pkg/fetcher/fetcher.go | 4 ++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/pkg/fetcher/config/config.go b/pkg/fetcher/config/config.go index cb90320fa..1667e6606 100644 --- a/pkg/fetcher/config/config.go +++ b/pkg/fetcher/config/config.go @@ -125,8 +125,9 @@ func (cfg *Config) NewSpecializeRequest(fn *fv1.Function, env *fv1.Environment) FetchReq: fetcher.FunctionFetchRequest{ FetchType: fv1.FETCH_DEPLOYMENT, Package: metav1.ObjectMeta{ - Namespace: fn.Spec.Package.PackageRef.Namespace, - Name: fn.Spec.Package.PackageRef.Name, + Namespace: fn.Spec.Package.PackageRef.Namespace, + Name: fn.Spec.Package.PackageRef.Name, + ResourceVersion: fn.Spec.Package.PackageRef.ResourceVersion, }, Filename: targetFilename, Secrets: fn.Spec.Secrets, diff --git a/pkg/fetcher/fetcher.go b/pkg/fetcher/fetcher.go index 6ff4c1b7f..2d5fad77a 100644 --- a/pkg/fetcher/fetcher.go +++ b/pkg/fetcher/fetcher.go @@ -602,8 +602,12 @@ func (fetcher *Fetcher) unarchive(src string, dst string) error { func (fetcher *Fetcher) getPkgInformation(ctx context.Context, req FunctionFetchRequest) (pkg *fv1.Package, err error) { maxRetries := 5 for i := 0; i < maxRetries; i++ { + // TODO: pass resource version in the GetOptions, added warning for now pkg, err = fetcher.fissionClient.CoreV1().Packages(req.Package.Namespace).Get(ctx, req.Package.Name, metav1.GetOptions{}) if err == nil { + if req.Package.ResourceVersion != pkg.ResourceVersion { + fetcher.logger.Warn("package resource version mismatch", zap.String("pkgName", req.Package.Name), zap.String("pkgNamespace", req.Package.Namespace), zap.String("pkgResourceVersion", req.Package.ResourceVersion), zap.String("fetchedResourceVersion", pkg.ResourceVersion)) + } return pkg, nil } if i < maxRetries-1 {