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

Commit 8b6a138

Browse files
authored
Reintroduce placeholder label (#74)
1 parent abcd369 commit 8b6a138

File tree

2 files changed

+24
-33
lines changed

2 files changed

+24
-33
lines changed

PORTING.md

+4-17
Original file line numberDiff line numberDiff line change
@@ -18,25 +18,17 @@ to:
1818
apiVersion: workload.codeflare.dev/v1beta1
1919
kind: AppWrapper
2020
```
21-
Second add a namespace label to wrapped resources and pod specs. Concretely,
22-
replace every instance of:
21+
Second add a label to pod specs:
2322
```yaml
24-
labels:
25-
appwrapper.mcad.ibm.com: my-appwrapper-name
26-
```
27-
with:
28-
```yaml
29-
labels:
30-
appwrapper.mcad.ibm.com/namespace: my-appwrapper-namespace
31-
appwrapper.mcad.ibm.com: my-appwrapper-name
23+
appwrapper.mcad.ibm.com: placeholder
3224
```
25+
The label value is not important.
3326
3427
Here is a complete example:
3528
```yaml
3629
apiVersion: workload.codeflare.dev/v1beta1 # new apiVersion
3730
kind: AppWrapper
3831
metadata:
39-
namespace: default
4032
name: appwrapper-sample
4133
spec:
4234
priority: 5
@@ -57,18 +49,13 @@ spec:
5749
metadata:
5850
namespace: default
5951
name: sample-job
60-
labels:
61-
appwrapper.mcad.ibm.com/namespace: default # new namespace label
62-
appwrapper.mcad.ibm.com: appwrapper-sample
6352
spec:
6453
parallelism: 1
6554
completions: 1
6655
template:
6756
metadata:
68-
namespace: default
6957
labels:
70-
appwrapper.mcad.ibm.com/namespace: default # new namespace label
71-
appwrapper.mcad.ibm.com: appwrapper-sample
58+
appwrapper.mcad.ibm.com: placeholder # pod spec label
7259
spec:
7360
restartPolicy: Never
7461
containers:

internal/controller/resource_manager.go

+20-16
Original file line numberDiff line numberDiff line change
@@ -42,26 +42,30 @@ type PodCounts struct {
4242
Succeeded int
4343
}
4444

45-
// Add labels to metadata for subresources
45+
// Fix labels in maps
4646
func fixMap(appWrapper *mcadv1beta1.AppWrapper, m map[string]interface{}) {
47-
// inject metadata in templates
48-
if template, ok := m["template"].(map[string]interface{}); ok {
49-
if _, ok := template["spec"]; ok {
50-
if _, ok := template["metadata"]; !ok {
51-
template["metadata"] = map[string]interface{}{}
47+
// inject placeholder in pod specs
48+
if spec, ok := m["spec"].(map[string]interface{}); ok {
49+
if _, ok := spec["containers"]; ok {
50+
metadata, ok := m["metadata"].(map[string]interface{})
51+
if !ok {
52+
metadata = map[string]interface{}{}
53+
m["metadata"] = metadata
5254
}
55+
labels, ok := metadata["labels"].(map[string]interface{})
56+
if !ok {
57+
labels = map[string]interface{}{}
58+
metadata["labels"] = labels
59+
}
60+
labels[nameLabel] = "placeholder"
5361
}
5462
}
55-
// inject labels in metadata
56-
if metadata, ok := m["metadata"].(map[string]interface{}); ok {
57-
if _, ok := metadata["labels"]; !ok {
58-
metadata["labels"] = map[string]interface{}{}
59-
}
60-
}
61-
// inject appwrapper labels
63+
// replace placeholder with actual labels
6264
if labels, ok := m["labels"].(map[string]interface{}); ok {
63-
labels[namespaceLabel] = appWrapper.Namespace
64-
labels[nameLabel] = appWrapper.Name
65+
if _, ok := labels[nameLabel]; ok {
66+
labels[namespaceLabel] = appWrapper.Namespace
67+
labels[nameLabel] = appWrapper.Name
68+
}
6569
}
6670
// visit submaps and arrays
6771
for _, v := range m {
@@ -74,7 +78,7 @@ func fixMap(appWrapper *mcadv1beta1.AppWrapper, m map[string]interface{}) {
7478
}
7579
}
7680

77-
// Add labels to metadata for subresources
81+
// Fix labels in arrays
7882
func fixArray(appWrapper *mcadv1beta1.AppWrapper, a []interface{}) {
7983
// visit submaps and arrays
8084
for _, v := range a {

0 commit comments

Comments
 (0)