diff options
Diffstat (limited to 'libvirt/utils_volume.go')
-rw-r--r-- | libvirt/utils_volume.go | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/libvirt/utils_volume.go b/libvirt/utils_volume.go index 594d1f68..67418985 100644 --- a/libvirt/utils_volume.go +++ b/libvirt/utils_volume.go @@ -9,6 +9,8 @@ import ( "os" "strconv" "strings" + + libvirt "github.com/dmacvicar/libvirt-go" ) // network transparent image @@ -131,3 +133,23 @@ func newImage(source string) (image, error) { return nil, fmt.Errorf("Don't know how to read from '%s': %s", url.String(), err) } } + +func newCopier(virConn *libvirt.VirConnection, volume libvirt.VirStorageVol, size uint64) func(src io.Reader) error { + copier := func(src io.Reader) error { + stream, err := libvirt.NewVirStream(virConn, 0) + if err != nil { + return err + } + defer stream.Close() + + volume.Upload(stream, 0, size, 0) + + n, err := io.Copy(stream, src) + if err != nil { + return err + } + log.Printf("%d bytes uploaded\n", n) + return nil + } + return copier +} |