diff --git a/pkg/csi/driver/bv_controller.go b/pkg/csi/driver/bv_controller.go index 272cbb68e..d21b19d2a 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 e2c0fa3b0..525e45b43 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)