mirror of https://github.com/docker/docs.git
47 lines
790 B
Go
47 lines
790 B
Go
package virtualbox
|
|
|
|
import (
|
|
"bufio"
|
|
"io"
|
|
"strings"
|
|
)
|
|
|
|
type VirtualDisk struct {
|
|
UUID string
|
|
Path string
|
|
}
|
|
|
|
func parseDiskInfo(r io.Reader) (*VirtualDisk, error) {
|
|
s := bufio.NewScanner(r)
|
|
disk := &VirtualDisk{}
|
|
for s.Scan() {
|
|
line := s.Text()
|
|
if line == "" {
|
|
continue
|
|
}
|
|
res := reEqualLine.FindStringSubmatch(line)
|
|
if res == nil {
|
|
continue
|
|
}
|
|
switch key, val := res[1], res[2]; key {
|
|
case "SATA-1-0":
|
|
disk.Path = val
|
|
case "SATA-ImageUUID-1-0":
|
|
disk.UUID = val
|
|
}
|
|
}
|
|
if err := s.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return disk, nil
|
|
}
|
|
|
|
func getVMDiskInfo(name string) (*VirtualDisk, error) {
|
|
out, err := vbmOut("showvminfo", name, "--machinereadable")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
r := strings.NewReader(out)
|
|
return parseDiskInfo(r)
|
|
}
|