Merge pull request #1719 from monopole/mvPluginConfig

Move plugin config to main config package.
This commit is contained in:
Jeff Regan
2019-11-01 16:32:42 -07:00
committed by GitHub
14 changed files with 61 additions and 62 deletions

View File

@@ -4,7 +4,7 @@
package krusty
import (
"sigs.k8s.io/kustomize/api/plugins/config"
"sigs.k8s.io/kustomize/api/pgmconfig"
"sigs.k8s.io/kustomize/api/types"
)
@@ -35,6 +35,6 @@ func MakeDefaultOptions() *Options {
DoLegacyResourceSort: true,
LoadRestrictions: rootOnly,
DoPrune: false,
PluginConfig: config.DefaultPluginConfig(),
PluginConfig: pgmconfig.DefaultPluginConfig(),
}
}

6
api/pgmconfig/doc.go Normal file
View File

@@ -0,0 +1,6 @@
// Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0
// Package pgmconfig provides configuration methods and constants
// for the kustomize API.
package pgmconfig

View File

@@ -23,11 +23,11 @@ const (
// An environment variable to consult for kustomization
// configuration data. See:
// https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
XdgConfigHome = "XDG_CONFIG_HOME"
XdgConfigHomeEnv = "XDG_CONFIG_HOME"
// Use this when XdgConfigHome not defined.
DefaultConfigSubdir = ".config"
// Use this when XdgConfigHomeEnv not defined.
XdgConfigHomeEnvDefault = ".config"
// Program name, for help, finding the XDG_CONFIG_DIR, etc.
// A program name, for use in help, finding the XDG_CONFIG_DIR, etc.
ProgramName = "kustomize"
)

View File

@@ -1,9 +1,7 @@
// Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0
// Package config provides configuration methods and constants
// for general plugins.
package config
package pgmconfig
import (
"fmt"
@@ -12,22 +10,23 @@ import (
"runtime"
"github.com/spf13/pflag"
"sigs.k8s.io/kustomize/api/pgmconfig"
"sigs.k8s.io/kustomize/api/types"
)
const (
// Used with Go plugins.
// Symbol that must be used inside Go plugins.
PluginSymbol = "KustomizePlugin"
// Location of builtins.
BuiltinPluginPackage = "builtin"
// ApiVersion of builtins.
// The value of kubernetes ApiVersion to use in configuration
// files for builtin plugins.
// The value for non-builtins can be anything.
BuiltinPluginApiVersion = BuiltinPluginPackage
// Domain from which kustomize code is imported, for locating
// plugin source code under $GOPATH.
// plugin source code under $GOPATH when GOPATH is defined.
DomainName = "sigs.k8s.io"
// Name of directory housing all plugins.
@@ -73,12 +72,12 @@ func AddFlagEnablePlugins(set *pflag.FlagSet, v *bool) {
// Use https://github.com/kirsle/configdir instead?
func configRoot() string {
dir := os.Getenv(pgmconfig.XdgConfigHome)
dir := os.Getenv(XdgConfigHomeEnv)
if len(dir) == 0 {
dir = filepath.Join(
HomeDir(), pgmconfig.DefaultConfigSubdir)
HomeDir(), XdgConfigHomeEnvDefault)
}
return filepath.Join(dir, pgmconfig.ProgramName)
return filepath.Join(dir, ProgramName)
}
func HomeDir() string {

View File

@@ -1,29 +1,27 @@
// Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0
package config
package pgmconfig
import (
"os"
"path/filepath"
"strings"
"testing"
"sigs.k8s.io/kustomize/api/pgmconfig"
)
func TestConfigDirNoXdg(t *testing.T) {
xdg, isSet := os.LookupEnv(pgmconfig.XdgConfigHome)
xdg, isSet := os.LookupEnv(XdgConfigHomeEnv)
if isSet {
os.Unsetenv(pgmconfig.XdgConfigHome)
os.Unsetenv(XdgConfigHomeEnv)
}
s := configRoot()
if isSet {
os.Setenv(pgmconfig.XdgConfigHome, xdg)
os.Setenv(XdgConfigHomeEnv, xdg)
}
if !strings.HasSuffix(
s,
rootedPath(pgmconfig.DefaultConfigSubdir, pgmconfig.ProgramName)) {
rootedPath(XdgConfigHomeEnvDefault, ProgramName)) {
t.Fatalf("unexpected config dir: %s", s)
}
}
@@ -33,13 +31,13 @@ func rootedPath(elem ...string) string {
}
func TestConfigDirWithXdg(t *testing.T) {
xdg, isSet := os.LookupEnv(pgmconfig.XdgConfigHome)
os.Setenv(pgmconfig.XdgConfigHome, rootedPath("blah"))
xdg, isSet := os.LookupEnv(XdgConfigHomeEnv)
os.Setenv(XdgConfigHomeEnv, rootedPath("blah"))
s := configRoot()
if isSet {
os.Setenv(pgmconfig.XdgConfigHome, xdg)
os.Setenv(XdgConfigHomeEnv, xdg)
}
if s != rootedPath("blah", pgmconfig.ProgramName) {
if s != rootedPath("blah", ProgramName) {
t.Fatalf("unexpected config dir: %s", s)
}
}

View File

@@ -13,7 +13,6 @@ import (
"time"
"sigs.k8s.io/kustomize/api/pgmconfig"
"sigs.k8s.io/kustomize/api/plugins/config"
)
// Compiler creates Go plugin object files.
@@ -36,20 +35,20 @@ func DefaultSrcRoot() (string, error) {
root = filepath.Join(
os.Getenv("GOPATH"), "src",
config.DomainName, pgmconfig.ProgramName, config.PluginRoot)
pgmconfig.DomainName, pgmconfig.ProgramName, pgmconfig.PluginRoot)
if FileExists(root) {
return root, nil
}
nope = append(nope, root)
root = config.DefaultPluginConfig().DirectoryPath
root = pgmconfig.DefaultPluginConfig().DirectoryPath
if FileExists(root) {
return root, nil
}
nope = append(nope, root)
root = filepath.Join(
config.HomeDir(), pgmconfig.ProgramName, config.PluginRoot)
pgmconfig.HomeDir(), pgmconfig.ProgramName, pgmconfig.PluginRoot)
if FileExists(root) {
return root, nil
}

View File

@@ -11,7 +11,7 @@ import (
"sigs.k8s.io/kustomize/api/internal/loadertest"
"sigs.k8s.io/kustomize/api/k8sdeps/kunstruct"
"sigs.k8s.io/kustomize/api/plugins/config"
"sigs.k8s.io/kustomize/api/pgmconfig"
. "sigs.k8s.io/kustomize/api/plugins/execplugin"
"sigs.k8s.io/kustomize/api/plugins/loader"
"sigs.k8s.io/kustomize/api/resmap"
@@ -46,7 +46,7 @@ s/$BAR/bar/g
p, err := NewExecPlugin(
loader.AbsolutePluginPath(
config.DefaultPluginConfig(),
pgmconfig.DefaultPluginConfig(),
pluginConfig.OrgId()))
if err != nil {
t.Fatalf("unexpected error: %v", err.Error())

View File

@@ -13,8 +13,8 @@ import (
"github.com/pkg/errors"
"sigs.k8s.io/kustomize/api/ifc"
"sigs.k8s.io/kustomize/api/pgmconfig"
"sigs.k8s.io/kustomize/api/plugins/builtinhelpers"
"sigs.k8s.io/kustomize/api/plugins/config"
"sigs.k8s.io/kustomize/api/plugins/execplugin"
"sigs.k8s.io/kustomize/api/resid"
"sigs.k8s.io/kustomize/api/resmap"
@@ -103,7 +103,7 @@ func (l *Loader) absolutePluginPath(id resid.ResId) string {
func isBuiltinPlugin(res *resource.Resource) bool {
// TODO: the special string should appear in Group, not Version.
return res.GetGvk().Group == "" &&
res.GetGvk().Version == config.BuiltinPluginApiVersion
res.GetGvk().Version == pgmconfig.BuiltinPluginApiVersion
}
func (l *Loader) loadAndConfigurePlugin(
@@ -117,7 +117,7 @@ func (l *Loader) loadAndConfigurePlugin(
} else if l.pc.Enabled {
c, err = l.loadPlugin(res.OrgId())
} else {
err = config.NotEnabledErr(res.OrgId().Kind)
err = pgmconfig.NotEnabledErr(res.OrgId().Kind)
}
if err != nil {
return nil, err
@@ -178,11 +178,11 @@ func (l *Loader) loadGoPlugin(id resid.ResId) (resmap.Configurable, error) {
if err != nil {
return nil, errors.Wrapf(err, "plugin %s fails to load", absPath)
}
symbol, err := p.Lookup(config.PluginSymbol)
symbol, err := p.Lookup(pgmconfig.PluginSymbol)
if err != nil {
return nil, errors.Wrapf(
err, "plugin %s doesn't have symbol %s",
regId, config.PluginSymbol)
regId, pgmconfig.PluginSymbol)
}
c, ok := symbol.(resmap.Configurable)
if !ok {

View File

@@ -8,12 +8,12 @@ import (
"sigs.k8s.io/kustomize/api/internal/loadertest"
"sigs.k8s.io/kustomize/api/k8sdeps/kunstruct"
"sigs.k8s.io/kustomize/api/plugins/config"
"sigs.k8s.io/kustomize/api/pgmconfig"
. "sigs.k8s.io/kustomize/api/plugins/loader"
"sigs.k8s.io/kustomize/api/resmap"
"sigs.k8s.io/kustomize/api/resource"
"sigs.k8s.io/kustomize/api/testutils/kusttest"
"sigs.k8s.io/kustomize/api/testutils/valtest"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
valtest_test "sigs.k8s.io/kustomize/api/testutils/valtest"
)
const (
@@ -57,7 +57,7 @@ func TestLoader(t *testing.T) {
ldr := loadertest.NewFakeLoader("/foo")
pLdr := NewLoader(config.ActivePluginConfig(), rmF)
pLdr := NewLoader(pgmconfig.ActivePluginConfig(), rmF)
if pLdr == nil {
t.Fatal("expect non-nil loader")
}

View File

@@ -8,8 +8,8 @@ import (
"testing"
"sigs.k8s.io/kustomize/api/loader"
"sigs.k8s.io/kustomize/api/plugins/config"
"sigs.k8s.io/kustomize/api/testutils/kusttest"
"sigs.k8s.io/kustomize/api/pgmconfig"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
)
func TestOrderPreserved(t *testing.T) {
@@ -300,7 +300,7 @@ spec:
func TestSharedPatchDisAllowed(t *testing.T) {
th := kusttest_test.NewKustTestHarnessFull(
t, "/app/overlay",
loader.RestrictionRootOnly, config.DefaultPluginConfig())
loader.RestrictionRootOnly, pgmconfig.DefaultPluginConfig())
writeSmallBase(th)
th.WriteK("/app/overlay", `
commonLabels:
@@ -332,7 +332,7 @@ spec:
func TestSharedPatchAllowed(t *testing.T) {
th := kusttest_test.NewKustTestHarnessFull(
t, "/app/overlay",
loader.RestrictionNone, config.DefaultPluginConfig())
loader.RestrictionNone, pgmconfig.DefaultPluginConfig())
writeSmallBase(th)
th.WriteK("/app/overlay", `
commonLabels:

View File

@@ -13,13 +13,13 @@ import (
"sigs.k8s.io/kustomize/api/k8sdeps/kunstruct"
"sigs.k8s.io/kustomize/api/k8sdeps/transformer"
fLdr "sigs.k8s.io/kustomize/api/loader"
"sigs.k8s.io/kustomize/api/plugins/config"
"sigs.k8s.io/kustomize/api/pgmconfig"
pLdr "sigs.k8s.io/kustomize/api/plugins/loader"
"sigs.k8s.io/kustomize/api/resmap"
"sigs.k8s.io/kustomize/api/resource"
"sigs.k8s.io/kustomize/api/target"
"sigs.k8s.io/kustomize/api/testutils/kusttest"
"sigs.k8s.io/kustomize/api/testutils/valtest"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
valtest_test "sigs.k8s.io/kustomize/api/testutils/valtest"
)
func TestPluginDir(t *testing.T) {
@@ -65,7 +65,7 @@ metadata:
rf := resmap.NewFactory(resource.NewFactory(
kunstruct.NewKunstructuredFactoryImpl()), nil)
pl := pLdr.NewLoader(config.ActivePluginConfig(), rf)
pl := pLdr.NewLoader(pgmconfig.ActivePluginConfig(), rf)
tg, err := target.NewKustTarget(
ldr, valtest_test.MakeFakeValidator(), rf, transformer.NewFactoryImpl(), pl)
if err != nil {

View File

@@ -15,7 +15,6 @@ import (
fLdr "sigs.k8s.io/kustomize/api/loader"
"sigs.k8s.io/kustomize/api/pgmconfig"
"sigs.k8s.io/kustomize/api/plugins/builtinconfig/consts"
"sigs.k8s.io/kustomize/api/plugins/config"
pLdr "sigs.k8s.io/kustomize/api/plugins/loader"
"sigs.k8s.io/kustomize/api/resmap"
"sigs.k8s.io/kustomize/api/resource"
@@ -37,17 +36,17 @@ type KustTestHarness struct {
func NewKustTestHarness(t *testing.T, path string) *KustTestHarness {
return NewKustTestHarnessFull(
t, path, fLdr.RestrictionRootOnly, config.DefaultPluginConfig())
t, path, fLdr.RestrictionRootOnly, pgmconfig.DefaultPluginConfig())
}
func NewKustTestHarnessAllowPlugins(t *testing.T, path string) *KustTestHarness {
return NewKustTestHarnessFull(
t, path, fLdr.RestrictionRootOnly, config.ActivePluginConfig())
t, path, fLdr.RestrictionRootOnly, pgmconfig.ActivePluginConfig())
}
func NewKustTestHarnessNoLoadRestrictor(t *testing.T, path string) *KustTestHarness {
return NewKustTestHarnessFull(
t, path, fLdr.RestrictionNone, config.DefaultPluginConfig())
t, path, fLdr.RestrictionNone, pgmconfig.DefaultPluginConfig())
}
func NewKustTestHarnessFull(

View File

@@ -13,7 +13,6 @@ import (
"sigs.k8s.io/kustomize/api/pgmconfig"
"sigs.k8s.io/kustomize/api/plugins/compiler"
"sigs.k8s.io/kustomize/api/plugins/config"
)
// PluginTestEnv manages the plugin test environment.
@@ -71,7 +70,7 @@ func (x *PluginTestEnv) makeCompiler() *compiler.Compiler {
// $objRoot
// so set things up accordingly.
objRoot := filepath.Join(
x.workDir, pgmconfig.ProgramName, config.PluginRoot)
x.workDir, pgmconfig.ProgramName, pgmconfig.PluginRoot)
err := os.MkdirAll(objRoot, os.ModePerm)
if err != nil {
x.t.Error(err)
@@ -100,14 +99,14 @@ func (x *PluginTestEnv) removeWorkDir() {
}
func (x *PluginTestEnv) setEnv() {
x.oldXdg, x.wasSet = os.LookupEnv(pgmconfig.XdgConfigHome)
os.Setenv(pgmconfig.XdgConfigHome, x.workDir)
x.oldXdg, x.wasSet = os.LookupEnv(pgmconfig.XdgConfigHomeEnv)
os.Setenv(pgmconfig.XdgConfigHomeEnv, x.workDir)
}
func (x *PluginTestEnv) resetEnv() {
if x.wasSet {
os.Setenv(pgmconfig.XdgConfigHome, x.oldXdg)
os.Setenv(pgmconfig.XdgConfigHomeEnv, x.oldXdg)
} else {
os.Unsetenv(pgmconfig.XdgConfigHome)
os.Unsetenv(pgmconfig.XdgConfigHomeEnv)
}
}

View File

@@ -13,7 +13,6 @@ import (
"sigs.k8s.io/kustomize/api/filesys"
"sigs.k8s.io/kustomize/api/krusty"
"sigs.k8s.io/kustomize/api/pgmconfig"
"sigs.k8s.io/kustomize/api/plugins/config"
"sigs.k8s.io/kustomize/api/resmap"
"sigs.k8s.io/kustomize/api/resource"
"sigs.k8s.io/yaml"
@@ -75,7 +74,7 @@ func NewCmdBuild(out io.Writer) *cobra.Command {
"output", "o", "",
"If specified, write the build output to this path.")
krusty.AddFlagLoadRestrictor(cmd.Flags())
config.AddFlagEnablePlugins(
pgmconfig.AddFlagEnablePlugins(
cmd.Flags(), &o.pluginsEnabled)
addFlagReorderOutput(cmd.Flags())
cmd.AddCommand(NewCmdBuildPrune(out))