Bug 2235308

Summary: After upgrade to 4.10.2->4.10.9 hco.spec.workloadUpdateStrategy value is getting overwritten
Product: Container Native Virtualization (CNV) Reporter: Juan Orti <jortialc>
Component: InstallationAssignee: Simone Tiraboschi <stirabos>
Status: CLOSED NEXTRELEASE QA Contact: Natalie Gavrielov <ngavrilo>
Severity: high Docs Contact:
Priority: high    
Version: 4.10.0CC: dbasunag, jortialc, kmajcher, stirabos, ycui
Target Milestone: ---   
Target Release: 4.11.2   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: 2151693 Environment:
Last Closed: 2023-08-28 15:45:01 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 2151693    
Bug Blocks: 2153849    

Comment 1 Juan Orti 2023-08-28 11:34:53 UTC
Cloning this bug to the 4.10 version because customer is hitting this problem while upgrading the Openshift Virtualization operator from 4.10.2 to 4.10.9.

Before the upgrade they configure:

```
spec:
  workloadUpdateStrategy:
    workloadUpdateMethods:
    - LiveMigrate
    - Evict
```

When 4.10.9 is installed, workloadUpdateMethods has been overwritten.

Comment 2 Simone Tiraboschi 2023-08-28 15:45:01 UTC
Technically the upgrade from 4.10.2 to 4.10.9 should not be strictly considered part of the EUS->EUS upgrade process but just as a preliminary step.
If we want to avoid upgrading migrating/restarting all the VMs to upgrade the virt-launcher image (with qemu and libvirt binaries) knowing that it's going to happen soon once at 4.12, we can still use a workaround there:

An invalid configuration like:
```
spec:
  workloadUpdateStrategy:
    workloadUpdateMethods:
    - None
```
should not cause any side effect with the wrong value being simply ignored, see:
https://github.com/kubevirt/kubevirt/blob/release-0.49/pkg/virt-controller/watch/workload-updater/workload-updater.go#L295-L301

on the other side, having a placeholder value there will be enough to prevent it from getting overwritten with its default configuration.
Looking at the code, the placeholder value can be safely kept in place till the cluster reaches 4.12.