summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDuncan Mac-Vicar P <dmacvicar@suse.de>2016-02-28 11:56:22 +0100
committerDuncan Mac-Vicar P <dmacvicar@suse.de>2016-02-28 11:56:22 +0100
commit9f1ed1a812d9471f8ae2c2cb1f4ae1a1afa39255 (patch)
treee26617f81d84740b75dd2c81bbaec81c820a53a6
parentaede5ac6881c4ef8bffd9612faacc2af22dfa01a (diff)
downloadterraform-provider-libvirt-9f1ed1a812d9471f8ae2c2cb1f4ae1a1afa39255.tar
terraform-provider-libvirt-9f1ed1a812d9471f8ae2c2cb1f4ae1a1afa39255.tar.gz
implement memory and number of cpus
-rw-r--r--docs/providers/libvirt/r/domain.html.markdown7
-rw-r--r--libvirt/resource_libvirt_domain.go27
-rw-r--r--libvirt/resource_libvirt_domain_test.go35
3 files changed, 65 insertions, 4 deletions
diff --git a/docs/providers/libvirt/r/domain.html.markdown b/docs/providers/libvirt/r/domain.html.markdown
index 8abdf520..e9f2ab55 100644
--- a/docs/providers/libvirt/r/domain.html.markdown
+++ b/docs/providers/libvirt/r/domain.html.markdown
@@ -24,4 +24,9 @@ resource "libvirt_domain" "default" {
The following arguments are supported:
* `name` - (Required) A unique name for the resource, required by libvirt.
- Changing this forces a new resource to be created.
+ Changing this forces a new resource to be created.
+* `memory` - (Optional) The amount of memory in MiB. If not specified the domain will be
+ created with 512 MiB of memory
+ be used.
+* `vcpu` - (Optional) The amount of virtual CPUs. If not specified, a single CPU will be created.
+
diff --git a/libvirt/resource_libvirt_domain.go b/libvirt/resource_libvirt_domain.go
index 2efb6826..3df00be1 100644
--- a/libvirt/resource_libvirt_domain.go
+++ b/libvirt/resource_libvirt_domain.go
@@ -16,6 +16,7 @@ type defDomain struct {
Type string `xml:"type,attr"`
Os defOs `xml:"os"`
Memory defMemory `xml:"memory"`
+ VCpu defVCpu `xml:"vcpu"`
}
type defOs struct {
@@ -30,7 +31,12 @@ type defOsType struct {
type defMemory struct {
Unit string `xml:"unit,attr"`
- Amount uint `xml:"chardata"`
+ Amount int `xml:"chardata"`
+}
+
+type defVCpu struct {
+ Placement string `xml:"unit,attr"`
+ Amount int `xml:"chardata"`
}
func resourceLibvirtDomain() *schema.Resource {
@@ -44,6 +50,17 @@ func resourceLibvirtDomain() *schema.Resource {
Type: schema.TypeString,
Required: true,
},
+ "vcpu": &schema.Schema{
+ Type: schema.TypeInt,
+ Optional: true,
+ Default: 1,
+ },
+
+ "memory": &schema.Schema{
+ Type: schema.TypeInt,
+ Optional: true,
+ Default: 512,
+ },
},
}
}
@@ -65,8 +82,12 @@ func resourceLibvirtDomainCreate(d *schema.ResourceData, meta interface{}) error
},
},
Memory: defMemory{
- Unit: "KiB",
- Amount: 524288,
+ Unit: "MiB",
+ Amount: d.Get("memory").(int),
+ },
+ VCpu: defVCpu{
+ Placement: "static",
+ Amount: d.Get("vcpu").(int),
},
}
diff --git a/libvirt/resource_libvirt_domain_test.go b/libvirt/resource_libvirt_domain_test.go
index 61bab3b6..b3219d32 100644
--- a/libvirt/resource_libvirt_domain_test.go
+++ b/libvirt/resource_libvirt_domain_test.go
@@ -23,6 +23,34 @@ func TestAccLibvirtDomain_Basic(t *testing.T) {
testAccCheckLibvirtDomainExists("libvirt_domain.terraform-acceptance-test-1", &domain),
resource.TestCheckResourceAttr(
"libvirt_domain.terraform-acceptance-test-1", "name", "terraform-test"),
+ resource.TestCheckResourceAttr(
+ "libvirt_domain.terraform-acceptance-test-1", "memory", "512"),
+ resource.TestCheckResourceAttr(
+ "libvirt_domain.terraform-acceptance-test-1", "vcpu", "1"),
+ ),
+ },
+ },
+ })
+}
+
+func TestAccLibvirtDomain_Detailed(t *testing.T) {
+ var domain libvirt.VirDomain
+
+ resource.Test(t, resource.TestCase{
+ PreCheck: func() { testAccPreCheck(t) },
+ Providers: testAccProviders,
+ CheckDestroy: testAccCheckLibvirtDomainDestroy,
+ Steps: []resource.TestStep{
+ resource.TestStep{
+ Config: testAccCheckLibvirtDomainConfig_detailed,
+ Check: resource.ComposeTestCheckFunc(
+ testAccCheckLibvirtDomainExists("libvirt_domain.terraform-acceptance-test-2", &domain),
+ resource.TestCheckResourceAttr(
+ "libvirt_domain.terraform-acceptance-test-2", "name", "terraform-test"),
+ resource.TestCheckResourceAttr(
+ "libvirt_domain.terraform-acceptance-test-2", "memory", "384"),
+ resource.TestCheckResourceAttr(
+ "libvirt_domain.terraform-acceptance-test-2", "vcpu", "2"),
),
},
},
@@ -98,3 +126,10 @@ resource "libvirt_domain" "terraform-acceptance-test-1" {
name = "terraform-test"
}
`
+const testAccCheckLibvirtDomainConfig_detailed = `
+resource "libvirt_domain" "terraform-acceptance-test-2" {
+ name = "terraform-test"
+ memory = 384
+ vcpu = 2
+}
+`