diff options
-rw-r--r-- | .travis.yml | 2 | ||||
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | libvirt/config.go | 4 | ||||
-rw-r--r-- | libvirt/disk_def_test.go | 41 | ||||
-rw-r--r-- | libvirt/domain_def.go | 1 | ||||
-rw-r--r-- | libvirt/domain_def_test.go | 27 | ||||
-rw-r--r-- | libvirt/network_def_test.go | 12 | ||||
-rw-r--r-- | libvirt/provider_test.go | 4 | ||||
-rw-r--r-- | libvirt/resource_cloud_init.go | 3 | ||||
-rw-r--r-- | libvirt/resource_libvirt_domain.go | 4 | ||||
-rw-r--r-- | libvirt/resource_libvirt_domain_console.go | 8 | ||||
-rw-r--r-- | libvirt/resource_libvirt_domain_test.go | 16 | ||||
-rw-r--r-- | libvirt/resource_libvirt_network.go | 2 | ||||
-rw-r--r-- | libvirt/resource_libvirt_volume.go | 7 | ||||
-rw-r--r-- | libvirt/resource_libvirt_volume_test.go | 6 | ||||
-rw-r--r-- | libvirt/utils_libvirt_test.go | 32 | ||||
-rw-r--r-- | libvirt/utils_net_test.go | 19 | ||||
-rw-r--r-- | libvirt/volume_def_test.go | 27 |
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 @@ -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()) +} |