mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-14 02:20:53 +00:00
Merge pull request #1280 from sethpollack/generator_metadata
use ObjectMeta
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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}}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user