From 1e1b9b484a836714b57b25c2cd47dda1780610e7 Mon Sep 17 00:00:00 2001 From: Natasha Sarkar Date: Thu, 19 Aug 2021 20:15:24 -0700 Subject: [PATCH] exec function working dir is the kustomization that referenced it (#4125) * exec function working dir is the kustomization that referenced it * suggested changes * more code review * use a field instead of an annotation * more code review --- api/internal/plugins/fnplugin/fnplugin.go | 1 + api/internal/plugins/loader/loader.go | 5 + api/internal/target/kusttarget.go | 5 +- api/krusty/fnplugin_test.go | 149 ++++++++++++++++++++-- api/krusty/fnplugin_test/fnexectest.sh | 24 ---- api/types/pluginrestrictions.go | 2 + cmd/config/internal/commands/run-fns.go | 8 ++ cmd/config/internal/commands/run_test.go | 18 ++- kyaml/fn/runtime/exec/exec.go | 17 +++ kyaml/runfn/runfn.go | 12 +- 10 files changed, 199 insertions(+), 42 deletions(-) delete mode 100755 api/krusty/fnplugin_test/fnexectest.sh diff --git a/api/internal/plugins/fnplugin/fnplugin.go b/api/internal/plugins/fnplugin/fnplugin.go index 76be4b0760..84bc0ac059 100644 --- a/api/internal/plugins/fnplugin/fnplugin.go +++ b/api/internal/plugins/fnplugin/fnplugin.go @@ -79,6 +79,7 @@ func NewFnPlugin(o *types.FnPluginLoadingOptions) *FnPlugin { StorageMounts: toStorageMounts(o.Mounts), Env: o.Env, AsCurrentUser: o.AsCurrentUser, + WorkingDir: o.WorkingDir, }, } } diff --git a/api/internal/plugins/loader/loader.go b/api/internal/plugins/loader/loader.go index 7bcce43152..3fff946bba 100644 --- a/api/internal/plugins/loader/loader.go +++ b/api/internal/plugins/loader/loader.go @@ -47,6 +47,11 @@ func (l *Loader) Config() *types.PluginConfig { return l.pc } +// SetWorkDir sets the working directory for this loader's plugins +func (l *Loader) SetWorkDir(wd string) { + l.pc.FnpLoadingOptions.WorkingDir = wd +} + func (l *Loader) LoadGenerators( ldr ifc.Loader, v ifc.Validator, rm resmap.ResMap) ([]resmap.Generator, error) { var result []resmap.Generator diff --git a/api/internal/target/kusttarget.go b/api/internal/target/kusttarget.go index 18a38f3c48..45e021e245 100644 --- a/api/internal/target/kusttarget.go +++ b/api/internal/target/kusttarget.go @@ -40,11 +40,13 @@ func NewKustTarget( validator ifc.Validator, rFactory *resmap.Factory, pLdr *loader.Loader) *KustTarget { + pLdrCopy := *pLdr + pLdrCopy.SetWorkDir(ldr.Root()) return &KustTarget{ ldr: ldr, validator: validator, rFactory: rFactory, - pLdr: pLdr, + pLdr: &pLdrCopy, } } @@ -295,7 +297,6 @@ func (kt *KustTarget) configureExternalTransformers(transformers []string) ([]re ra.AppendAll(rm) } ra, err := kt.accumulateResources(ra, transformerPaths, &resource.Origin{}) - if err != nil { return nil, err } diff --git a/api/krusty/fnplugin_test.go b/api/krusty/fnplugin_test.go index eca491056b..88fa8dee84 100644 --- a/api/krusty/fnplugin_test.go +++ b/api/krusty/fnplugin_test.go @@ -1,17 +1,52 @@ package krusty_test import ( + "os" "os/exec" + "path/filepath" "testing" + "github.com/stretchr/testify/assert" kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest" + "sigs.k8s.io/kustomize/kyaml/filesys" ) +const generateDeploymentDotSh = `#!/bin/sh + +cat <