Skip to content

Commit

Permalink
call udevadm without shell
Browse files Browse the repository at this point in the history
in the process of remove shell usage
  • Loading branch information
huww98 committed Mar 21, 2024
1 parent 739e665 commit a4afaa4
Showing 1 changed file with 13 additions and 8 deletions.
21 changes: 13 additions & 8 deletions pkg/utils/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -1029,18 +1029,23 @@ func GetNvmeDeviceByVolumeID(volumeID string) (device string, err error) {
for _, deviceFile := range devNumFiles {
deviceName := filepath.Base(filepath.Dir(deviceFile))
if strings.HasPrefix(deviceName, "nvme") && !strings.Contains(deviceName, "p") {
cmd := fmt.Sprintf("%s udevadm info --query=all --name=/dev/%s | grep ID_SERIAL_SHORT | awk -F= '{print $2}'", NsenterCmd, deviceName)
snumber, err := Run(cmd)
out, err := CommandOnNode("udevadm", "info", "--query=property", "--name=/dev/"+deviceName).CombinedOutput()
if err != nil {
log.Warnf("GetNvmeDeviceByVolumeID: Get device with command %s and got error: %s", cmd, err.Error())
log.Warnf("GetNvmeDeviceByVolumeID: udevadm failed: %s (%v)", string(out), err)
continue
}
snumber = strings.TrimSpace(snumber)
if serialNumber == strings.TrimSpace(snumber) {
device = filepath.Join("/dev/", deviceName)
log.Infof("GetNvmeDeviceByVolumeID: Get nvme device %s with volumeID %s", device, volumeID)
return device, nil
for _, line := range strings.Split(string(out), "\n") {
const prefix = "ID_SERIAL_SHORT="
if strings.HasPrefix(line, prefix) {
snumber := line[len(prefix):]
if serialNumber == snumber {
device = filepath.Join("/dev/", deviceName)
log.Infof("GetNvmeDeviceByVolumeID: Get nvme device %s with volumeID %s", device, volumeID)
return device, nil
}
}
}
log.Warnf("GetNvmeDeviceByVolumeID: udevadm did not know serial number for %s", deviceName)
}
}
return "", nil
Expand Down

0 comments on commit a4afaa4

Please sign in to comment.