@@ -41,19 +41,25 @@ type PodCounts struct {
41
41
Succeeded int
42
42
}
43
43
44
- const appWrapperNamespacePlaceholder = "<APPWRAPPER_NAMESPACE>"
45
- const appWrapperNamePlaceholder = "<APPWRAPPER_NAME>"
46
-
47
- // Replace placeholders in map with AppWrapper metadata
44
+ // Add labels to metadata for subresources
48
45
func fixMap (appWrapper * mcadv1beta1.AppWrapper , m map [string ]interface {}) {
49
- for k , v := range m {
46
+ // assume an object with fields apiVersion, kind, and metadata is a subresource
47
+ _ , hasApiVersion := m ["apiVersion" ]
48
+ _ , hasKind := m ["kind" ]
49
+ metadata , hasMetadata := m ["metadata" ].(map [string ]interface {})
50
+ if hasApiVersion && hasKind && hasMetadata {
51
+ // inject labels in metadata
52
+ labels , hasLabels := metadata ["labels" ].(map [string ]interface {})
53
+ if ! hasLabels {
54
+ labels = map [string ]interface {}{}
55
+ metadata ["labels" ] = labels
56
+ }
57
+ labels [namespaceLabel ] = appWrapper .Namespace
58
+ labels [nameLabel ] = appWrapper .Name
59
+ }
60
+ // visit submaps and arrays
61
+ for _ , v := range m {
50
62
switch v := v .(type ) {
51
- case string :
52
- if strings .HasPrefix (v , appWrapperNamespacePlaceholder ) {
53
- m [k ] = strings .Replace (v , appWrapperNamespacePlaceholder , appWrapper .Namespace , 1 )
54
- } else if strings .HasPrefix (v , appWrapperNamePlaceholder ) {
55
- m [k ] = strings .Replace (v , appWrapperNamePlaceholder , appWrapper .Name , 1 )
56
- }
57
63
case map [string ]interface {}:
58
64
fixMap (appWrapper , v )
59
65
case []interface {}:
@@ -62,16 +68,11 @@ func fixMap(appWrapper *mcadv1beta1.AppWrapper, m map[string]interface{}) {
62
68
}
63
69
}
64
70
65
- // Replace placeholders in array with AppWrapper metadata
71
+ // Add labels to metadata for subresources
66
72
func fixArray (appWrapper * mcadv1beta1.AppWrapper , a []interface {}) {
67
- for k , v := range a {
73
+ // visit submaps and arrays
74
+ for _ , v := range a {
68
75
switch v := v .(type ) {
69
- case string :
70
- if strings .HasPrefix (v , appWrapperNamespacePlaceholder ) {
71
- a [k ] = strings .Replace (v , appWrapperNamespacePlaceholder , appWrapper .Namespace , 1 )
72
- } else if strings .HasPrefix (v , appWrapperNamePlaceholder ) {
73
- a [k ] = strings .Replace (v , appWrapperNamePlaceholder , appWrapper .Name , 1 )
74
- }
75
76
case map [string ]interface {}:
76
77
fixMap (appWrapper , v )
77
78
case []interface {}:
0 commit comments