From 4fa5631d67ff7135b88bc5d1e38c8d676e103005 Mon Sep 17 00:00:00 2001 From: hezyabudy <76511955+hezyabudy@users.noreply.github.com> Date: Thu, 6 Mar 2025 22:34:13 +0200 Subject: [PATCH] Fix BootVolume attach failure --- pkg/csi/driver/bv_controller.go | 29 +++++++++++++++++------------ pkg/oci/client/volume_attachment.go | 16 ++++++++++------ 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/pkg/csi/driver/bv_controller.go b/pkg/csi/driver/bv_controller.go index 272cbb68e3..d21b19d2a4 100644 --- a/pkg/csi/driver/bv_controller.go +++ b/pkg/csi/driver/bv_controller.go @@ -790,19 +790,24 @@ func generatePublishContext(volumeAttachmentOptions VolumeAttachmentOption, log log.With("volumeAttachedId", *volumeAttached.GetId()).Info("Publishing iSCSI Volume Completed.") + publishContext := map[string]string{ + attachmentType: attachmentTypeISCSI, + disk.ISCSIIQN: *iSCSIVolumeAttached.Iqn, + disk.ISCSIIP: *iSCSIVolumeAttached.Ipv4, + disk.ISCSIPORT: strconv.Itoa(*iSCSIVolumeAttached.Port), + csi_util.VpusPerGB: vpusPerGB, + needResize: needsResize, + newSize: expectedSize, + multipathEnabled: multipath, + multipathDevices: string(multiPathDevicesJson), + } + + if dev := volumeAttached.GetDevice(); dev != nil { + publishContext["device"] = *dev + } + return &csi.ControllerPublishVolumeResponse{ - PublishContext: map[string]string{ - attachmentType: attachmentTypeISCSI, - device: *volumeAttached.GetDevice(), - disk.ISCSIIQN: *iSCSIVolumeAttached.Iqn, - disk.ISCSIIP: *iSCSIVolumeAttached.Ipv4, - disk.ISCSIPORT: strconv.Itoa(*iSCSIVolumeAttached.Port), - csi_util.VpusPerGB: vpusPerGB, - needResize: needsResize, - newSize: expectedSize, - multipathEnabled: multipath, - multipathDevices: string(multiPathDevicesJson), - }, + PublishContext: publishContext, }, nil } diff --git a/pkg/oci/client/volume_attachment.go b/pkg/oci/client/volume_attachment.go index e2c0fa3b0b..525e45b43e 100644 --- a/pkg/oci/client/volume_attachment.go +++ b/pkg/oci/client/volume_attachment.go @@ -18,6 +18,7 @@ import ( "context" "fmt" "math/rand" + "strings" "time" "github.com/oracle/oci-cloud-controller-manager/pkg/util" @@ -140,13 +141,16 @@ func (c *client) AttachVolume(ctx context.Context, instanceID, volumeID string) return nil, errors.WithStack(err) } + var attachVolumeDetails = core.AttachIScsiVolumeDetails{ + InstanceId: &instanceID, + VolumeId: &volumeID, + } + if !strings.Contains(volumeID, "bootvolume") { + attachVolumeDetails.Device = device + } resp, err := c.compute.AttachVolume(ctx, core.AttachVolumeRequest{ - AttachVolumeDetails: core.AttachIScsiVolumeDetails{ - InstanceId: &instanceID, - VolumeId: &volumeID, - Device: device, - }, - RequestMetadata: c.requestMetadata, + AttachVolumeDetails: attachVolumeDetails, + RequestMetadata: c.requestMetadata, }) incRequestCounter(err, createVerb, volumeAttachmentResource)