Skip to content

Commit 8a26157

Browse files
authored
Merge pull request #1771 from Sneha-at/data-cache
Update LSSD raiding logic to support NVME VMs
2 parents 72ab733 + 7eddb8d commit 8a26157

File tree

2 files changed

+23
-19
lines changed

2 files changed

+23
-19
lines changed

pkg/gce-pd-csi-driver/cache.go

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package gceGCEDriver
22

33
import (
44
"fmt"
5+
"regexp"
56
"strconv"
67
"strings"
78

@@ -301,28 +302,31 @@ func RaidLocalSsds() error {
301302
klog.V(2).Infof("============================== Local SSDs are already RAIDed ==============================")
302303
return nil
303304
}
304-
info, err := common.RunCommand("" /* pipedCmd */, "" /* pipeCmdArg */, "nvme", []string{"list", "-o", "json"}...)
305+
diskList := []string{}
306+
info, err := common.RunCommand("" /* pipedCmd */, "" /* pipeCmdArg */, "lsblk", []string{"-o", "NAME,MODEL", "-p", "-d", "-n"}...)
305307
if err != nil {
306-
return fmt.Errorf("errored while scanning available NVME disks info: %v; err:%v", info, err)
308+
return fmt.Errorf("errored while fetching NVME disks info: %v; err:%v", info, err)
307309
}
308-
infoString := strings.TrimSpace(strings.ReplaceAll(string(info), "\n", " "))
309-
klog.V(2).Infof("============================== NVME list %v ==============================", infoString)
310-
infoString = strings.ReplaceAll(infoString, "\"", "")
311-
infoString = strings.ReplaceAll(infoString, " :", ":")
312-
infoString = strings.ReplaceAll(infoString, ": ", ":")
313-
infoString = strings.ReplaceAll(infoString, ",", " ")
314-
infoSlice := strings.Split(infoString, " ")
315-
316-
diskList := []string{}
317-
for _, diskInfo := range infoSlice {
318-
diskName := strings.TrimSpace(diskInfo)
319-
320-
if strings.Contains(diskName, "DevicePath") {
321-
diskName := strings.TrimSpace(strings.Split(diskName, ":")[1])
322-
323-
diskList = append(diskList, diskName)
310+
infoList := strings.Split(strings.TrimSpace(string(info)), "\n")
311+
klog.Infof("============================== Got NVME disks %v ==============================", infoList)
312+
re, err := regexp.Compile("nvme_card([0-9]+)?$")
313+
if err != nil {
314+
klog.V(2).ErrorS(err, "Errored while compiling to check PD or LSSD")
315+
}
316+
for _, ssd := range infoList {
317+
klog.V(2).Infof("=========================== Checking for SSD %v ====================", ssd)
318+
ssd = strings.TrimSpace(ssd)
319+
if strings.HasPrefix(ssd, "/dev/nvme") {
320+
ssdDetails := strings.Split(ssd, " ")
321+
klog.V(2).Infof("=========================== Got SSD details %v ====================", ssdDetails)
322+
lssd := re.MatchString(ssdDetails[1])
323+
klog.Infof("=================== ssdDetails1 %v and compile string result %v", ssdDetails[1], lssd)
324+
if lssd {
325+
diskList = append(diskList, strings.TrimSpace(ssdDetails[0]))
326+
}
324327
}
325328
}
329+
klog.V(2).Infof("============================== NVME list %v ==============================", diskList)
326330
nvmeDiskCount := len(diskList)
327331
nvmeDiskList := strings.Join(diskList, " ")
328332
if nvmeDiskCount == 0 {

test/run-e2e.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ set -x
55

66
readonly PKGDIR=sigs.k8s.io/gcp-compute-persistent-disk-csi-driver
77

8-
go test --timeout 30m --v "${PKGDIR}/test/e2e/tests" --run-in-prow=true --delete-instances=true --logtostderr
8+
go test --timeout 40m --v "${PKGDIR}/test/e2e/tests" --run-in-prow=true --delete-instances=true --logtostderr

0 commit comments

Comments
 (0)