Skip to content

Commit 1881dab

Browse files
Merge pull request #5599 from djoshy/cpms-status-test-fix
NO-ISSUE: CPMS test should account for skew API
2 parents 9434cb8 + 4dbab5a commit 1881dab

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed

test/extended-priv/machineconfiguration.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,3 +82,39 @@ func (mc MachineConfiguration) GetAllManagedBootImagesResources() ([]string, err
8282
}
8383
return strings.Fields(result), nil
8484
}
85+
86+
// SetManualSkew configures bootImageSkewEnforcement to Manual mode with the specified mode type and version.
87+
// mode should be "RHCOSVersion" or "OCPVersion", version is the corresponding version string.
88+
func (mc MachineConfiguration) SetManualSkew(mode, version string) error {
89+
logger.Infof("Setting .spec.bootImageSkewEnforcement to Manual mode (%s: %s) on %s", mode, version, mc)
90+
var versionField string
91+
switch mode {
92+
case "RHCOSVersion":
93+
versionField = `"rhcosVersion":"` + version + `"`
94+
case "OCPVersion":
95+
versionField = `"ocpVersion":"` + version + `"`
96+
default:
97+
versionField = `"rhcosVersion":"` + version + `"`
98+
}
99+
return mc.Patch("merge", `{"spec":{"bootImageSkewEnforcement":{"mode":"Manual","manual":{"mode":"`+mode+`",`+versionField+`}}}}`)
100+
}
101+
102+
// SetNoneSkew configures bootImageSkewEnforcement to None mode, effectively disabling skew enforcement
103+
func (mc MachineConfiguration) SetNoneSkew() error {
104+
logger.Infof("Setting .spec.bootImageSkewEnforcement to None mode on %s", mc)
105+
return mc.Patch("merge", `{"spec":{"bootImageSkewEnforcement":{"mode":"None"}}}`)
106+
}
107+
108+
// RemoveSkew removes the bootImageSkewEnforcement config from MachineConfiguration
109+
func (mc MachineConfiguration) RemoveSkew() error {
110+
logger.Infof("Removing .spec.bootImageSkewEnforcement from %s", mc)
111+
skewConfig, err := mc.Get(`{.spec.bootImageSkewEnforcement}`)
112+
if err != nil {
113+
return err
114+
}
115+
if skewConfig == "" {
116+
logger.Infof(".spec.bootImageSkewEnforcement does not exist. No need to remove it")
117+
return nil
118+
}
119+
return mc.Patch("json", `[{ "op": "remove", "path": "/spec/bootImageSkewEnforcement"}]`)
120+
}

test/extended-priv/mco_controlplanemachineset.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,23 @@ func testMachineConfigurationStatusUpdate(mc *MachineConfiguration, patchConfig
410410

411411
originalSpec := mc.GetSpecOrFail()
412412
defer mc.SetSpec(originalSpec)
413+
414+
// Disable skew enforcement for the test to avoid boot image configurations causing conflicts
415+
o.Expect(mc.SetNoneSkew()).To(o.Succeed(), "Error disabling skew enforcement on %s", mc)
416+
417+
// Wait for the controller to observe and process the spec change
418+
o.Eventually(func() (bool, error) {
419+
generation, err := mc.Get(`{.metadata.generation}`)
420+
if err != nil {
421+
return false, err
422+
}
423+
observedGeneration, err := mc.Get(`{.status.observedGeneration}`)
424+
if err != nil {
425+
return false, err
426+
}
427+
return generation == observedGeneration, nil
428+
}, "2m", "10s").Should(o.BeTrue(), "MachineConfiguration observedGeneration did not catch up to generation")
429+
413430
originalStatus, err := mc.GetManagedBootImagesStatus()
414431
o.Expect(err).NotTo(o.HaveOccurred(), "Error getting original status from %s", mc)
415432
logger.Infof("Original status: %s", originalStatus)

0 commit comments

Comments
 (0)