mirror of
https://github.com/kubernetes-csi/csi-driver-nvmf.git
synced 2025-10-22 16:41:03 +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"
|
targetTrAddr: "192.168.122.18"
|
||||||
targetTrPort: "49153"
|
targetTrPort: "49153"
|
||||||
targetTrType: "tcp"
|
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 {
|
type Connector struct {
|
||||||
VolumeID string
|
VolumeID string
|
||||||
DeviceUUID string
|
DeviceID string
|
||||||
TargetNqn string
|
TargetNqn string
|
||||||
TargetAddr string
|
TargetAddr string
|
||||||
TargetPort string
|
TargetPort string
|
||||||
@@ -66,7 +66,7 @@ func getNvmfConnector(nvmfInfo *nvmfDiskInfo) *Connector {
|
|||||||
|
|
||||||
return &Connector{
|
return &Connector{
|
||||||
VolumeID: nvmfInfo.VolName,
|
VolumeID: nvmfInfo.VolName,
|
||||||
DeviceUUID: nvmfInfo.DeviceUUID,
|
DeviceID: nvmfInfo.DeviceID,
|
||||||
TargetNqn: nvmfInfo.Nqn,
|
TargetNqn: nvmfInfo.Nqn,
|
||||||
TargetAddr: nvmfInfo.Addr,
|
TargetAddr: nvmfInfo.Addr,
|
||||||
TargetPort: nvmfInfo.Port,
|
TargetPort: nvmfInfo.Port,
|
||||||
@@ -278,7 +278,7 @@ func (c *Connector) Connect() (string, error) {
|
|||||||
}
|
}
|
||||||
baseString := builder.String()
|
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
|
// connect to nvmf disk
|
||||||
err := _connect(baseString)
|
err := _connect(baseString)
|
||||||
|
@@ -19,6 +19,7 @@ package nvmf
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/container-storage-interface/spec/lib/go/csi"
|
"github.com/container-storage-interface/spec/lib/go/csi"
|
||||||
"k8s.io/klog/v2"
|
"k8s.io/klog/v2"
|
||||||
@@ -27,14 +28,14 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type nvmfDiskInfo struct {
|
type nvmfDiskInfo struct {
|
||||||
VolName string
|
VolName string
|
||||||
Nqn string
|
Nqn string
|
||||||
Addr string
|
Addr string
|
||||||
Port string
|
Port string
|
||||||
DeviceUUID string
|
DeviceID string
|
||||||
Transport string
|
Transport string
|
||||||
HostId string
|
HostId string
|
||||||
HostNqn string
|
HostNqn string
|
||||||
}
|
}
|
||||||
|
|
||||||
type nvmfDiskMounter struct {
|
type nvmfDiskMounter struct {
|
||||||
@@ -60,24 +61,36 @@ func getNVMfDiskInfo(req *csi.NodePublishVolumeRequest) (*nvmfDiskInfo, error) {
|
|||||||
targetTrAddr := volOpts["targetTrAddr"]
|
targetTrAddr := volOpts["targetTrAddr"]
|
||||||
targetTrPort := volOpts["targetTrPort"]
|
targetTrPort := volOpts["targetTrPort"]
|
||||||
targetTrType := volOpts["targetTrType"]
|
targetTrType := volOpts["targetTrType"]
|
||||||
deviceUUID := volOpts["deviceUUID"]
|
|
||||||
devHostNqn := volOpts["hostNqn"]
|
devHostNqn := volOpts["hostNqn"]
|
||||||
devHostId := volOpts["hostId"]
|
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"]
|
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 nil, fmt.Errorf("some nvme target info is missing, volID: %s ", volName)
|
||||||
}
|
}
|
||||||
|
|
||||||
return &nvmfDiskInfo{
|
return &nvmfDiskInfo{
|
||||||
VolName: volName,
|
VolName: volName,
|
||||||
Addr: targetTrAddr,
|
Addr: targetTrAddr,
|
||||||
Port: targetTrPort,
|
Port: targetTrPort,
|
||||||
Nqn: nqn,
|
Nqn: nqn,
|
||||||
DeviceUUID: deviceUUID,
|
DeviceID: deviceID,
|
||||||
Transport: targetTrType,
|
Transport: targetTrType,
|
||||||
HostNqn: devHostNqn,
|
HostNqn: devHostNqn,
|
||||||
HostId: devHostId,
|
HostId: devHostId,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -129,7 +142,7 @@ func AttachDisk(req *csi.NodePublishVolumeRequest, nm nvmfDiskMounter) (string,
|
|||||||
return "", fmt.Errorf("Heuristic determination of mount point failed:%v", err)
|
return "", fmt.Errorf("Heuristic determination of mount point failed:%v", err)
|
||||||
}
|
}
|
||||||
if !notMounted {
|
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
|
return "", nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user