1// Code generated by pluginator on NamespaceTransformer; DO NOT EDIT. 2// pluginator {unknown 1970-01-01T00:00:00Z } 3 4package builtins 5 6import ( 7 "fmt" 8 9 "sigs.k8s.io/kustomize/api/filters/namespace" 10 "sigs.k8s.io/kustomize/api/resmap" 11 "sigs.k8s.io/kustomize/api/types" 12 "sigs.k8s.io/yaml" 13) 14 15// Change or set the namespace of non-cluster level resources. 16type NamespaceTransformerPlugin struct { 17 types.ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` 18 FieldSpecs []types.FieldSpec `json:"fieldSpecs,omitempty" yaml:"fieldSpecs,omitempty"` 19} 20 21func (p *NamespaceTransformerPlugin) Config( 22 _ *resmap.PluginHelpers, c []byte) (err error) { 23 p.Namespace = "" 24 p.FieldSpecs = nil 25 return yaml.Unmarshal(c, p) 26} 27 28func (p *NamespaceTransformerPlugin) Transform(m resmap.ResMap) error { 29 if len(p.Namespace) == 0 { 30 return nil 31 } 32 for _, r := range m.Resources() { 33 if r.IsNilOrEmpty() { 34 // Don't mutate empty objects? 35 continue 36 } 37 r.StorePreviousId() 38 if err := r.ApplyFilter(namespace.Filter{ 39 Namespace: p.Namespace, 40 FsSlice: p.FieldSpecs, 41 }); err != nil { 42 return err 43 } 44 matches := m.GetMatchingResourcesByCurrentId(r.CurId().Equals) 45 if len(matches) != 1 { 46 return fmt.Errorf( 47 "namespace transformation produces ID conflict: %+v", matches) 48 } 49 } 50 return nil 51} 52 53func NewNamespaceTransformerPlugin() resmap.TransformerPlugin { 54 return &NamespaceTransformerPlugin{} 55} 56