diff --git a/README.md b/README.md index fb0be03..5186c9d 100644 --- a/README.md +++ b/README.md @@ -136,6 +136,14 @@ resource "proxmox_vm_qemu" "prepprovision-test" { bootdisk = "virtio0" # HA, you need to use a shared disk for this feature (ex: rbd) hastate = "" + + #Display + vga { + type = "std" + #Between 4 and 512, ignored if type is defined to serial + memory = 4 + } + network { id = 0 model = "virtio" diff --git a/go.mod b/go.mod index 07af15c..d4aad44 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,6 @@ module github.com/Telmate/terraform-provider-proxmox go 1.13 require ( - github.com/Telmate/proxmox-api-go v0.0.0-20191211195942-8274aed79394 + github.com/Telmate/proxmox-api-go v0.0.0-20191217000250-7338ae30b9b0 github.com/hashicorp/terraform v0.12.10 ) diff --git a/go.sum b/go.sum index 83dd200..c3c126c 100644 --- a/go.sum +++ b/go.sum @@ -15,16 +15,8 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ChrisTrenkamp/goxpath v0.0.0-20170922090931-c385f95c6022 h1:y8Gs8CzNfDF5AZvjr+5UyGQvQEBL7pwo+v+wX6q9JI8= github.com/ChrisTrenkamp/goxpath v0.0.0-20170922090931-c385f95c6022/go.mod h1:nuWgzSkT5PnyOd+272uUmV0dnAnAn42Mk7PiQC5VzN4= -github.com/Telmate/proxmox-api-go v0.0.0-20191014161547-75a2e0ff0773 h1:DZbCgi+04kVDvo72U+Zazf00VQXt8J2bBn6iuQ1mYUU= -github.com/Telmate/proxmox-api-go v0.0.0-20191014161547-75a2e0ff0773/go.mod h1:OGWyIMJ87/k/GCz8CGiWB2HOXsOVDM6Lpe/nFPkC4IQ= -github.com/Telmate/proxmox-api-go v0.0.0-20191104165655-ab21e7f8ad14 h1:5YRnEl50jAmeO/kZ/LJN/q3oPoXYcCD/IUGZfog5yN8= -github.com/Telmate/proxmox-api-go v0.0.0-20191104165655-ab21e7f8ad14/go.mod h1:OGWyIMJ87/k/GCz8CGiWB2HOXsOVDM6Lpe/nFPkC4IQ= -github.com/Telmate/proxmox-api-go v0.0.0-20191202165429-ba1b7dd050aa h1:Ypr/7Agl67RX/6iQ3fW+tHJPul14xFwttXC0d5xNdxg= -github.com/Telmate/proxmox-api-go v0.0.0-20191202165429-ba1b7dd050aa/go.mod h1:OGWyIMJ87/k/GCz8CGiWB2HOXsOVDM6Lpe/nFPkC4IQ= -github.com/Telmate/proxmox-api-go v0.0.0-20191206171242-991c5ce7826d h1:OPRNmtQcU2EvGndXfW+G/rg3DYAxSoyHbWGCdG48Vg0= -github.com/Telmate/proxmox-api-go v0.0.0-20191206171242-991c5ce7826d/go.mod h1:OGWyIMJ87/k/GCz8CGiWB2HOXsOVDM6Lpe/nFPkC4IQ= -github.com/Telmate/proxmox-api-go v0.0.0-20191211195942-8274aed79394 h1:Alx7LVwIL9AyOLsxPmseNDlWNS8wlfUF4bgv6mAcUD0= -github.com/Telmate/proxmox-api-go v0.0.0-20191211195942-8274aed79394/go.mod h1:OGWyIMJ87/k/GCz8CGiWB2HOXsOVDM6Lpe/nFPkC4IQ= +github.com/Telmate/proxmox-api-go v0.0.0-20191217000250-7338ae30b9b0 h1:nESOoKXlWq5ontBddqvZVUsEtFusVUYMUUtdwRZ1QwI= +github.com/Telmate/proxmox-api-go v0.0.0-20191217000250-7338ae30b9b0/go.mod h1:OGWyIMJ87/k/GCz8CGiWB2HOXsOVDM6Lpe/nFPkC4IQ= github.com/Unknwon/com v0.0.0-20151008135407-28b053d5a292/go.mod h1:KYCjqMOeHpNuTOiFQU6WEcTG7poCJrUs0YgyHNtn1no= github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af/go.mod h1:5Jv4cbFiHJMsVxt52+i0Ha45fjshj6wxYr1r19tB9bw= github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= diff --git a/proxmox/resource_vm_qemu.go b/proxmox/resource_vm_qemu.go index 3893422..75eff17 100644 --- a/proxmox/resource_vm_qemu.go +++ b/proxmox/resource_vm_qemu.go @@ -136,6 +136,23 @@ func resourceVmQemu() *schema.Resource { Optional: true, Default: "", }, + "vga": &schema.Schema{ + Type: schema.TypeSet, + Optional: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "type": { + Type: schema.TypeString, + Optional: true, + Default: "std", + }, + "memory": { + Type: schema.TypeInt, + Optional: true, + }, + }, + }, + }, "network": &schema.Schema{ Type: schema.TypeSet, Optional: true, @@ -468,6 +485,8 @@ func resourceVmQemuCreate(d *schema.ResourceData, meta interface{}) error { pmParallelBegin(pconf) client := pconf.Client vmName := d.Get("name").(string) + vga := d.Get("vga").(*schema.Set) + qemuVgaList := vga.List() networks := d.Get("network").(*schema.Set) qemuNetworks := DevicesSetToMap(networks) disks := d.Get("disk").(*schema.Set) @@ -515,6 +534,9 @@ func resourceVmQemuCreate(d *schema.ResourceData, meta interface{}) error { QemuVlanTag: d.Get("vlan").(int), QemuMacAddr: d.Get("mac").(string), } + if len(qemuVgaList) > 0 { + config.QemuVga = qemuVgaList[0].(map[string]interface{}) + } log.Print("[DEBUG] checking for duplicate name") dupVmr, _ := client.GetVmRefByName(vmName) @@ -650,6 +672,8 @@ func resourceVmQemuUpdate(d *schema.ResourceData, meta interface{}) error { } configDisksSet := d.Get("disk").(*schema.Set) qemuDisks := DevicesSetToMap(configDisksSet) + vga := d.Get("vga").(*schema.Set) + qemuVgaList := vga.List() configNetworksSet := d.Get("network").(*schema.Set) qemuNetworks := DevicesSetToMap(configNetworksSet) serials := d.Get("serial").(*schema.Set) @@ -707,6 +731,9 @@ func resourceVmQemuUpdate(d *schema.ResourceData, meta interface{}) error { QemuVlanTag: d.Get("vlan").(int), QemuMacAddr: d.Get("mac").(string), } + if len(qemuVgaList) > 0 { + config.QemuVga = qemuVgaList[0].(map[string]interface{}) + } err = config.UpdateConfig(vmr, client) if err != nil { @@ -799,6 +826,11 @@ func resourceVmQemuRead(d *schema.ResourceData, meta interface{}) error { configDisksSet := d.Get("disk").(*schema.Set) activeDisksSet := UpdateDevicesSet(configDisksSet, config.QemuDisks) d.Set("disk", activeDisksSet) + // Display. + activeVgaSet := d.Get("vga").(*schema.Set) + if len(activeVgaSet.List()) > 0 { + d.Set("features", UpdateDeviceConfDefaults(config.QemuVga, activeVgaSet)) + } // Networks. configNetworksSet := d.Get("network").(*schema.Set) activeNetworksSet := UpdateDevicesSet(configNetworksSet, config.QemuNetworks)