Skip to content

Commit 5478544

Browse files
authored
Merge pull request #154 from mauriciopoppe/single-disk-json
Send arrays to ConvertTo-Json in the internal disk implementation
2 parents 0d47c10 + 700566d commit 5478544

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

pkg/os/disk/api.go

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ func (DiskAPI) ListDiskLocations() (map[uint32]shared.DiskLocation, error) {
7979
// "number": 0,
8080
// "location": "PCI Slot 3 : Adapter 0 : Port 0 : Target 1 : LUN 0"
8181
// }, ...]
82-
cmd := fmt.Sprintf("Get-Disk | select number, location | ConvertTo-Json")
82+
cmd := fmt.Sprintf("ConvertTo-Json @(Get-Disk | select Number, Location)")
8383
out, err := runExec(cmd)
8484
if err != nil {
8585
return nil, fmt.Errorf("failed to list disk location. cmd: %q, output: %q, err %v", cmd, string(out), err)
@@ -93,8 +93,8 @@ func (DiskAPI) ListDiskLocations() (map[uint32]shared.DiskLocation, error) {
9393

9494
m := make(map[uint32]shared.DiskLocation)
9595
for _, v := range getDisk {
96-
str := v["location"].(string)
97-
num := v["number"].(float64)
96+
str := v["Location"].(string)
97+
num := v["Number"].(float64)
9898

9999
found := false
100100
s := strings.Split(str, ":")
@@ -237,15 +237,18 @@ func (DiskAPI) GetDiskPage83ID(disk syscall.Handle) (string, error) {
237237
}
238238

239239
func (imp DiskAPI) GetDiskNumberWithID(page83ID string) (uint32, error) {
240-
cmd := "(Get-Disk | Select Path) | ConvertTo-Json"
240+
cmd := "ConvertTo-Json @(Get-Disk | Select Path)"
241241
out, err := runExec(cmd)
242242
if err != nil {
243243
return 0, fmt.Errorf("Could not query disk paths")
244244
}
245245

246246
outString := string(out)
247247
disks := []Disk{}
248-
json.Unmarshal([]byte(outString), &disks)
248+
err = json.Unmarshal([]byte(outString), &disks)
249+
if err != nil {
250+
return 0, err
251+
}
249252

250253
for i := range disks {
251254
diskNumber, diskPage83ID, err := imp.GetDiskNumberAndPage83ID(disks[i].Path)
@@ -293,16 +296,19 @@ func (imp DiskAPI) ListDiskIDs() (map[uint32]shared.DiskIDs, error) {
293296
// {
294297
// "Path": "\\\\?\\scsi#disk\u0026ven_msft\u0026prod_virtual_disk#2\u00261f4adffe\u00260\u0026000001#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}",
295298
// "SerialNumber": null
296-
// },
297-
cmd := "(Get-Disk | Select Path, SerialNumber) | ConvertTo-Json"
299+
// }, ]
300+
cmd := "ConvertTo-Json @(Get-Disk | Select Path, SerialNumber)"
298301
out, err := runExec(cmd)
299302
if err != nil {
300303
return nil, fmt.Errorf("Could not query disk paths")
301304
}
302305

303306
outString := string(out)
304307
disks := []Disk{}
305-
json.Unmarshal([]byte(outString), &disks)
308+
err = json.Unmarshal([]byte(outString), &disks)
309+
if err != nil {
310+
return nil, err
311+
}
306312

307313
m := make(map[uint32]shared.DiskIDs)
308314

0 commit comments

Comments
 (0)