mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-05-17 18:25:26 +00:00
Add metadata field to kustomization file
This commit is contained in:
57
api/krusty/kustomizationmetadata_test.go
Normal file
57
api/krusty/kustomizationmetadata_test.go
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
package krusty_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestKustomizationMetadata(t *testing.T) {
|
||||||
|
th := kusttest_test.MakeHarness(t)
|
||||||
|
th.WriteF("/app/resources.yaml", `
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: testing123
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector: null
|
||||||
|
template:
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: event
|
||||||
|
image: testing123
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
imagePullSecrets: []`)
|
||||||
|
|
||||||
|
th.WriteK("/app", `
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
config.kubernetes.io/local-config: "true"
|
||||||
|
labels:
|
||||||
|
foo: bar
|
||||||
|
name: test_kustomization
|
||||||
|
resources:
|
||||||
|
- resources.yaml
|
||||||
|
`)
|
||||||
|
|
||||||
|
m := th.Run("/app", th.MakeDefaultOptions())
|
||||||
|
th.AssertActualEqualsExpected(m, `
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: testing123
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector: null
|
||||||
|
template:
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- image: testing123
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
name: event
|
||||||
|
imagePullSecrets: []
|
||||||
|
`)
|
||||||
|
}
|
||||||
@@ -22,6 +22,9 @@ const (
|
|||||||
type Kustomization struct {
|
type Kustomization struct {
|
||||||
TypeMeta `json:",inline" yaml:",inline"`
|
TypeMeta `json:",inline" yaml:",inline"`
|
||||||
|
|
||||||
|
// MetaData is a pointer to avoid marshalling empty struct
|
||||||
|
MetaData *ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
||||||
|
|
||||||
//
|
//
|
||||||
// Operators - what kustomize can do.
|
// Operators - what kustomize can do.
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -141,6 +141,13 @@ func TestUnmarshal(t *testing.T) {
|
|||||||
y := []byte(`
|
y := []byte(`
|
||||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
kind: Kustomization
|
kind: Kustomization
|
||||||
|
metadata:
|
||||||
|
name: kust
|
||||||
|
namespace: default
|
||||||
|
labels:
|
||||||
|
foo: bar
|
||||||
|
annotations:
|
||||||
|
foo: bar
|
||||||
resources:
|
resources:
|
||||||
- foo
|
- foo
|
||||||
- bar
|
- bar
|
||||||
@@ -151,8 +158,20 @@ namePrefix: cat`)
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
meta := ObjectMeta{
|
||||||
|
Name: "kust",
|
||||||
|
Namespace: "default",
|
||||||
|
Labels: map[string]string{
|
||||||
|
"foo": "bar",
|
||||||
|
},
|
||||||
|
Annotations: map[string]string{
|
||||||
|
"foo": "bar",
|
||||||
|
},
|
||||||
|
}
|
||||||
if k.Kind != KustomizationKind || k.APIVersion != KustomizationVersion ||
|
if k.Kind != KustomizationKind || k.APIVersion != KustomizationVersion ||
|
||||||
len(k.Resources) != 2 || k.NamePrefix != "cat" || k.NameSuffix != "dog" {
|
len(k.Resources) != 2 || k.NamePrefix != "cat" || k.NameSuffix != "dog" ||
|
||||||
|
k.MetaData.Name != meta.Name || k.MetaData.Namespace != meta.Namespace ||
|
||||||
|
k.MetaData.Labels["foo"] != meta.Labels["foo"] || k.MetaData.Annotations["foo"] != meta.Annotations["foo"] {
|
||||||
t.Fatalf("wrong unmarshal result: %v", k)
|
t.Fatalf("wrong unmarshal result: %v", k)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ package types
|
|||||||
// ObjectMeta partially copies apimachinery/pkg/apis/meta/v1.ObjectMeta
|
// ObjectMeta partially copies apimachinery/pkg/apis/meta/v1.ObjectMeta
|
||||||
// No need for a direct dependence; the fields are stable.
|
// No need for a direct dependence; the fields are stable.
|
||||||
type ObjectMeta struct {
|
type ObjectMeta struct {
|
||||||
Name string `json:"name,omitempty" yaml:"name,omitempty"`
|
Name string `json:"name,omitempty" yaml:"name,omitempty"`
|
||||||
Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
|
Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
|
||||||
|
Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
|
||||||
|
Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user