Skip to content
This repository was archived by the owner on Feb 18, 2025. It is now read-only.

Commit 040f03e

Browse files
authored
Restore EmbeddedResource annotation on generic items (#68)
1 parent a43276f commit 040f03e

14 files changed

+40
-97
lines changed

api/v1beta1/appwrapper_types.go

+1
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@ type GenericItem struct {
171171

172172
// The template for the resource
173173
// +kubebuilder:pruning:PreserveUnknownFields
174+
// +kubebuilder:validation:EmbeddedResource
174175
GenericTemplate runtime.RawExtension `json:"generictemplate,omitempty"`
175176

176177
// Array of resource requests

appwrapper-podgroup-sample.yaml

+2-9
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ spec:
1414
apiVersion: scheduling.sigs.k8s.io/v1alpha1
1515
kind: PodGroup
1616
metadata:
17-
namespace: <APPWRAPPER_NAMESPACE>
1817
name: podgroup-1
1918
spec:
2019
minMember: 2
@@ -26,11 +25,8 @@ spec:
2625
apiVersion: v1
2726
kind: Pod
2827
metadata:
29-
namespace: <APPWRAPPER_NAMESPACE>
30-
name: <APPWRAPPER_NAME>-1
28+
name: appwrapper-podgroup-sample-1
3129
labels:
32-
appwrapper.mcad.ibm.com/namespace: <APPWRAPPER_NAMESPACE>
33-
appwrapper.mcad.ibm.com: <APPWRAPPER_NAME>
3430
pod-group.scheduling.sigs.k8s.io: podgroup-1
3531
spec:
3632
schedulerName: scheduler-plugins-scheduler
@@ -52,11 +48,8 @@ spec:
5248
apiVersion: v1
5349
kind: Pod
5450
metadata:
55-
namespace: <APPWRAPPER_NAMESPACE>
56-
name: <APPWRAPPER_NAME>-2
51+
name: appwrapper-podgroup-sample-2
5752
labels:
58-
appwrapper.mcad.ibm.com/namespace: <APPWRAPPER_NAMESPACE>
59-
appwrapper.mcad.ibm.com: <APPWRAPPER_NAME>
6053
pod-group.scheduling.sigs.k8s.io: podgroup-1
6154
spec:
6255
schedulerName: scheduler-plugins-scheduler

appwrapper-sample.yaml

+2-10
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,7 @@ spec:
1818
apiVersion: v1
1919
kind: Pod
2020
metadata:
21-
namespace: <APPWRAPPER_NAMESPACE>
22-
name: <APPWRAPPER_NAME>-1
23-
labels:
24-
appwrapper.mcad.ibm.com/namespace: <APPWRAPPER_NAMESPACE>
25-
appwrapper.mcad.ibm.com: <APPWRAPPER_NAME>
21+
name: appwrapper-sample-1
2622
spec:
2723
restartPolicy: Never
2824
containers:
@@ -42,11 +38,7 @@ spec:
4238
apiVersion: v1
4339
kind: Pod
4440
metadata:
45-
namespace: <APPWRAPPER_NAMESPACE>
46-
name: <APPWRAPPER_NAME>-2
47-
labels:
48-
appwrapper.mcad.ibm.com/namespace: <APPWRAPPER_NAMESPACE>
49-
appwrapper.mcad.ibm.com: <APPWRAPPER_NAME>
41+
name: appwrapper-sample-2
5042
spec:
5143
restartPolicy: Never
5244
containers:

config/crd/bases/workload.codeflare.dev_appwrappers.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ spec:
104104
generictemplate:
105105
description: The template for the resource
106106
type: object
107+
x-kubernetes-embedded-resource: true
107108
x-kubernetes-preserve-unknown-fields: true
108109
minavailable:
109110
format: int32

internal/controller/resource_manager.go

+20-19
Original file line numberDiff line numberDiff line change
@@ -41,19 +41,25 @@ type PodCounts struct {
4141
Succeeded int
4242
}
4343

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
4845
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 {
5062
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-
}
5763
case map[string]interface{}:
5864
fixMap(appWrapper, v)
5965
case []interface{}:
@@ -62,16 +68,11 @@ func fixMap(appWrapper *mcadv1beta1.AppWrapper, m map[string]interface{}) {
6268
}
6369
}
6470

65-
// Replace placeholders in array with AppWrapper metadata
71+
// Add labels to metadata for subresources
6672
func fixArray(appWrapper *mcadv1beta1.AppWrapper, a []interface{}) {
67-
for k, v := range a {
73+
// visit submaps and arrays
74+
for _, v := range a {
6875
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-
}
7576
case map[string]interface{}:
7677
fixMap(appWrapper, v)
7778
case []interface{}:

test/e2e-kuttl-acct/steps/01-install.yaml

+3-8
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,18 @@ spec:
1010
apiVersion: apps/v1
1111
kind: Deployment
1212
metadata:
13-
name: <APPWRAPPER_NAME>-aw-01
13+
name: aw-01
1414
namespace: start-up-03
15-
labels:
16-
appwrapper.mcad.ibm.com/namespace: start-up-03
17-
appwrapper.mcad.ibm.com: <APPWRAPPER_NAME>
1815
spec:
1916
replicas: 2
2017
selector:
2118
matchLabels:
22-
app: <APPWRAPPER_NAME>-aw-01
19+
app: aw-01
2320
template:
2421
metadata:
2522
namespace: start-up-03
2623
labels:
27-
appwrapper.mcad.ibm.com/namespace: start-up-03
28-
appwrapper.mcad.ibm.com: <APPWRAPPER_NAME>
29-
app: <APPWRAPPER_NAME>-aw-01
24+
app: aw-01
3025
spec:
3126
containers:
3227
- name: nginx

test/e2e-kuttl-acct/steps/02-install.yaml

+3-8
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,18 @@ spec:
1010
apiVersion: apps/v1
1111
kind: Deployment
1212
metadata:
13-
name: <APPWRAPPER_NAME>-aw-02
13+
name: aw-02
1414
namespace: start-up-03
15-
labels:
16-
appwrapper.mcad.ibm.com/namespace: start-up-03
17-
appwrapper.mcad.ibm.com: <APPWRAPPER_NAME>
1815
spec:
1916
replicas: 2
2017
selector:
2118
matchLabels:
22-
app: <APPWRAPPER_NAME>-aw-09
19+
app: aw-02
2320
template:
2421
metadata:
2522
namespace: start-up-03
2623
labels:
27-
appwrapper.mcad.ibm.com/namespace: start-up-03
28-
appwrapper.mcad.ibm.com: <APPWRAPPER_NAME>
29-
app: <APPWRAPPER_NAME>-aw-09
24+
app: aw-02
3025
spec:
3126
containers:
3227
- name: nginx

test/e2e-kuttl/steps/02-install.yaml

+1-4
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,7 @@ spec:
1111
kind: Pod
1212
metadata:
1313
namespace: start-up-02
14-
name: <APPWRAPPER_NAME>-pod-01
15-
labels:
16-
appwrapper.mcad.ibm.com/namespace: start-up-02
17-
appwrapper.mcad.ibm.com: <APPWRAPPER_NAME>
14+
name: aw-02-pod-01
1815
spec:
1916
restartPolicy: Never
2017
containers:

test/e2e-kuttl/steps/03-install.yaml

+1-4
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,7 @@ spec:
1313
kind: Pod
1414
metadata:
1515
namespace: start-up-02
16-
name: <APPWRAPPER_NAME>-pod-01
17-
labels:
18-
appwrapper.mcad.ibm.com/namespace: start-up-02
19-
appwrapper.mcad.ibm.com: <APPWRAPPER_NAME>
16+
name: aw-03-pod-01
2017
spec:
2118
restartPolicy: Never
2219
containers:

test/e2e-kuttl/steps/04-install.yaml

+2-8
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,7 @@ spec:
1313
kind: Pod
1414
metadata:
1515
namespace: start-up-02
16-
name: <APPWRAPPER_NAME>-pod-01
17-
labels:
18-
appwrapper.mcad.ibm.com/namespace: start-up-02
19-
appwrapper.mcad.ibm.com: <APPWRAPPER_NAME>
16+
name: aw-04-pod-01
2017
spec:
2118
restartPolicy: Never
2219
containers:
@@ -43,10 +40,7 @@ spec:
4340
kind: Pod
4441
metadata:
4542
namespace: start-up-02
46-
name: <APPWRAPPER_NAME>-pod-041
47-
labels:
48-
appwrapper.mcad.ibm.com/namespace: start-up-02
49-
appwrapper.mcad.ibm.com: <APPWRAPPER_NAME>
43+
name: aw-041-pod-01
5044
spec:
5145
restartPolicy: Never
5246
containers:

test/e2e-kuttl/steps/06-install.yaml

+1-4
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,7 @@ spec:
1313
kind: Pod
1414
metadata:
1515
namespace: start-up-02
16-
name: <APPWRAPPER_NAME>-pod-01
17-
labels:
18-
appwrapper.mcad.ibm.com/namespace: start-up-02
19-
appwrapper.mcad.ibm.com: <APPWRAPPER_NAME>
16+
name: aw-06-pod-01
2017
spec:
2118
restartPolicy: Never
2219
containers:

test/e2e-kuttl/steps/07-install.yaml

+1-8
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,11 @@ spec:
1313
kind: Job
1414
metadata:
1515
namespace: start-up-02
16-
name: <APPWRAPPER_NAME>-pod-01
17-
labels:
18-
appwrapper.mcad.ibm.com/namespace: start-up-02
19-
appwrapper.mcad.ibm.com: <APPWRAPPER_NAME>
16+
name: aw-07-job-01
2017
spec:
2118
template:
2219
metadata:
2320
namespace: start-up-02
24-
name: <APPWRAPPER_NAME>-pod-01
25-
labels:
26-
appwrapper.mcad.ibm.com/namespace: start-up-02
27-
appwrapper.mcad.ibm.com: <APPWRAPPER_NAME>
2821
spec:
2922
containers:
3023
- name: busybox

test/e2e-kuttl/steps/08-install.yaml

+1-8
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,11 @@ spec:
1313
kind: Job
1414
metadata:
1515
namespace: start-up-02
16-
name: <APPWRAPPER_NAME>-aw-08
17-
labels:
18-
appwrapper.mcad.ibm.com/namespace: start-up-02
19-
appwrapper.mcad.ibm.com: <APPWRAPPER_NAME>
16+
name: aw-08-job-01
2017
spec:
2118
template:
2219
metadata:
2320
namespace: start-up-02
24-
name: <APPWRAPPER_NAME>-aw-08
25-
labels:
26-
appwrapper.mcad.ibm.com/namespace: start-up-02
27-
appwrapper.mcad.ibm.com: <APPWRAPPER_NAME>
2821
spec:
2922
containers:
3023
- name: busybox

test/e2e-kuttl/steps/09-install.yaml

+1-7
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,11 @@ spec:
1111
kind: Job
1212
metadata:
1313
namespace: start-up-02
14-
name: <APPWRAPPER_NAME>-batch-01
15-
labels:
16-
appwrapper.mcad.ibm.com/namespace: start-up-02
17-
appwrapper.mcad.ibm.com: <APPWRAPPER_NAME>
14+
name: aw-09-job-01
1815
spec:
1916
template:
2017
metadata:
2118
namespace: start-up-02
22-
labels:
23-
appwrapper.mcad.ibm.com/namespace: start-up-02
24-
appwrapper.mcad.ibm.com: <APPWRAPPER_NAME>
2519
spec:
2620
containers:
2721
- name: busybox

0 commit comments

Comments
 (0)