Merge pull request #1280 from sethpollack/generator_metadata

use ObjectMeta
This commit is contained in:
Jeff Regan
2019-06-30 06:55:52 -07:00
committed by GitHub
18 changed files with 77 additions and 54 deletions

View File

@@ -183,9 +183,8 @@ func (kt *KustTarget) computeInventory(
p := builtin.NewInventoryTransformerPlugin() p := builtin.NewInventoryTransformerPlugin()
var c struct { var c struct {
Policy string Policy string
Name string types.ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
Namespace string
} }
c.Name = inv.ConfigMap.Name c.Name = inv.ConfigMap.Name
c.Namespace = inv.ConfigMap.Namespace c.Namespace = inv.ConfigMap.Namespace

View File

@@ -129,8 +129,8 @@ func (kt *KustTarget) configureBuiltinNamespaceTransformer(
tConfig *config.TransformerConfig) ( tConfig *config.TransformerConfig) (
result []transformers.Transformer, err error) { result []transformers.Transformer, err error) {
var c struct { var c struct {
Namespace string types.ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
FieldSpecs []config.FieldSpec FieldSpecs []config.FieldSpec
} }
c.Namespace = kt.kustomization.Namespace c.Namespace = kt.kustomization.Namespace
c.FieldSpecs = tConfig.NameSpace c.FieldSpecs = tConfig.NameSpace

View File

@@ -9,8 +9,9 @@ import (
) )
type ConfigMapGeneratorPlugin struct { type ConfigMapGeneratorPlugin struct {
ldr ifc.Loader ldr ifc.Loader
rf *resmap.Factory rf *resmap.Factory
types.ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
types.GeneratorOptions types.GeneratorOptions
types.ConfigMapArgs types.ConfigMapArgs
} }
@@ -25,6 +26,12 @@ func (p *ConfigMapGeneratorPlugin) Config(
p.GeneratorOptions = types.GeneratorOptions{} p.GeneratorOptions = types.GeneratorOptions{}
p.ConfigMapArgs = types.ConfigMapArgs{} p.ConfigMapArgs = types.ConfigMapArgs{}
err = yaml.Unmarshal(config, p) err = yaml.Unmarshal(config, p)
if p.ConfigMapArgs.Name == "" {
p.ConfigMapArgs.Name = p.Name
}
if p.ConfigMapArgs.Namespace == "" {
p.ConfigMapArgs.Namespace = p.Namespace
}
p.ldr = ldr p.ldr = ldr
p.rf = rf p.rf = rf
return return

View File

@@ -16,11 +16,10 @@ import (
) )
type InventoryTransformerPlugin struct { type InventoryTransformerPlugin struct {
ldr ifc.Loader ldr ifc.Loader
rf *resmap.Factory rf *resmap.Factory
Policy string `json:"policy,omitempty" yaml:"policy,omitempty"` types.ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
Name string `json:"name,omitempty" yaml:"name,omitempty"` Policy string `json:"policy,omitempty" yaml:"policy,omitempty"`
Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
} }
//noinspection GoUnusedGlobalVariable //noinspection GoUnusedGlobalVariable

View File

@@ -9,13 +9,14 @@ import (
"sigs.k8s.io/kustomize/v3/pkg/resource" "sigs.k8s.io/kustomize/v3/pkg/resource"
"sigs.k8s.io/kustomize/v3/pkg/transformers" "sigs.k8s.io/kustomize/v3/pkg/transformers"
"sigs.k8s.io/kustomize/v3/pkg/transformers/config" "sigs.k8s.io/kustomize/v3/pkg/transformers/config"
"sigs.k8s.io/kustomize/v3/pkg/types"
"sigs.k8s.io/yaml" "sigs.k8s.io/yaml"
) )
// Change or set the namespace of non-cluster level resources. // Change or set the namespace of non-cluster level resources.
type NamespaceTransformerPlugin struct { type NamespaceTransformerPlugin struct {
Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"` types.ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
FieldSpecs []config.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"` FieldSpecs []config.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
} }
//noinspection GoUnusedGlobalVariable //noinspection GoUnusedGlobalVariable

View File

@@ -9,8 +9,9 @@ import (
) )
type SecretGeneratorPlugin struct { type SecretGeneratorPlugin struct {
ldr ifc.Loader ldr ifc.Loader
rf *resmap.Factory rf *resmap.Factory
types.ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
types.GeneratorOptions types.GeneratorOptions
types.SecretArgs types.SecretArgs
} }
@@ -25,6 +26,12 @@ func (p *SecretGeneratorPlugin) Config(
p.GeneratorOptions = types.GeneratorOptions{} p.GeneratorOptions = types.GeneratorOptions{}
p.SecretArgs = types.SecretArgs{} p.SecretArgs = types.SecretArgs{}
err = yaml.Unmarshal(config, p) err = yaml.Unmarshal(config, p)
if p.SecretArgs.Name == "" {
p.SecretArgs.Name = p.Name
}
if p.SecretArgs.Namespace == "" {
p.SecretArgs.Namespace = p.Namespace
}
p.ldr = ldr p.ldr = ldr
p.rf = rf p.rf = rf
return return

View File

@@ -12,8 +12,9 @@ import (
) )
type plugin struct { type plugin struct {
ldr ifc.Loader ldr ifc.Loader
rf *resmap.Factory rf *resmap.Factory
types.ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
types.GeneratorOptions types.GeneratorOptions
types.ConfigMapArgs types.ConfigMapArgs
} }
@@ -26,6 +27,12 @@ func (p *plugin) Config(
p.GeneratorOptions = types.GeneratorOptions{} p.GeneratorOptions = types.GeneratorOptions{}
p.ConfigMapArgs = types.ConfigMapArgs{} p.ConfigMapArgs = types.ConfigMapArgs{}
err = yaml.Unmarshal(config, p) err = yaml.Unmarshal(config, p)
if p.ConfigMapArgs.Name == "" {
p.ConfigMapArgs.Name = p.Name
}
if p.ConfigMapArgs.Namespace == "" {
p.ConfigMapArgs.Namespace = p.Namespace
}
p.ldr = ldr p.ldr = ldr
p.rf = rf p.rf = rf
return return

View File

@@ -30,8 +30,7 @@ COLOR=red
apiVersion: builtin apiVersion: builtin
kind: ConfigMapGenerator kind: ConfigMapGenerator
metadata: metadata:
name: myMapGen name: myMap
name: myMap
envs: envs:
- devops.env - devops.env
- uxteam.env - uxteam.env

View File

@@ -19,11 +19,10 @@ import (
) )
type plugin struct { type plugin struct {
ldr ifc.Loader ldr ifc.Loader
rf *resmap.Factory rf *resmap.Factory
Policy string `json:"policy,omitempty" yaml:"policy,omitempty"` types.ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
Name string `json:"name,omitempty" yaml:"name,omitempty"` Policy string `json:"policy,omitempty" yaml:"policy,omitempty"`
Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
} }
//noinspection GoUnusedGlobalVariable //noinspection GoUnusedGlobalVariable

View File

@@ -71,10 +71,9 @@ func TestInventoryTransformerCollect(t *testing.T) {
apiVersion: builtin apiVersion: builtin
kind: InventoryTransformer kind: InventoryTransformer
metadata: metadata:
name: notImportantHere name: pruneCM
namespace: default
policy: GarbageCollect policy: GarbageCollect
name: pruneCM
namespace: default
`, content) `, content)
th.AssertActualEqualsExpected(rm, inv) th.AssertActualEqualsExpected(rm, inv)
@@ -93,10 +92,9 @@ func TestInventoryTransformerIgnore(t *testing.T) {
apiVersion: builtin apiVersion: builtin
kind: InventoryTransformer kind: InventoryTransformer
metadata: metadata:
name: notImportantHere name: pruneCM
namespace: default
policy: GarbageIgnore policy: GarbageIgnore
name: pruneCM
namespace: default
`, content) `, content)
th.AssertActualEqualsExpected(rm, content+"---"+inv) th.AssertActualEqualsExpected(rm, content+"---"+inv)
@@ -115,9 +113,8 @@ func TestInventoryTransformerDefaultPolicy(t *testing.T) {
apiVersion: builtin apiVersion: builtin
kind: InventoryTransformer kind: InventoryTransformer
metadata: metadata:
name: notImportantHere name: pruneCM
name: pruneCM namespace: default
namespace: default
`, content) `, content)
th.AssertActualEqualsExpected(rm, content+"---"+inv) th.AssertActualEqualsExpected(rm, content+"---"+inv)

View File

@@ -11,13 +11,14 @@ import (
"sigs.k8s.io/kustomize/v3/pkg/resmap" "sigs.k8s.io/kustomize/v3/pkg/resmap"
"sigs.k8s.io/kustomize/v3/pkg/resource" "sigs.k8s.io/kustomize/v3/pkg/resource"
"sigs.k8s.io/kustomize/v3/pkg/transformers" "sigs.k8s.io/kustomize/v3/pkg/transformers"
"sigs.k8s.io/kustomize/v3/pkg/types"
"sigs.k8s.io/kustomize/v3/pkg/transformers/config" "sigs.k8s.io/kustomize/v3/pkg/transformers/config"
"sigs.k8s.io/yaml" "sigs.k8s.io/yaml"
) )
// Change or set the namespace of non-cluster level resources. // Change or set the namespace of non-cluster level resources.
type plugin struct { type plugin struct {
Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"` types.ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
FieldSpecs []config.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"` FieldSpecs []config.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"`
} }

View File

@@ -24,7 +24,7 @@ apiVersion: builtin
kind: NamespaceTransformer kind: NamespaceTransformer
metadata: metadata:
name: notImportantHere name: notImportantHere
namespace: test namespace: test
fieldSpecs: fieldSpecs:
- path: metadata/namespace - path: metadata/namespace
create: true create: true
@@ -166,7 +166,7 @@ apiVersion: builtin
kind: NamespaceTransformer kind: NamespaceTransformer
metadata: metadata:
name: notImportantHere name: notImportantHere
namespace: test namespace: test
fieldSpecs: fieldSpecs:
- path: metadata/namespace - path: metadata/namespace
create: true create: true

View File

@@ -12,8 +12,9 @@ import (
) )
type plugin struct { type plugin struct {
ldr ifc.Loader ldr ifc.Loader
rf *resmap.Factory rf *resmap.Factory
types.ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
types.GeneratorOptions types.GeneratorOptions
types.SecretArgs types.SecretArgs
} }
@@ -26,6 +27,12 @@ func (p *plugin) Config(
p.GeneratorOptions = types.GeneratorOptions{} p.GeneratorOptions = types.GeneratorOptions{}
p.SecretArgs = types.SecretArgs{} p.SecretArgs = types.SecretArgs{}
err = yaml.Unmarshal(config, p) err = yaml.Unmarshal(config, p)
if p.SecretArgs.Name == "" {
p.SecretArgs.Name = p.Name
}
if p.SecretArgs.Namespace == "" {
p.SecretArgs.Namespace = p.Namespace
}
p.ldr = ldr p.ldr = ldr
p.rf = rf p.rf = rf
return return

View File

@@ -34,9 +34,8 @@ consectetur adipiscing elit.
apiVersion: builtin apiVersion: builtin
kind: SecretGenerator kind: SecretGenerator
metadata: metadata:
name: exampleSecGen name: mySecret
name: mySecret namespace: whatever
namespace: whatever
behavior: merge behavior: merge
envs: envs:
- a.env - a.env

View File

@@ -13,10 +13,9 @@ import (
// A secret generator example that gets data // A secret generator example that gets data
// from a database (simulated by a hardcoded map). // from a database (simulated by a hardcoded map).
type plugin struct { type plugin struct {
rf *resmap.Factory rf *resmap.Factory
ldr ifc.Loader ldr ifc.Loader
Name string `json:"name,omitempty" yaml:"name,omitempty"` types.ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
// List of keys to use in database lookups // List of keys to use in database lookups
Keys []string `json:"keys,omitempty" yaml:"keys,omitempty"` Keys []string `json:"keys,omitempty" yaml:"keys,omitempty"`
} }

View File

@@ -23,9 +23,8 @@ func TestSecretsFromDatabasePlugin(t *testing.T) {
apiVersion: someteam.example.com/v1 apiVersion: someteam.example.com/v1
kind: SecretsFromDatabase kind: SecretsFromDatabase
metadata: metadata:
name: mySecretGenerator name: forbiddenValues
name: forbiddenValues namespace: production
namespace: production
keys: keys:
- ROCKET - ROCKET
- VEGETABLE - VEGETABLE

View File

@@ -9,14 +9,15 @@ import (
"sigs.k8s.io/kustomize/v3/pkg/ifc" "sigs.k8s.io/kustomize/v3/pkg/ifc"
"sigs.k8s.io/kustomize/v3/pkg/resmap" "sigs.k8s.io/kustomize/v3/pkg/resmap"
"sigs.k8s.io/kustomize/v3/pkg/types"
"sigs.k8s.io/yaml" "sigs.k8s.io/yaml"
) )
// A simple generator example. Makes one service. // A simple generator example. Makes one service.
type plugin struct { type plugin struct {
rf *resmap.Factory rf *resmap.Factory
Name string `json:"name,omitempty" yaml:"name,omitempty"` types.ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
Port string `json:"port,omitempty" yaml:"port,omitempty"` Port string `json:"port,omitempty" yaml:"port,omitempty"`
} }
//nolint: golint //nolint: golint
@@ -30,6 +31,7 @@ metadata:
labels: labels:
app: dev app: dev
name: {{.Name}} name: {{.Name}}
namespace: {{.Namespace}}
spec: spec:
ports: ports:
- port: {{.Port}} - port: {{.Port}}

View File

@@ -23,8 +23,8 @@ func TestSomeServiceGeneratorPlugin(t *testing.T) {
apiVersion: someteam.example.com/v1 apiVersion: someteam.example.com/v1
kind: SomeServiceGenerator kind: SomeServiceGenerator
metadata: metadata:
name: myGenerator name: my-service
name: my-service namespace: test
port: "12345" port: "12345"
`) `)
th.AssertActualEqualsExpected(m, ` th.AssertActualEqualsExpected(m, `
@@ -34,6 +34,7 @@ metadata:
labels: labels:
app: dev app: dev
name: my-service name: my-service
namespace: test
spec: spec:
ports: ports:
- port: 12345 - port: 12345