Skip to content

Commit 75ac539

Browse files
zyjjayopenshift-merge-robot
authored andcommitted
Bug: ACM-6632, parent policy cannot override remediationAction if unset in policy template
https://issues.redhat.com/browse/ACM-6632 Signed-off-by: Jason Zhang <[email protected]>
1 parent c59e473 commit 75ac539

File tree

5 files changed

+54
-9
lines changed

5 files changed

+54
-9
lines changed

controllers/templatesync/template_sync.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1236,10 +1236,10 @@ func overrideRemediationAction(instance *policiesv1.Policy, tObjectUnstructured
12361236
return
12371237
}
12381238
}
1239+
}
12391240

1240-
if instance.Spec.RemediationAction != "" {
1241-
specObject["remediationAction"] = string(instance.Spec.RemediationAction)
1242-
}
1241+
if instance.Spec.RemediationAction != "" {
1242+
specObject["remediationAction"] = string(instance.Spec.RemediationAction)
12431243
}
12441244
}
12451245

test/e2e/case20_informonly_test.go

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,20 @@ const (
2020
case20PolicyNoRemediationName string = "case20-policy-informonly-no-remediationaction"
2121
case20PolicyNoRemediationYaml string = "../resources/case20_policy_informonly/" +
2222
"case20-parent-policy-noremediation.yaml"
23+
case20PlcTemplateNoRemediationName string = "case20-policy-template-no-remediationaction"
24+
case20PlcTemplateNoRemediationYaml string = "../resources/case20_policy_informonly/" +
25+
"case20-policy-template-noremediation.yaml"
26+
case20ConfigPlcTemplateNoRemediationName string = "create-configmap-policy-template"
2327
)
2428

25-
func checkInformAction(cfplc string) {
29+
func checkInformAction(cfplc string, compliance string) {
2630
By("Checking template policy remediationAction")
2731
Eventually(func() interface{} {
2832
plc := utils.GetWithTimeout(clientManagedDynamic, gvrConfigurationPolicy,
2933
cfplc, clusterNamespace, true, defaultTimeoutSeconds)
3034

3135
return plc.Object["spec"].(map[string]interface{})["remediationAction"]
32-
}, defaultTimeoutSeconds, 1).Should(Equal("inform"))
36+
}, defaultTimeoutSeconds, 1).Should(Equal(compliance))
3337
}
3438

3539
var _ = Describe("Test 'InformOnly' ConfigurationPolicies", Ordered, func() {
@@ -47,22 +51,37 @@ var _ = Describe("Test 'InformOnly' ConfigurationPolicies", Ordered, func() {
4751
if !errors.As(err, &e) {
4852
Expect(err).ShouldNot(HaveOccurred())
4953
}
54+
55+
_, err = kubectlHub("delete", "-f", case20PlcTemplateNoRemediationYaml, "-n", clusterNamespaceOnHub,
56+
"--ignore-not-found")
57+
if !errors.As(err, &e) {
58+
Expect(err).ShouldNot(HaveOccurred())
59+
}
5060
})
5161

5262
Describe("Override remediationAction in spec", func() {
5363
Context("When parent policy have remediationAction=enforce", func() {
5464
It("Should have remediationAction=inform", func() {
5565
By("Applying parent policy " + case20PolicyName + " in hub ns: " + clusterNamespaceOnHub)
5666
hubApplyPolicy(case20PolicyName, case20PolicyYaml)
57-
checkInformAction(case20ConfigPlcName)
67+
checkInformAction(case20ConfigPlcName, "inform")
5868
})
5969
})
6070

6171
Context("When parent policy have no remediationAction field set", func() {
6272
It("Should have remediationAction=inform", func() {
6373
By("Applying parent policy " + case20PolicyNoRemediationName + " in hub ns: " + clusterNamespaceOnHub)
6474
hubApplyPolicy(case20PolicyNoRemediationName, case20PolicyNoRemediationYaml)
65-
checkInformAction(case20ConfigPlcNoRemediationName)
75+
checkInformAction(case20ConfigPlcNoRemediationName, "inform")
76+
})
77+
})
78+
79+
Context("When policy template have no remediationAction field set", func() {
80+
It("Should have inherited parent policy's remediationAction field", func() {
81+
By("Applying parent policy " + case20PlcTemplateNoRemediationName + " in hub ns: " +
82+
clusterNamespaceOnHub)
83+
hubApplyPolicy(case20PlcTemplateNoRemediationName, case20PlcTemplateNoRemediationYaml)
84+
checkInformAction(case20ConfigPlcTemplateNoRemediationName, "inform")
6685
})
6786
})
6887
})

test/resources/case20_policy_informonly/case20-parent-policy-noremediation.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ metadata:
55
labels:
66
policy.open-cluster-management.io/cluster-name: managed
77
policy.open-cluster-management.io/cluster-namespace: managed
8-
policy.open-cluster-management.io/root-policy: policy-informonly
8+
policy.open-cluster-management.io/root-policy: case20-policy-informonly-no-remediationaction
99
spec:
1010
disabled: false
1111
policy-templates:

test/resources/case20_policy_informonly/case20-parent-policy.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ metadata:
55
labels:
66
policy.open-cluster-management.io/cluster-name: managed
77
policy.open-cluster-management.io/cluster-namespace: managed
8-
policy.open-cluster-management.io/root-policy: policy-informonly
8+
policy.open-cluster-management.io/root-policy: case20-policy-informonly
99
spec:
1010
remediationAction: enforce
1111
disabled: false
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
apiVersion: policy.open-cluster-management.io/v1
2+
kind: Policy
3+
metadata:
4+
name: case20-policy-template-no-remediationaction
5+
labels:
6+
policy.open-cluster-management.io/cluster-name: managed
7+
policy.open-cluster-management.io/cluster-namespace: managed
8+
policy.open-cluster-management.io/root-policy: case20-policy-template-no-remediationaction
9+
spec:
10+
remediationAction: inform
11+
disabled: false
12+
policy-templates:
13+
- objectDefinition:
14+
apiVersion: policy.open-cluster-management.io/v1
15+
kind: ConfigurationPolicy
16+
metadata:
17+
name: create-configmap-policy-template
18+
spec:
19+
object-templates:
20+
- complianceType: musthave
21+
objectDefinition:
22+
apiVersion: v1
23+
kind: ConfigMap
24+
metadata:
25+
name: test-config
26+
namespace: managed

0 commit comments

Comments
 (0)