mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-14 02:20:53 +00:00
add SetLabel function in kyaml library
This commit is contained in:
@@ -15,6 +15,7 @@ var Filters = map[string]func() Filter{
|
|||||||
"AnnotationClearer": func() Filter { return &AnnotationClearer{} },
|
"AnnotationClearer": func() Filter { return &AnnotationClearer{} },
|
||||||
"AnnotationGetter": func() Filter { return &AnnotationGetter{} },
|
"AnnotationGetter": func() Filter { return &AnnotationGetter{} },
|
||||||
"AnnotationSetter": func() Filter { return &AnnotationSetter{} },
|
"AnnotationSetter": func() Filter { return &AnnotationSetter{} },
|
||||||
|
"LabelSetter": func() Filter { return &LabelSetter{} },
|
||||||
"ElementAppender": func() Filter { return &ElementAppender{} },
|
"ElementAppender": func() Filter { return &ElementAppender{} },
|
||||||
"ElementMatcher": func() Filter { return &ElementMatcher{} },
|
"ElementMatcher": func() Filter { return &ElementMatcher{} },
|
||||||
"FieldClearer": func() Filter { return &FieldClearer{} },
|
"FieldClearer": func() Filter { return &FieldClearer{} },
|
||||||
|
|||||||
@@ -68,3 +68,25 @@ func (g AnnotationGetter) Filter(rn *RNode) (*RNode, error) {
|
|||||||
func GetAnnotation(key string) AnnotationGetter {
|
func GetAnnotation(key string) AnnotationGetter {
|
||||||
return AnnotationGetter{Key: key}
|
return AnnotationGetter{Key: key}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// LabelSetter sets a label at metadata.labels.
|
||||||
|
// Creates metadata.labels if does not exist.
|
||||||
|
type LabelSetter struct {
|
||||||
|
Kind string `yaml:"kind,omitempty"`
|
||||||
|
Key string `yaml:"key,omitempty"`
|
||||||
|
Value string `yaml:"value,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s LabelSetter) Filter(rn *RNode) (*RNode, error) {
|
||||||
|
// some tools get confused about the type if labels are not quoted
|
||||||
|
v := NewScalarRNode(s.Value)
|
||||||
|
v.YNode().Tag = "!!str"
|
||||||
|
v.YNode().Style = yaml.SingleQuotedStyle
|
||||||
|
return rn.Pipe(
|
||||||
|
PathGetter{Path: []string{"metadata", "labels"}, Create: yaml.MappingNode},
|
||||||
|
FieldSetter{Name: s.Key, Value: v})
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetLabel(key, value string) LabelSetter {
|
||||||
|
return LabelSetter{Key: key, Value: value}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user