implement directory fix for lxc file uploads
This commit is contained in:
parent
8452ca898c
commit
93bddb3e65
|
@ -71,6 +71,24 @@ func (c *LxcAttachCommunicator) Upload(dst string, r io.Reader, fi *os.FileInfo)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if fi != nil {
|
||||||
|
tfDir := filepath.Dir(tf.Name())
|
||||||
|
// rename tempfile to match original file name. This makes sure that if file is being
|
||||||
|
// moved into a directory, the filename is preserved instead of a temp name.
|
||||||
|
adjustedTempName := filepath.Join(tfDir, (*fi).Name())
|
||||||
|
mvCmd, err := c.CmdWrapper(fmt.Sprintf("sudo mv %s %s", tf.Name(), adjustedTempName))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer os.Remove(adjustedTempName)
|
||||||
|
exitStatus := ShellCommand(mvCmd).Run()
|
||||||
|
// change cpCmd to use new file name as source
|
||||||
|
cpCmd, err = c.CmdWrapper(fmt.Sprintf("sudo cp %s %s", adjustedTempName, dst))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
log.Printf("Running copy command: %s", dst)
|
log.Printf("Running copy command: %s", dst)
|
||||||
|
|
||||||
return ShellCommand(cpCmd).Run()
|
return ShellCommand(cpCmd).Run()
|
||||||
|
|
|
@ -550,8 +550,6 @@ func (c *comm) scpUploadSession(path string, input io.Reader, fi *os.FileInfo) e
|
||||||
target_file = filepath.Base((*fi).Name())
|
target_file = filepath.Base((*fi).Name())
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("target_file was %s", target_file)
|
|
||||||
|
|
||||||
// On windows, filepath.Dir uses backslash seperators (ie. "\tmp").
|
// On windows, filepath.Dir uses backslash seperators (ie. "\tmp").
|
||||||
// This does not work when the target host is unix. Switch to forward slash
|
// This does not work when the target host is unix. Switch to forward slash
|
||||||
// which works for unix and windows
|
// which works for unix and windows
|
||||||
|
|
Loading…
Reference in New Issue