summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml2
-rw-r--r--README.md2
-rw-r--r--libvirt/config.go4
-rw-r--r--libvirt/disk_def_test.go41
-rw-r--r--libvirt/domain_def.go1
-rw-r--r--libvirt/domain_def_test.go27
-rw-r--r--libvirt/network_def_test.go12
-rw-r--r--libvirt/provider_test.go4
-rw-r--r--libvirt/resource_cloud_init.go3
-rw-r--r--libvirt/resource_libvirt_domain.go4
-rw-r--r--libvirt/resource_libvirt_domain_console.go8
-rw-r--r--libvirt/resource_libvirt_domain_test.go16
-rw-r--r--libvirt/resource_libvirt_network.go2
-rw-r--r--libvirt/resource_libvirt_volume.go7
-rw-r--r--libvirt/resource_libvirt_volume_test.go6
-rw-r--r--libvirt/utils_libvirt_test.go32
-rw-r--r--libvirt/utils_net_test.go19
-rw-r--r--libvirt/volume_def_test.go27
18 files changed, 193 insertions, 24 deletions
diff --git a/.travis.yml b/.travis.yml
index ea6cbb38..687158cf 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -17,6 +17,7 @@ before_install:
- sudo make install
- sudo libvirtd -d
- popd
+ - go get github.com/mattn/goveralls
- go get -u github.com/govend/govend
- govend -v
@@ -28,3 +29,4 @@ install:
# code
script:
- go test ./libvirt
+ - $HOME/gopath/bin/goveralls -service=travis-ci
diff --git a/README.md b/README.md
index 09828930..3be95338 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# Terraform provider for libvirt
-![alpha](https://img.shields.io/badge/stability%3F-beta-yellow.svg) [![Build Status](https://travis-ci.org/dmacvicar/terraform-provider-libvirt.svg?branch=master)](https://travis-ci.org/dmacvicar/terraform-provider-libvirt)
+![alpha](https://img.shields.io/badge/stability%3F-beta-yellow.svg) [![Build Status](https://travis-ci.org/dmacvicar/terraform-provider-libvirt.svg?branch=master)](https://travis-ci.org/dmacvicar/terraform-provider-libvirt) [![Coverage Status](https://coveralls.io/repos/github/dmacvicar/terraform-provider-libvirt/badge.svg?branch=master)](https://coveralls.io/github/dmacvicar/terraform-provider-libvirt?branch=master)
This provider is still being actively developed. To see what is left or planned, see the [issues list](https://github.com/dmacvicar/terraform-provider-libvirt/issues).
diff --git a/libvirt/config.go b/libvirt/config.go
index 6217ad0a..4639491d 100644
--- a/libvirt/config.go
+++ b/libvirt/config.go
@@ -1,9 +1,9 @@
package libvirt
import (
- //libvirt "gopkg.in/alexzorin/libvirt-go.v2"
- libvirt "github.com/dmacvicar/libvirt-go"
"log"
+
+ libvirt "github.com/dmacvicar/libvirt-go"
)
type Config struct {
diff --git a/libvirt/disk_def_test.go b/libvirt/disk_def_test.go
new file mode 100644
index 00000000..c27c9b64
--- /dev/null
+++ b/libvirt/disk_def_test.go
@@ -0,0 +1,41 @@
+package libvirt
+
+import (
+ "bytes"
+ "encoding/xml"
+ "testing"
+
+ "github.com/davecgh/go-spew/spew"
+)
+
+func init() {
+ spew.Config.Indent = "\t"
+}
+
+func TestDefaultDiskMarshall(t *testing.T) {
+ b := newDefDisk()
+ prettyB := spew.Sdump(b)
+ t.Logf("Parsed default disk:\n%s", prettyB)
+
+ buf := new(bytes.Buffer)
+ enc := xml.NewEncoder(buf)
+ enc.Indent(" ", " ")
+ if err := enc.Encode(b); err != nil {
+ t.Fatalf("could not marshall this:\n%s", spew.Sdump(b))
+ }
+ t.Logf("Marshalled default disk:\n%s", buf.String())
+}
+
+func TestDefaultCDROMMarshall(t *testing.T) {
+ b := newCDROM()
+ prettyB := spew.Sdump(b)
+ t.Logf("Parsed default cdrom:\n%s", prettyB)
+
+ buf := new(bytes.Buffer)
+ enc := xml.NewEncoder(buf)
+ enc.Indent(" ", " ")
+ if err := enc.Encode(b); err != nil {
+ t.Fatalf("could not marshall this:\n%s", spew.Sdump(b))
+ }
+ t.Logf("Marshalled default cdrom:\n%s", buf.String())
+}
diff --git a/libvirt/domain_def.go b/libvirt/domain_def.go
index 46dadaaf..3920c979 100644
--- a/libvirt/domain_def.go
+++ b/libvirt/domain_def.go
@@ -144,4 +144,3 @@ func newDomainDef() defDomain {
return domainDef
}
-
diff --git a/libvirt/domain_def_test.go b/libvirt/domain_def_test.go
new file mode 100644
index 00000000..9d0eee75
--- /dev/null
+++ b/libvirt/domain_def_test.go
@@ -0,0 +1,27 @@
+package libvirt
+
+import (
+ "bytes"
+ "encoding/xml"
+ "testing"
+
+ "github.com/davecgh/go-spew/spew"
+)
+
+func init() {
+ spew.Config.Indent = "\t"
+}
+
+func TestDefaultDomainMarshall(t *testing.T) {
+ b := newDomainDef()
+ prettyB := spew.Sdump(b)
+ t.Logf("Parsed default domain:\n%s", prettyB)
+
+ buf := new(bytes.Buffer)
+ enc := xml.NewEncoder(buf)
+ enc.Indent(" ", " ")
+ if err := enc.Encode(b); err != nil {
+ t.Fatalf("could not marshall this:\n%s", spew.Sdump(b))
+ }
+ t.Logf("Marshalled default domain:\n%s", buf.String())
+}
diff --git a/libvirt/network_def_test.go b/libvirt/network_def_test.go
index cd2048c7..d84c3ce8 100644
--- a/libvirt/network_def_test.go
+++ b/libvirt/network_def_test.go
@@ -91,3 +91,15 @@ func TestNetworkDefUnmarshall(t *testing.T) {
t.Logf("Marshalled:\n%s", bs)
}
}
+
+func TestBrokenNetworkDefUnmarshall(t *testing.T) {
+ // Try unmarshalling some broken xml
+ text := `
+ <network>
+ `
+
+ _, err := newDefNetworkFromXML(text)
+ if err == nil {
+ t.Error("Unmarshal was supposed to fail")
+ }
+}
diff --git a/libvirt/provider_test.go b/libvirt/provider_test.go
index c130f86b..ddfe45fe 100644
--- a/libvirt/provider_test.go
+++ b/libvirt/provider_test.go
@@ -4,9 +4,9 @@ import (
"os"
"testing"
+ ignition "github.com/hashicorp/terraform/builtin/providers/ignition"
"github.com/hashicorp/terraform/helper/schema"
"github.com/hashicorp/terraform/terraform"
- ignition "github.com/hashicorp/terraform/builtin/providers/ignition"
)
var testAccProviders map[string]terraform.ResourceProvider
@@ -15,7 +15,7 @@ var testAccProvider *schema.Provider
func init() {
testAccProvider = Provider().(*schema.Provider)
testAccProviders = map[string]terraform.ResourceProvider{
- "libvirt": testAccProvider,
+ "libvirt": testAccProvider,
"ignition": ignition.Provider(),
}
}
diff --git a/libvirt/resource_cloud_init.go b/libvirt/resource_cloud_init.go
index 5f14e354..f9b7be57 100644
--- a/libvirt/resource_cloud_init.go
+++ b/libvirt/resource_cloud_init.go
@@ -2,8 +2,9 @@ package libvirt
import (
"fmt"
- "github.com/hashicorp/terraform/helper/schema"
"log"
+
+ "github.com/hashicorp/terraform/helper/schema"
)
func resourceCloudInit() *schema.Resource {
diff --git a/libvirt/resource_libvirt_domain.go b/libvirt/resource_libvirt_domain.go
index 00bbaf19..ffe32d43 100644
--- a/libvirt/resource_libvirt_domain.go
+++ b/libvirt/resource_libvirt_domain.go
@@ -1,6 +1,8 @@
package libvirt
import (
+ "crypto/sha256"
+ "encoding/hex"
"encoding/json"
"encoding/xml"
"fmt"
@@ -10,8 +12,6 @@ import (
"strings"
"time"
- "crypto/sha256"
- "encoding/hex"
"github.com/davecgh/go-spew/spew"
libvirt "github.com/dmacvicar/libvirt-go"
"github.com/hashicorp/terraform/helper/schema"
diff --git a/libvirt/resource_libvirt_domain_console.go b/libvirt/resource_libvirt_domain_console.go
index eadb4483..6159a82a 100644
--- a/libvirt/resource_libvirt_domain_console.go
+++ b/libvirt/resource_libvirt_domain_console.go
@@ -7,25 +7,25 @@ import (
func consoleSchema() map[string]*schema.Schema {
return map[string]*schema.Schema{
"type": &schema.Schema{
- Type: schema.TypeString,
+ Type: schema.TypeString,
Optional: false,
Required: true,
ForceNew: true,
},
"source_path": &schema.Schema{
- Type: schema.TypeString,
+ Type: schema.TypeString,
Optional: true,
Required: false,
ForceNew: true,
},
"target_port": &schema.Schema{
- Type: schema.TypeString,
+ Type: schema.TypeString,
Optional: false,
Required: true,
ForceNew: true,
},
"target_type": &schema.Schema{
- Type: schema.TypeString,
+ Type: schema.TypeString,
Optional: true,
Required: false,
ForceNew: true,
diff --git a/libvirt/resource_libvirt_domain_test.go b/libvirt/resource_libvirt_domain_test.go
index 6749283c..f942595b 100644
--- a/libvirt/resource_libvirt_domain_test.go
+++ b/libvirt/resource_libvirt_domain_test.go
@@ -1,15 +1,14 @@
package libvirt
import (
+ "encoding/xml"
"fmt"
"log"
"testing"
+ libvirt "github.com/dmacvicar/libvirt-go"
"github.com/hashicorp/terraform/helper/resource"
"github.com/hashicorp/terraform/terraform"
- //"gopkg.in/alexzorin/libvirt-go.v2"
- "encoding/xml"
- libvirt "github.com/dmacvicar/libvirt-go"
)
func TestAccLibvirtDomain_Basic(t *testing.T) {
@@ -236,7 +235,7 @@ func TestAccLibvirtDomain_IgnitionObject(t *testing.T) {
CheckDestroy: testAccCheckLibvirtDomainDestroy,
Steps: []resource.TestStep{
resource.TestStep{
- Config: config,
+ Config: config,
ExpectNonEmptyPlan: true,
Check: resource.ComposeTestCheckFunc(
testAccCheckLibvirtDomainExists("libvirt_domain.acceptance-test-domain", &domain),
@@ -337,3 +336,12 @@ func testAccCheckIgnitionFileNameExists(domain *libvirt.VirDomain) resource.Test
return nil
}
}
+
+func TestHash(t *testing.T) {
+ actual := hash("this is a test")
+ expected := "2e99758548972a8e8822ad47fa1017ff72f06f3ff6a016851f45c398732bc50c"
+
+ if actual != expected {
+ t.Errorf("Expected %s, got %s", expected, actual)
+ }
+}
diff --git a/libvirt/resource_libvirt_network.go b/libvirt/resource_libvirt_network.go
index 2d18f58f..dc48db57 100644
--- a/libvirt/resource_libvirt_network.go
+++ b/libvirt/resource_libvirt_network.go
@@ -336,7 +336,7 @@ func resourceLibvirtNetworkRead(d *schema.ResourceData, meta interface{}) error
d.Set("bridge", networkDef.Bridge.Name)
// Domain as won't be present for bridged networks
- if (networkDef.Domain != nil) {
+ if networkDef.Domain != nil {
d.Set("domain", networkDef.Domain.Name)
}
diff --git a/libvirt/resource_libvirt_volume.go b/libvirt/resource_libvirt_volume.go
index 68e0680b..c2042ddb 100644
--- a/libvirt/resource_libvirt_volume.go
+++ b/libvirt/resource_libvirt_volume.go
@@ -3,8 +3,6 @@ package libvirt
import (
"encoding/xml"
"fmt"
- libvirt "github.com/dmacvicar/libvirt-go"
- "github.com/hashicorp/terraform/helper/schema"
"io"
"log"
"net/http"
@@ -12,6 +10,9 @@ import (
"os"
"strconv"
"strings"
+
+ libvirt "github.com/dmacvicar/libvirt-go"
+ "github.com/hashicorp/terraform/helper/schema"
)
// network transparent image
@@ -378,7 +379,7 @@ func resourceLibvirtVolumeRead(d *schema.ResourceData, meta interface{}) error {
// attempt a new lookup
volume, err = virConn.LookupStorageVolByKey(d.Id())
if err != nil {
- return fmt.Errorf("Can't retrieve volume %s", d.Id())
+ return fmt.Errorf("Second attempt: Can't retrieve volume %s", d.Id())
}
}
defer volume.Free()
diff --git a/libvirt/resource_libvirt_volume_test.go b/libvirt/resource_libvirt_volume_test.go
index a039fa61..70424e06 100644
--- a/libvirt/resource_libvirt_volume_test.go
+++ b/libvirt/resource_libvirt_volume_test.go
@@ -2,11 +2,11 @@ package libvirt
import (
"fmt"
+ "testing"
+
+ libvirt "github.com/dmacvicar/libvirt-go"
"github.com/hashicorp/terraform/helper/resource"
"github.com/hashicorp/terraform/terraform"
- //"gopkg.in/alexzorin/libvirt-go.v2"
- libvirt "github.com/dmacvicar/libvirt-go"
- "testing"
)
func TestAccLibvirtVolume_Basic(t *testing.T) {
diff --git a/libvirt/utils_libvirt_test.go b/libvirt/utils_libvirt_test.go
new file mode 100644
index 00000000..d73e81f7
--- /dev/null
+++ b/libvirt/utils_libvirt_test.go
@@ -0,0 +1,32 @@
+package libvirt
+
+import (
+ "encoding/xml"
+ "testing"
+)
+
+func TestGetHostXMLDesc(t *testing.T) {
+ ip := "127.0.0.1"
+ mac := "XX:YY:ZZ"
+ name := "localhost"
+
+ data := getHostXMLDesc(ip, mac, name)
+
+ dd := defNetworkIpDhcpHost{}
+ err := xml.Unmarshal([]byte(data), &dd)
+ if err != nil {
+ t.Errorf("error %v", err)
+ }
+
+ if dd.Ip != ip {
+ t.Errorf("expected ip %s, got %s", ip, dd.Ip)
+ }
+
+ if dd.Mac != mac {
+ t.Errorf("expected mac %s, got %s", mac, dd.Mac)
+ }
+
+ if dd.Name != name {
+ t.Errorf("expected name %s, got %s", name, dd.Name)
+ }
+}
diff --git a/libvirt/utils_net_test.go b/libvirt/utils_net_test.go
new file mode 100644
index 00000000..036b3616
--- /dev/null
+++ b/libvirt/utils_net_test.go
@@ -0,0 +1,19 @@
+package libvirt
+
+import (
+ "net"
+ "testing"
+)
+
+func TestRandomMACAddress(t *testing.T) {
+ mac, err := RandomMACAddress()
+ if err != nil {
+ t.Errorf("unexpected error: %v", err)
+ }
+
+ _, err = net.ParseMAC(mac)
+
+ if err != nil {
+ t.Errorf("Invalid MAC address generated: %s - %v", mac, err)
+ }
+}
diff --git a/libvirt/volume_def_test.go b/libvirt/volume_def_test.go
new file mode 100644
index 00000000..6936154c
--- /dev/null
+++ b/libvirt/volume_def_test.go
@@ -0,0 +1,27 @@
+package libvirt
+
+import (
+ "bytes"
+ "encoding/xml"
+ "testing"
+
+ "github.com/davecgh/go-spew/spew"
+)
+
+func init() {
+ spew.Config.Indent = "\t"
+}
+
+func TestDefaultVolumeMarshall(t *testing.T) {
+ b := newDefVolume()
+ prettyB := spew.Sdump(b)
+ t.Logf("Parsed default volume:\n%s", prettyB)
+
+ buf := new(bytes.Buffer)
+ enc := xml.NewEncoder(buf)
+ enc.Indent(" ", " ")
+ if err := enc.Encode(b); err != nil {
+ t.Fatalf("could not marshall this:\n%s", spew.Sdump(b))
+ }
+ t.Logf("Marshalled default volume:\n%s", buf.String())
+}