mirror of
https://github.com/kubernetes-csi/csi-driver-nvmf.git
synced 2025-10-22 00:18:51 +00:00
Merge pull request #39 from ghormoon/fix/device-id
Allow any device ID format, not just uuid format
This commit is contained in:
@@ -15,5 +15,18 @@ spec:
|
||||
targetTrAddr: "192.168.122.18"
|
||||
targetTrPort: "49153"
|
||||
targetTrType: "tcp"
|
||||
deviceUUID: "58668891-c3e4-45d0-b90e-824525c16080"
|
||||
nqn: "nqn.2022-08.org.test-nvmf.example"
|
||||
nqn: "nqn.2022-08.org.test-nvmf.example"
|
||||
# you can use any format of ID here, uuid., eui., whatever your storage pusts into ID_WWN or ID_SERIAL, as udev puts that in /dev/disk/by-id
|
||||
deviceID: "uuid.58668891-c3e4-45d0-b90e-824525c16080"
|
||||
#deviceID: "INTEL_SSDPF2KX038T9N_PHAB2261050P3P9EGN"
|
||||
#deviceID: "Pure_Storage_FlashArray_AA00000000000AAA_42"
|
||||
#
|
||||
# for uuid, eui and nguid formats. there's an alias
|
||||
#deviceUUID: "58668891-c3e4-45d0-b90e-824525c16080"
|
||||
# is the same as
|
||||
#deviceID: "uuid.58668891-c3e4-45d0-b90e-824525c16080"
|
||||
#
|
||||
# both EUI and NGUID will appear as eui.something
|
||||
#deviceEUI: "00000000000000000042aa42aa42aa42"
|
||||
# is the same as
|
||||
#deviceID: "eui.00000000000000000042aa42aa42aa42"
|
||||
|
@@ -30,7 +30,7 @@ import (
|
||||
|
||||
type Connector struct {
|
||||
VolumeID string
|
||||
DeviceUUID string
|
||||
DeviceID string
|
||||
TargetNqn string
|
||||
TargetAddr string
|
||||
TargetPort string
|
||||
@@ -66,7 +66,7 @@ func getNvmfConnector(nvmfInfo *nvmfDiskInfo) *Connector {
|
||||
|
||||
return &Connector{
|
||||
VolumeID: nvmfInfo.VolName,
|
||||
DeviceUUID: nvmfInfo.DeviceUUID,
|
||||
DeviceID: nvmfInfo.DeviceID,
|
||||
TargetNqn: nvmfInfo.Nqn,
|
||||
TargetAddr: nvmfInfo.Addr,
|
||||
TargetPort: nvmfInfo.Port,
|
||||
@@ -278,7 +278,7 @@ func (c *Connector) Connect() (string, error) {
|
||||
}
|
||||
baseString := builder.String()
|
||||
|
||||
devicePath := strings.Join([]string{"/dev/disk/by-id/nvme-uuid", c.DeviceUUID}, ".")
|
||||
devicePath := strings.Join([]string{"/dev/disk/by-id/nvme-", c.DeviceID}, "")
|
||||
|
||||
// connect to nvmf disk
|
||||
err := _connect(baseString)
|
||||
|
@@ -19,6 +19,7 @@ package nvmf
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/container-storage-interface/spec/lib/go/csi"
|
||||
"k8s.io/klog/v2"
|
||||
@@ -27,14 +28,14 @@ import (
|
||||
)
|
||||
|
||||
type nvmfDiskInfo struct {
|
||||
VolName string
|
||||
Nqn string
|
||||
Addr string
|
||||
Port string
|
||||
DeviceUUID string
|
||||
Transport string
|
||||
HostId string
|
||||
HostNqn string
|
||||
VolName string
|
||||
Nqn string
|
||||
Addr string
|
||||
Port string
|
||||
DeviceID string
|
||||
Transport string
|
||||
HostId string
|
||||
HostNqn string
|
||||
}
|
||||
|
||||
type nvmfDiskMounter struct {
|
||||
@@ -60,24 +61,36 @@ func getNVMfDiskInfo(req *csi.NodePublishVolumeRequest) (*nvmfDiskInfo, error) {
|
||||
targetTrAddr := volOpts["targetTrAddr"]
|
||||
targetTrPort := volOpts["targetTrPort"]
|
||||
targetTrType := volOpts["targetTrType"]
|
||||
deviceUUID := volOpts["deviceUUID"]
|
||||
devHostNqn := volOpts["hostNqn"]
|
||||
devHostId := volOpts["hostId"]
|
||||
deviceID := volOpts["deviceID"]
|
||||
if volOpts["deviceUUID"] != "" {
|
||||
if deviceID != "" {
|
||||
klog.Warningf("Warning: deviceUUID is overwriting already defined deviceID, volID: %s ", volName)
|
||||
}
|
||||
deviceID = strings.Join([]string{"uuid", volOpts["deviceUUID"]}, ".")
|
||||
}
|
||||
if volOpts["deviceEUI"] != "" {
|
||||
if deviceID != "" {
|
||||
klog.Warningf("Warning: deviceEUI is overwriting already defined deviceID, volID: %s ", volName)
|
||||
}
|
||||
deviceID = strings.Join([]string{"eui", volOpts["deviceEUI"]}, ".")
|
||||
}
|
||||
nqn := volOpts["nqn"]
|
||||
|
||||
if targetTrAddr == "" || nqn == "" || targetTrPort == "" || targetTrType == "" || deviceUUID == "" {
|
||||
if targetTrAddr == "" || nqn == "" || targetTrPort == "" || targetTrType == "" || deviceID == "" {
|
||||
return nil, fmt.Errorf("some nvme target info is missing, volID: %s ", volName)
|
||||
}
|
||||
|
||||
return &nvmfDiskInfo{
|
||||
VolName: volName,
|
||||
Addr: targetTrAddr,
|
||||
Port: targetTrPort,
|
||||
Nqn: nqn,
|
||||
DeviceUUID: deviceUUID,
|
||||
Transport: targetTrType,
|
||||
HostNqn: devHostNqn,
|
||||
HostId: devHostId,
|
||||
VolName: volName,
|
||||
Addr: targetTrAddr,
|
||||
Port: targetTrPort,
|
||||
Nqn: nqn,
|
||||
DeviceID: deviceID,
|
||||
Transport: targetTrType,
|
||||
HostNqn: devHostNqn,
|
||||
HostId: devHostId,
|
||||
}, nil
|
||||
}
|
||||
|
||||
@@ -129,7 +142,7 @@ func AttachDisk(req *csi.NodePublishVolumeRequest, nm nvmfDiskMounter) (string,
|
||||
return "", fmt.Errorf("Heuristic determination of mount point failed:%v", err)
|
||||
}
|
||||
if !notMounted {
|
||||
klog.Infof("AttachDisk: VolumeID: %s, Path: %s is already mounted, device: %s", req.VolumeId, nm.targetPath, nm.DeviceUUID)
|
||||
klog.Infof("AttachDisk: VolumeID: %s, Path: %s is already mounted, device: %s", req.VolumeId, nm.targetPath, nm.DeviceID)
|
||||
return "", nil
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user