summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlavio Castelli <flavio@castelli.name>2017-06-05 10:12:56 +0200
committerGitHub <noreply@github.com>2017-06-05 10:12:56 +0200
commit5d329c49c00026995e430db63644be7f08c1bb57 (patch)
tree1bba877887c891fa7c3d9d7da3dc94f10db62f60
parent8aab6118f495e72905a6961672156d49221679aa (diff)
parent392b153595f220abef45da262ec4ffab4fcb969a (diff)
downloadterraform-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.go21
-rw-r--r--libvirt/coreos_ignition_def.go24
-rw-r--r--libvirt/resource_libvirt_volume.go22
-rw-r--r--libvirt/utils_volume.go22
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
+}