Skip to content

Commit ab49eaf

Browse files
dhaiducekopenshift-merge-robot
authored andcommitted
Fix ignorePending when manifests are consolidated
A call to `setTemplateOptions()` was missed. ref: https://issues.redhat.com/browse/ACM-6163 Signed-off-by: Dale Haiducek <[email protected]>
1 parent 05ade92 commit ab49eaf

File tree

4 files changed

+294
-0
lines changed

4 files changed

+294
-0
lines changed

internal/ordering_test.go

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,30 @@ policies:
296296
wantFile: "testdata/ordering/ignore-pending-propagation.yaml",
297297
wantErr: "",
298298
},
299+
"policyDefaults.ignorePending is propagated with consolidated manifests": {
300+
tmpDir: tmpDir,
301+
generator: `
302+
apiVersion: policy.open-cluster-management.io/v1
303+
kind: PolicyGenerator
304+
metadata:
305+
name: test
306+
policyDefaults:
307+
consolidateManifests: true
308+
ignorePending: true
309+
namespace: my-policies
310+
policies:
311+
- name: one
312+
manifests:
313+
- path: {{printf "%v/%v" .Dir "configmap.yaml"}}
314+
- path: {{printf "%v/%v" .Dir "configmap.yaml"}}
315+
- name: two
316+
ignorePending: false
317+
manifests:
318+
- path: {{printf "%v/%v" .Dir "configmap.yaml"}}
319+
`,
320+
wantFile: "testdata/ordering/ignore-pending-policy-consolidated.yaml",
321+
wantErr: "",
322+
},
299323
"policyDefaults.ignorePending can be overridden at policy level": {
300324
tmpDir: tmpDir,
301325
generator: `
@@ -545,6 +569,30 @@ policies:
545569
wantFile: "testdata/ordering/default-extradeps-propagated.yaml",
546570
wantErr: "",
547571
},
572+
"policyDefaults.extraDependencies is propagated with consolidated manifests": {
573+
tmpDir: tmpDir,
574+
generator: `
575+
apiVersion: policy.open-cluster-management.io/v1
576+
kind: PolicyGenerator
577+
metadata:
578+
name: test
579+
policyDefaults:
580+
consolidateManifests: true
581+
namespace: my-policies
582+
extraDependencies:
583+
- name: extrafoo
584+
policies:
585+
- name: one
586+
manifests:
587+
- path: {{printf "%v/%v" .Dir "configmap.yaml"}}
588+
- path: {{printf "%v/%v" .Dir "configmap.yaml"}}
589+
- name: two
590+
manifests:
591+
- path: {{printf "%v/%v" .Dir "configmap.yaml"}}
592+
`,
593+
wantFile: "testdata/ordering/default-extradeps-consolidated.yaml",
594+
wantErr: "",
595+
},
548596
"policy extraDependencies are propagated": {
549597
tmpDir: tmpDir,
550598
generator: `
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
---
2+
apiVersion: policy.open-cluster-management.io/v1
3+
kind: Policy
4+
metadata:
5+
annotations:
6+
policy.open-cluster-management.io/categories: CM Configuration Management
7+
policy.open-cluster-management.io/controls: CM-2 Baseline Configuration
8+
policy.open-cluster-management.io/standards: NIST SP 800-53
9+
name: one
10+
namespace: my-policies
11+
spec:
12+
disabled: false
13+
policy-templates:
14+
- extraDependencies:
15+
- apiVersion: policy.open-cluster-management.io/v1
16+
compliance: Compliant
17+
kind: Policy
18+
name: extrafoo
19+
namespace: my-policies
20+
objectDefinition:
21+
apiVersion: policy.open-cluster-management.io/v1
22+
kind: ConfigurationPolicy
23+
metadata:
24+
name: one
25+
spec:
26+
object-templates:
27+
- complianceType: musthave
28+
objectDefinition:
29+
apiVersion: v1
30+
data:
31+
game.properties: enemies=potato
32+
kind: ConfigMap
33+
metadata:
34+
name: my-configmap
35+
- complianceType: musthave
36+
objectDefinition:
37+
apiVersion: v1
38+
data:
39+
game.properties: enemies=potato
40+
kind: ConfigMap
41+
metadata:
42+
name: my-configmap
43+
remediationAction: inform
44+
severity: low
45+
remediationAction: inform
46+
---
47+
apiVersion: policy.open-cluster-management.io/v1
48+
kind: Policy
49+
metadata:
50+
annotations:
51+
policy.open-cluster-management.io/categories: CM Configuration Management
52+
policy.open-cluster-management.io/controls: CM-2 Baseline Configuration
53+
policy.open-cluster-management.io/standards: NIST SP 800-53
54+
name: two
55+
namespace: my-policies
56+
spec:
57+
disabled: false
58+
policy-templates:
59+
- extraDependencies:
60+
- apiVersion: policy.open-cluster-management.io/v1
61+
compliance: Compliant
62+
kind: Policy
63+
name: extrafoo
64+
namespace: my-policies
65+
objectDefinition:
66+
apiVersion: policy.open-cluster-management.io/v1
67+
kind: ConfigurationPolicy
68+
metadata:
69+
name: two
70+
spec:
71+
object-templates:
72+
- complianceType: musthave
73+
objectDefinition:
74+
apiVersion: v1
75+
data:
76+
game.properties: enemies=potato
77+
kind: ConfigMap
78+
metadata:
79+
name: my-configmap
80+
remediationAction: inform
81+
severity: low
82+
remediationAction: inform
83+
---
84+
apiVersion: apps.open-cluster-management.io/v1
85+
kind: PlacementRule
86+
metadata:
87+
name: placement-one
88+
namespace: my-policies
89+
spec:
90+
clusterSelector:
91+
matchExpressions: []
92+
---
93+
apiVersion: apps.open-cluster-management.io/v1
94+
kind: PlacementRule
95+
metadata:
96+
name: placement-two
97+
namespace: my-policies
98+
spec:
99+
clusterSelector:
100+
matchExpressions: []
101+
---
102+
apiVersion: policy.open-cluster-management.io/v1
103+
kind: PlacementBinding
104+
metadata:
105+
name: binding-one
106+
namespace: my-policies
107+
placementRef:
108+
apiGroup: apps.open-cluster-management.io
109+
kind: PlacementRule
110+
name: placement-one
111+
subjects:
112+
- apiGroup: policy.open-cluster-management.io
113+
kind: Policy
114+
name: one
115+
---
116+
apiVersion: policy.open-cluster-management.io/v1
117+
kind: PlacementBinding
118+
metadata:
119+
name: binding-two
120+
namespace: my-policies
121+
placementRef:
122+
apiGroup: apps.open-cluster-management.io
123+
kind: PlacementRule
124+
name: placement-two
125+
subjects:
126+
- apiGroup: policy.open-cluster-management.io
127+
kind: Policy
128+
name: two
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
---
2+
apiVersion: policy.open-cluster-management.io/v1
3+
kind: Policy
4+
metadata:
5+
annotations:
6+
policy.open-cluster-management.io/categories: CM Configuration Management
7+
policy.open-cluster-management.io/controls: CM-2 Baseline Configuration
8+
policy.open-cluster-management.io/standards: NIST SP 800-53
9+
name: one
10+
namespace: my-policies
11+
spec:
12+
disabled: false
13+
policy-templates:
14+
- ignorePending: true
15+
objectDefinition:
16+
apiVersion: policy.open-cluster-management.io/v1
17+
kind: ConfigurationPolicy
18+
metadata:
19+
name: one
20+
spec:
21+
object-templates:
22+
- complianceType: musthave
23+
objectDefinition:
24+
apiVersion: v1
25+
data:
26+
game.properties: enemies=potato
27+
kind: ConfigMap
28+
metadata:
29+
name: my-configmap
30+
- complianceType: musthave
31+
objectDefinition:
32+
apiVersion: v1
33+
data:
34+
game.properties: enemies=potato
35+
kind: ConfigMap
36+
metadata:
37+
name: my-configmap
38+
remediationAction: inform
39+
severity: low
40+
remediationAction: inform
41+
---
42+
apiVersion: policy.open-cluster-management.io/v1
43+
kind: Policy
44+
metadata:
45+
annotations:
46+
policy.open-cluster-management.io/categories: CM Configuration Management
47+
policy.open-cluster-management.io/controls: CM-2 Baseline Configuration
48+
policy.open-cluster-management.io/standards: NIST SP 800-53
49+
name: two
50+
namespace: my-policies
51+
spec:
52+
disabled: false
53+
policy-templates:
54+
- objectDefinition:
55+
apiVersion: policy.open-cluster-management.io/v1
56+
kind: ConfigurationPolicy
57+
metadata:
58+
name: two
59+
spec:
60+
object-templates:
61+
- complianceType: musthave
62+
objectDefinition:
63+
apiVersion: v1
64+
data:
65+
game.properties: enemies=potato
66+
kind: ConfigMap
67+
metadata:
68+
name: my-configmap
69+
remediationAction: inform
70+
severity: low
71+
remediationAction: inform
72+
---
73+
apiVersion: apps.open-cluster-management.io/v1
74+
kind: PlacementRule
75+
metadata:
76+
name: placement-one
77+
namespace: my-policies
78+
spec:
79+
clusterSelector:
80+
matchExpressions: []
81+
---
82+
apiVersion: apps.open-cluster-management.io/v1
83+
kind: PlacementRule
84+
metadata:
85+
name: placement-two
86+
namespace: my-policies
87+
spec:
88+
clusterSelector:
89+
matchExpressions: []
90+
---
91+
apiVersion: policy.open-cluster-management.io/v1
92+
kind: PlacementBinding
93+
metadata:
94+
name: binding-one
95+
namespace: my-policies
96+
placementRef:
97+
apiGroup: apps.open-cluster-management.io
98+
kind: PlacementRule
99+
name: placement-one
100+
subjects:
101+
- apiGroup: policy.open-cluster-management.io
102+
kind: Policy
103+
name: one
104+
---
105+
apiVersion: policy.open-cluster-management.io/v1
106+
kind: PlacementBinding
107+
metadata:
108+
name: binding-two
109+
namespace: my-policies
110+
placementRef:
111+
apiGroup: apps.open-cluster-management.io
112+
kind: PlacementRule
113+
name: placement-two
114+
subjects:
115+
- apiGroup: policy.open-cluster-management.io
116+
kind: Policy
117+
name: two

internal/utils.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,7 @@ func getPolicyTemplates(policyConf *types.PolicyConfig) ([]map[string]interface{
241241
objectTemplates,
242242
&policyConf.ConfigurationPolicyOptions,
243243
)
244+
setTemplateOptions(policyTemplate, policyConf.IgnorePending, policyConf.ExtraDependencies)
244245
policyTemplates = append(policyTemplates, policyTemplate)
245246
}
246247

0 commit comments

Comments
 (0)