Add extra logging to VirtualBox driver

Signed-off-by: Nathan LeClaire <nathan.leclaire@gmail.com>
This commit is contained in:
Nathan LeClaire 2015-12-18 18:44:14 -08:00 committed by David Gageot
parent 352d28220c
commit 54bda622d3
1 changed files with 22 additions and 0 deletions

View File

@ -661,6 +661,9 @@ func (d *Driver) generateDiskImage(size int) error {
// magicString first so the automount script knows to format the disk
file := &tar.Header{Name: magicString, Size: int64(len(magicString))}
log.Debug("Writing magic tar header")
if err := tw.WriteHeader(file); err != nil {
return err
}
@ -672,6 +675,9 @@ func (d *Driver) generateDiskImage(size int) error {
if err := tw.WriteHeader(file); err != nil {
return err
}
log.Debug("Writing SSH key tar header")
pubKey, err := ioutil.ReadFile(d.publicSSHKeyPath())
if err != nil {
return err
@ -694,6 +700,9 @@ func (d *Driver) generateDiskImage(size int) error {
return err
}
raw := bytes.NewReader(buf.Bytes())
log.Debug("Calling inner createDiskImage")
return createDiskImage(d.diskPath(), size, raw)
}
@ -765,6 +774,8 @@ func createDiskImage(dest string, size int, r io.Reader) error {
cmd := exec.Command(vboxManageCmd, "convertfromraw", "stdin", dest,
fmt.Sprintf("%d", sizeBytes), "--format", "VMDK")
log.Debug(cmd)
if os.Getenv("MACHINE_DEBUG") != "" {
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
@ -774,15 +785,22 @@ func createDiskImage(dest string, size int, r io.Reader) error {
if err != nil {
return err
}
log.Debug("Starting command")
if err := cmd.Start(); err != nil {
return err
}
log.Debug("Copying to stdin")
n, err := io.Copy(stdin, r)
if err != nil {
return err
}
log.Debug("Filling zeroes")
// The total number of bytes written to stdin must match sizeBytes, or
// VBoxManage.exe on Windows will fail. Fill remaining with zeros.
if left := sizeBytes - n; left > 0 {
@ -791,11 +809,15 @@ func createDiskImage(dest string, size int, r io.Reader) error {
}
}
log.Debug("Closing STDIN")
// cmd won't exit until the stdin is closed.
if err := stdin.Close(); err != nil {
return err
}
log.Debug("Waiting on cmd")
return cmd.Wait()
}