@@ -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+ }
0 commit comments