diff options
author | Flavio Castelli <flavio@castelli.name> | 2017-06-05 10:12:56 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-05 10:12:56 +0200 |
commit | 5d329c49c00026995e430db63644be7f08c1bb57 (patch) | |
tree | 1bba877887c891fa7c3d9d7da3dc94f10db62f60 | |
parent | 8aab6118f495e72905a6961672156d49221679aa (diff) | |
parent | 392b153595f220abef45da262ec4ffab4fcb969a (diff) | |
download | terraform-provider-libvirt-5d329c49c00026995e430db63644be7f08c1bb57.tar terraform-provider-libvirt-5d329c49c00026995e430db63644be7f08c1bb57.tar.gz |
Merge pull request #129 from dmacvicar/fix-build
Fix build
-rw-r--r-- | libvirt/cloudinit_def.go | 21 | ||||
-rw-r--r-- | libvirt/coreos_ignition_def.go | 24 | ||||
-rw-r--r-- | libvirt/resource_libvirt_volume.go | 22 | ||||
-rw-r--r-- | libvirt/utils_volume.go | 22 |
4 files changed, 33 insertions, 56 deletions
diff --git a/libvirt/cloudinit_def.go b/libvirt/cloudinit_def.go index bdba94bc..ed91b57e 100644 --- a/libvirt/cloudinit_def.go +++ b/libvirt/cloudinit_def.go @@ -108,26 +108,9 @@ func (ci *defCloudInit) CreateAndUpload(virConn *libvirt.VirConnection) (string, defer volume.Free() // upload ISO file - copier := func(src io.Reader) error { - stream, err := libvirt.NewVirStream(virConn, 0) - if err != nil { - return err - } - defer stream.Close() - - volume.Upload(stream, 0, uint64(size), 0) - - n, err := io.Copy(stream, src) - if err != nil { - return fmt.Errorf("Error while downloading %s: %s", img.String(), err) - } - log.Printf("%d bytes uploaded\n", n) - return nil - } - - err = img.Import(copier, volumeDef) + err = img.Import(newCopier(virConn, volume, uint64(size)), volumeDef) if err != nil { - return "", err + return "", fmt.Errorf("Error while uploading cloudinit %s: %s", img.String(), err) } key, err := volume.GetKey() diff --git a/libvirt/coreos_ignition_def.go b/libvirt/coreos_ignition_def.go index 216075f2..da510cdc 100644 --- a/libvirt/coreos_ignition_def.go +++ b/libvirt/coreos_ignition_def.go @@ -1,8 +1,8 @@ package libvirt import ( - "encoding/xml" "encoding/json" + "encoding/xml" "fmt" "io" "io/ioutil" @@ -15,9 +15,9 @@ import ( ) type defIgnition struct { - Name string - PoolName string - Content string + Name string + PoolName string + Content string } // Creates a new cloudinit with the defaults @@ -88,16 +88,9 @@ func (ign *defIgnition) CreateAndUpload(virConn *libvirt.VirConnection) (string, defer volume.Free() // upload ignition file - stream, err := libvirt.NewVirStream(virConn, 0) - if err != nil { - return "", err - } - defer stream.Close() - - volume.Upload(stream, 0, uint64(volumeDef.Capacity.Amount), 0) - err = img.WriteToStream(stream) + err = img.Import(newCopier(virConn, volume, volumeDef.Capacity.Amount), volumeDef) if err != nil { - return "", err + return "", fmt.Errorf("Error while uploading ignition file %s: %s", img.String(), err) } key, err := volume.GetKey() @@ -123,7 +116,6 @@ func getIgnitionVolumeKeyFromTerraformID(id string) (string, error) { return s[0], nil } - // Dumps the Ignition object - either generated by Terraform or supplied as a file - // to a temporary ignition file func (ign *defIgnition) createFile() (string, error) { @@ -148,7 +140,7 @@ func (ign *defIgnition) createFile() (string, error) { if !file { if _, err := tempFile.WriteString(ign.Content); err != nil { - return "", fmt.Errorf("Cannot write Ignition object to temporary "+ + return "", fmt.Errorf("Cannot write Ignition object to temporary " + "ignition file") } } else if file { @@ -196,7 +188,5 @@ func newIgnitionDefFromRemoteVol(virConn *libvirt.VirConnection, id string) (def return ign, fmt.Errorf("Error retrieving pool name: %s", err) } - return ign, nil } - diff --git a/libvirt/resource_libvirt_volume.go b/libvirt/resource_libvirt_volume.go index 5c0337b2..5a527b3d 100644 --- a/libvirt/resource_libvirt_volume.go +++ b/libvirt/resource_libvirt_volume.go @@ -3,7 +3,6 @@ package libvirt import ( "encoding/xml" "fmt" - "io" "log" "net/http" "strconv" @@ -245,26 +244,9 @@ func resourceLibvirtVolumeCreate(d *schema.ResourceData, meta interface{}) error // upload source if present if _, ok := d.GetOk("source"); ok { - copier := func(src io.Reader) error { - stream, err := libvirt.NewVirStream(virConn, 0) - if err != nil { - return err - } - defer stream.Close() - - volume.Upload(stream, 0, volumeDef.Capacity.Amount, 0) - - n, err := io.Copy(stream, src) - if err != nil { - return fmt.Errorf("Error while downloading %s: %s", img.String(), err) - } - log.Printf("%d bytes uploaded\n", n) - return nil - } - - err = img.Import(copier, volumeDef) + err = img.Import(newCopier(virConn, *volume, volumeDef.Capacity.Amount), volumeDef) if err != nil { - return err + return fmt.Errorf("Error while uploading source %s: %s", img.String(), err) } } 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 +} |