Merge pull request #130 from V-Paranoiaque/feature/display

Add support to configure the display
This commit is contained in:
Grant Gongaware 2019-12-18 16:30:10 -08:00 committed by GitHub
commit 7af54b3649
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 43 additions and 11 deletions

View File

@ -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"

2
go.mod
View File

@ -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
)

12
go.sum
View File

@ -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=

View File

@ -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)