diff options
-rw-r--r-- | docs/providers/libvirt/r/domain.html.markdown | 7 | ||||
-rw-r--r-- | libvirt/resource_libvirt_domain.go | 27 | ||||
-rw-r--r-- | libvirt/resource_libvirt_domain_test.go | 35 |
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 +} +` |