@@ -2,6 +2,7 @@ package gceGCEDriver
2
2
3
3
import (
4
4
"fmt"
5
+ "regexp"
5
6
"strconv"
6
7
"strings"
7
8
@@ -301,28 +302,31 @@ func RaidLocalSsds() error {
301
302
klog .V (2 ).Infof ("============================== Local SSDs are already RAIDed ==============================" )
302
303
return nil
303
304
}
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" }... )
305
307
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 )
307
309
}
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
+ }
324
327
}
325
328
}
329
+ klog .V (2 ).Infof ("============================== NVME list %v ==============================" , diskList )
326
330
nvmeDiskCount := len (diskList )
327
331
nvmeDiskList := strings .Join (diskList , " " )
328
332
if nvmeDiskCount == 0 {
0 commit comments