Skip to content

Commit

Permalink
fix
Browse files Browse the repository at this point in the history
Signed-off-by: yaroslavborbat <[email protected]>
  • Loading branch information
yaroslavborbat committed Jan 18, 2025
1 parent aa72988 commit 13c8da2
Showing 1 changed file with 19 additions and 46 deletions.
65 changes: 19 additions & 46 deletions images/virt-artifact/patches/032-hotplug-container-disk.patch
Original file line number Diff line number Diff line change
Expand Up @@ -533,7 +533,7 @@ index b5d62f5af5..6a3e2b4143 100644

// inject into VMI if ephemeral, else set as a request on the VM to both make permanent and hotplug.
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
index 0af25f8074..59a468730e 100644
index 0af25f8074..b984ff4262 100644
--- a/pkg/virt-api/webhooks/validating-webhook/admitters/vmi-update-admitter.go
+++ b/pkg/virt-api/webhooks/validating-webhook/admitters/vmi-update-admitter.go
@@ -200,11 +200,11 @@ func verifyHotplugVolumes(newHotplugVolumeMap, oldHotplugVolumeMap map[string]v1
Expand All @@ -550,7 +550,7 @@ index 0af25f8074..59a468730e 100644
},
})
}
@@ -219,19 +219,23 @@ func verifyHotplugVolumes(newHotplugVolumeMap, oldHotplugVolumeMap map[string]v1
@@ -219,19 +219,19 @@ func verifyHotplugVolumes(newHotplugVolumeMap, oldHotplugVolumeMap map[string]v1
})
}
disk := newDisks[k]
Expand All @@ -565,21 +565,17 @@ index 0af25f8074..59a468730e 100644
})
}
- if (disk.Disk == nil || disk.Disk.Bus != "scsi") && (disk.LUN == nil || disk.LUN.Bus != "scsi") {
+ if (disk.Disk != nil && disk.Disk.Bus != v1.DiskBusSCSI) || (disk.LUN != nil && disk.LUN.Bus != v1.DiskBusSCSI) || (disk.CDRom != nil && disk.CDRom.Bus != v1.DiskBusSATA) {
+ bus := v1.DiskBusSCSI
+ if disk.CDRom != nil {
+ bus = v1.DiskBusSATA
+ }
+ if (disk.Disk != nil && disk.Disk.Bus != v1.DiskBusSCSI) || (disk.LUN != nil && disk.LUN.Bus != v1.DiskBusSCSI) || (disk.CDRom != nil && disk.CDRom.Bus != v1.DiskBusSCSI) {
return webhookutils.ToAdmissionResponse([]metav1.StatusCause{
{
Type: metav1.CauseTypeFieldValueInvalid,
- Message: fmt.Sprintf("hotplugged Disk %s does not use a scsi bus", k),
+ Message: fmt.Sprintf("hotplugged Disk %s does not use a %q bus", k, bus),
+ Message: fmt.Sprintf("hotplugged Disk %s does not use a %q bus", k, v1.DiskBusSCSI),
},
})

diff --git a/pkg/virt-api/webhooks/validating-webhook/admitters/vms-admitter.go b/pkg/virt-api/webhooks/validating-webhook/admitters/vms-admitter.go
index f7e4f92727..5869638965 100644
index f7e4f92727..edaf475e05 100644
--- a/pkg/virt-api/webhooks/validating-webhook/admitters/vms-admitter.go
+++ b/pkg/virt-api/webhooks/validating-webhook/admitters/vms-admitter.go
@@ -591,6 +591,8 @@ func (admitter *VMsAdmitter) validateVolumeRequests(vm *v1.VirtualMachine) ([]me
Expand All @@ -599,61 +595,38 @@ index f7e4f92727..5869638965 100644
// Validate the disk is configured properly
if disk == nil {
return []metav1.StatusCause{{
@@ -675,25 +676,40 @@ func validateDiskConfiguration(disk *v1.Disk, name string) []metav1.StatusCause
@@ -675,19 +676,23 @@ func validateDiskConfiguration(disk *v1.Disk, name string) []metav1.StatusCause
Field: k8sfield.NewPath("Status", "volumeRequests").String(),
}}
}
- if disk.DiskDevice.Disk == nil && disk.DiskDevice.LUN == nil {
- return []metav1.StatusCause{{
- Type: metav1.CauseTypeFieldValueInvalid,
- Message: fmt.Sprintf("AddVolume request for [%s] requires diskDevice of type 'disk' or 'lun' to be used.", name),
- Field: k8sfield.NewPath("Status", "volumeRequests").String(),
- }}
- }
- if disk.DiskDevice.Disk != nil {
- bus = disk.DiskDevice.Disk.Bus
- } else {
- bus = disk.DiskDevice.LUN.Bus
- }
- if bus != "scsi" {
+ var bus v1.DiskBus
+ switch {
+ case disk.DiskDevice.Disk != nil:
+ if disk.DiskDevice.Disk.Bus != v1.DiskBusSCSI {
+ return []metav1.StatusCause{{
+ Type: metav1.CauseTypeFieldValueInvalid,
+ Message: fmt.Sprintf("AddVolume request for [%s] requires disk bus to be 'scsi'. [%s] is not permitted", name, disk.DiskDevice.Disk.Bus),
+ Field: k8sfield.NewPath("Status", "volumeRequests").String(),
+ }}
+ }
+ bus = disk.DiskDevice.Disk.Bus
+ case disk.DiskDevice.LUN != nil:
+ if disk.DiskDevice.LUN.Bus != v1.DiskBusSCSI {
+ return []metav1.StatusCause{{
+ Type: metav1.CauseTypeFieldValueInvalid,
+ Message: fmt.Sprintf("AddVolume request for [%s] requires lun bus to be 'scsi'. [%s] is not permitted", name, disk.DiskDevice.LUN.Bus),
+ Field: k8sfield.NewPath("Status", "volumeRequests").String(),
+ }}
+
+ }
+ bus = disk.DiskDevice.LUN.Bus
+ case disk.DiskDevice.CDRom != nil:
+ if disk.DiskDevice.CDRom.Bus != v1.DiskBusSATA {
+ return []metav1.StatusCause{{
+ Type: metav1.CauseTypeFieldValueInvalid,
+ Message: fmt.Sprintf("AddVolume request for [%s] requires cdrom bus to be 'sata'. [%s] is not permitted", name, disk.DiskDevice.CDRom.Bus),
+ Field: k8sfield.NewPath("Status", "volumeRequests").String(),
+ }}
+ }
+ bus = disk.DiskDevice.CDRom.Bus
+ default:
return []metav1.StatusCause{{
Type: metav1.CauseTypeFieldValueInvalid,
- Message: fmt.Sprintf("AddVolume request for [%s] requires disk bus to be 'scsi'. [%s] is not permitted", name, bus),
- Message: fmt.Sprintf("AddVolume request for [%s] requires diskDevice of type 'disk' or 'lun' to be used.", name),
+ Message: fmt.Sprintf("AddVolume request for [%s] requires diskDevice of type 'disk',lun' or 'cdrom' to be used.", name),
Field: k8sfield.NewPath("Status", "volumeRequests").String(),
}}
}
- if disk.DiskDevice.Disk != nil {
- bus = disk.DiskDevice.Disk.Bus
- } else {
- bus = disk.DiskDevice.LUN.Bus
- }
- if bus != "scsi" {
+
if disk.DedicatedIOThread != nil && *disk.DedicatedIOThread {
+ if bus != v1.DiskBusSCSI {
return []metav1.StatusCause{{
Type: metav1.CauseTypeFieldValueInvalid,
Message: fmt.Sprintf("AddVolume request for [%s] requires disk bus to be 'scsi'. [%s] is not permitted", name, bus),
diff --git a/pkg/virt-controller/services/rendervolumes.go b/pkg/virt-controller/services/rendervolumes.go
index 0181fc05e3..de90ed3cbc 100644
--- a/pkg/virt-controller/services/rendervolumes.go
Expand Down

0 comments on commit 13c8da2

Please sign in to comment.