|
| 1 | +diff --git a/pkg/virt-api/webhooks/validating-webhook/admitters/util.go b/pkg/virt-api/webhooks/validating-webhook/admitters/util.go |
| 2 | +new file mode 100644 |
| 3 | +index 0000000000..6d0699b12d |
| 4 | +--- /dev/null |
| 5 | ++++ b/pkg/virt-api/webhooks/validating-webhook/admitters/util.go |
| 6 | +@@ -0,0 +1,19 @@ |
| 7 | ++package admitters |
| 8 | ++ |
| 9 | ++import ( |
| 10 | ++ "k8s.io/apimachinery/pkg/api/equality" |
| 11 | ++ v1 "kubevirt.io/api/core/v1" |
| 12 | ++) |
| 13 | ++ |
| 14 | ++func equalDiskIgnoreSerial(newDisk, oldDisk v1.Disk) bool { |
| 15 | ++ return equality.Semantic.DeepEqual(newDisk.Name, oldDisk.Name) && |
| 16 | ++ equality.Semantic.DeepEqual(newDisk.DiskDevice, oldDisk.DiskDevice) && |
| 17 | ++ equality.Semantic.DeepEqual(newDisk.BootOrder, oldDisk.BootOrder) && |
| 18 | ++ equality.Semantic.DeepEqual(newDisk.DedicatedIOThread, oldDisk.DedicatedIOThread) && |
| 19 | ++ equality.Semantic.DeepEqual(newDisk.Cache, oldDisk.Cache) && |
| 20 | ++ equality.Semantic.DeepEqual(newDisk.IO, oldDisk.IO) && |
| 21 | ++ equality.Semantic.DeepEqual(newDisk.Tag, oldDisk.Tag) && |
| 22 | ++ equality.Semantic.DeepEqual(newDisk.BlockSize, oldDisk.BlockSize) && |
| 23 | ++ equality.Semantic.DeepEqual(newDisk.Shareable, oldDisk.Shareable) && |
| 24 | ++ equality.Semantic.DeepEqual(newDisk.ErrorPolicy, oldDisk.ErrorPolicy) |
| 25 | ++} |
1 | 26 | diff --git a/pkg/virt-api/webhooks/validating-webhook/admitters/vmi-update-admitter.go b/pkg/virt-api/webhooks/validating-webhook/admitters/vmi-update-admitter.go
|
2 |
| -index b984ff4262..4a5ffb6c55 100644 |
| 27 | +index b984ff4262..8201d9375b 100644 |
3 | 28 | --- a/pkg/virt-api/webhooks/validating-webhook/admitters/vmi-update-admitter.go
|
4 | 29 | +++ b/pkg/virt-api/webhooks/validating-webhook/admitters/vmi-update-admitter.go
|
5 |
| -@@ -292,7 +292,20 @@ func verifyPermanentVolumes(newPermanentVolumeMap, oldPermanentVolumeMap map[str |
| 30 | +@@ -189,7 +189,8 @@ func verifyHotplugVolumes(newHotplugVolumeMap, oldHotplugVolumeMap map[string]v1 |
| 31 | + }, |
| 32 | + }) |
| 33 | + } |
| 34 | +- if !equality.Semantic.DeepEqual(newDisks[k], oldDisks[k]) { |
| 35 | ++ |
| 36 | ++ if !equalDiskIgnoreSerial(newDisks[k], oldDisks[k]) { |
| 37 | + return webhookutils.ToAdmissionResponse([]metav1.StatusCause{ |
| 38 | + { |
| 39 | + Type: metav1.CauseTypeFieldValueInvalid, |
| 40 | +@@ -292,7 +293,8 @@ func verifyPermanentVolumes(newPermanentVolumeMap, oldPermanentVolumeMap map[str |
6 | 41 | },
|
7 | 42 | })
|
8 | 43 | }
|
9 | 44 | - if !equality.Semantic.DeepEqual(newDisks[k], oldDisks[k]) {
|
10 | 45 | +
|
11 |
| -+ newDisk := newDisks[k] |
12 |
| -+ oldDisk := oldDisks[k] |
13 |
| -+ |
14 |
| -+ if !equality.Semantic.DeepEqual(newDisk.Name, oldDisk.Name) || |
15 |
| -+ !equality.Semantic.DeepEqual(newDisk.DiskDevice, oldDisk.DiskDevice) || |
16 |
| -+ !equality.Semantic.DeepEqual(newDisk.BootOrder, oldDisk.BootOrder) || |
17 |
| -+ !equality.Semantic.DeepEqual(newDisk.DedicatedIOThread, oldDisk.DedicatedIOThread) || |
18 |
| -+ !equality.Semantic.DeepEqual(newDisk.Cache, oldDisk.Cache) || |
19 |
| -+ !equality.Semantic.DeepEqual(newDisk.IO, oldDisk.IO) || |
20 |
| -+ !equality.Semantic.DeepEqual(newDisk.Tag, oldDisk.Tag) || |
21 |
| -+ !equality.Semantic.DeepEqual(newDisk.BlockSize, oldDisk.BlockSize) || |
22 |
| -+ !equality.Semantic.DeepEqual(newDisk.Shareable, oldDisk.Shareable) || |
23 |
| -+ !equality.Semantic.DeepEqual(newDisk.ErrorPolicy, oldDisk.ErrorPolicy) { |
| 46 | ++ if !equalDiskIgnoreSerial(newDisks[k], oldDisks[k]) { |
24 | 47 | return webhookutils.ToAdmissionResponse([]metav1.StatusCause{
|
25 | 48 | {
|
26 | 49 | Type: metav1.CauseTypeFieldValueInvalid,
|
0 commit comments