mirror of
https://github.com/letic/terraform-provider-proxmox.git
synced 2024-06-26 20:52:36 +00:00
Merge pull request #130 from V-Paranoiaque/feature/display
Add support to configure the display
This commit is contained in:
commit
7af54b3649
|
@ -136,6 +136,14 @@ resource "proxmox_vm_qemu" "prepprovision-test" {
|
||||||
bootdisk = "virtio0"
|
bootdisk = "virtio0"
|
||||||
# HA, you need to use a shared disk for this feature (ex: rbd)
|
# HA, you need to use a shared disk for this feature (ex: rbd)
|
||||||
hastate = ""
|
hastate = ""
|
||||||
|
|
||||||
|
#Display
|
||||||
|
vga {
|
||||||
|
type = "std"
|
||||||
|
#Between 4 and 512, ignored if type is defined to serial
|
||||||
|
memory = 4
|
||||||
|
}
|
||||||
|
|
||||||
network {
|
network {
|
||||||
id = 0
|
id = 0
|
||||||
model = "virtio"
|
model = "virtio"
|
||||||
|
|
2
go.mod
2
go.mod
|
@ -3,6 +3,6 @@ module github.com/Telmate/terraform-provider-proxmox
|
||||||
go 1.13
|
go 1.13
|
||||||
|
|
||||||
require (
|
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
|
github.com/hashicorp/terraform v0.12.10
|
||||||
)
|
)
|
||||||
|
|
12
go.sum
12
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/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 h1:y8Gs8CzNfDF5AZvjr+5UyGQvQEBL7pwo+v+wX6q9JI8=
|
||||||
github.com/ChrisTrenkamp/goxpath v0.0.0-20170922090931-c385f95c6022/go.mod h1:nuWgzSkT5PnyOd+272uUmV0dnAnAn42Mk7PiQC5VzN4=
|
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-20191217000250-7338ae30b9b0 h1:nESOoKXlWq5ontBddqvZVUsEtFusVUYMUUtdwRZ1QwI=
|
||||||
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-20191217000250-7338ae30b9b0/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/Unknwon/com v0.0.0-20151008135407-28b053d5a292/go.mod h1:KYCjqMOeHpNuTOiFQU6WEcTG7poCJrUs0YgyHNtn1no=
|
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/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=
|
github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
|
||||||
|
|
|
@ -136,6 +136,23 @@ func resourceVmQemu() *schema.Resource {
|
||||||
Optional: true,
|
Optional: true,
|
||||||
Default: "",
|
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{
|
"network": &schema.Schema{
|
||||||
Type: schema.TypeSet,
|
Type: schema.TypeSet,
|
||||||
Optional: true,
|
Optional: true,
|
||||||
|
@ -468,6 +485,8 @@ func resourceVmQemuCreate(d *schema.ResourceData, meta interface{}) error {
|
||||||
pmParallelBegin(pconf)
|
pmParallelBegin(pconf)
|
||||||
client := pconf.Client
|
client := pconf.Client
|
||||||
vmName := d.Get("name").(string)
|
vmName := d.Get("name").(string)
|
||||||
|
vga := d.Get("vga").(*schema.Set)
|
||||||
|
qemuVgaList := vga.List()
|
||||||
networks := d.Get("network").(*schema.Set)
|
networks := d.Get("network").(*schema.Set)
|
||||||
qemuNetworks := DevicesSetToMap(networks)
|
qemuNetworks := DevicesSetToMap(networks)
|
||||||
disks := d.Get("disk").(*schema.Set)
|
disks := d.Get("disk").(*schema.Set)
|
||||||
|
@ -515,6 +534,9 @@ func resourceVmQemuCreate(d *schema.ResourceData, meta interface{}) error {
|
||||||
QemuVlanTag: d.Get("vlan").(int),
|
QemuVlanTag: d.Get("vlan").(int),
|
||||||
QemuMacAddr: d.Get("mac").(string),
|
QemuMacAddr: d.Get("mac").(string),
|
||||||
}
|
}
|
||||||
|
if len(qemuVgaList) > 0 {
|
||||||
|
config.QemuVga = qemuVgaList[0].(map[string]interface{})
|
||||||
|
}
|
||||||
log.Print("[DEBUG] checking for duplicate name")
|
log.Print("[DEBUG] checking for duplicate name")
|
||||||
dupVmr, _ := client.GetVmRefByName(vmName)
|
dupVmr, _ := client.GetVmRefByName(vmName)
|
||||||
|
|
||||||
|
@ -650,6 +672,8 @@ func resourceVmQemuUpdate(d *schema.ResourceData, meta interface{}) error {
|
||||||
}
|
}
|
||||||
configDisksSet := d.Get("disk").(*schema.Set)
|
configDisksSet := d.Get("disk").(*schema.Set)
|
||||||
qemuDisks := DevicesSetToMap(configDisksSet)
|
qemuDisks := DevicesSetToMap(configDisksSet)
|
||||||
|
vga := d.Get("vga").(*schema.Set)
|
||||||
|
qemuVgaList := vga.List()
|
||||||
configNetworksSet := d.Get("network").(*schema.Set)
|
configNetworksSet := d.Get("network").(*schema.Set)
|
||||||
qemuNetworks := DevicesSetToMap(configNetworksSet)
|
qemuNetworks := DevicesSetToMap(configNetworksSet)
|
||||||
serials := d.Get("serial").(*schema.Set)
|
serials := d.Get("serial").(*schema.Set)
|
||||||
|
@ -707,6 +731,9 @@ func resourceVmQemuUpdate(d *schema.ResourceData, meta interface{}) error {
|
||||||
QemuVlanTag: d.Get("vlan").(int),
|
QemuVlanTag: d.Get("vlan").(int),
|
||||||
QemuMacAddr: d.Get("mac").(string),
|
QemuMacAddr: d.Get("mac").(string),
|
||||||
}
|
}
|
||||||
|
if len(qemuVgaList) > 0 {
|
||||||
|
config.QemuVga = qemuVgaList[0].(map[string]interface{})
|
||||||
|
}
|
||||||
|
|
||||||
err = config.UpdateConfig(vmr, client)
|
err = config.UpdateConfig(vmr, client)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -799,6 +826,11 @@ func resourceVmQemuRead(d *schema.ResourceData, meta interface{}) error {
|
||||||
configDisksSet := d.Get("disk").(*schema.Set)
|
configDisksSet := d.Get("disk").(*schema.Set)
|
||||||
activeDisksSet := UpdateDevicesSet(configDisksSet, config.QemuDisks)
|
activeDisksSet := UpdateDevicesSet(configDisksSet, config.QemuDisks)
|
||||||
d.Set("disk", activeDisksSet)
|
d.Set("disk", activeDisksSet)
|
||||||
|
// Display.
|
||||||
|
activeVgaSet := d.Get("vga").(*schema.Set)
|
||||||
|
if len(activeVgaSet.List()) > 0 {
|
||||||
|
d.Set("features", UpdateDeviceConfDefaults(config.QemuVga, activeVgaSet))
|
||||||
|
}
|
||||||
// Networks.
|
// Networks.
|
||||||
configNetworksSet := d.Get("network").(*schema.Set)
|
configNetworksSet := d.Get("network").(*schema.Set)
|
||||||
activeNetworksSet := UpdateDevicesSet(configNetworksSet, config.QemuNetworks)
|
activeNetworksSet := UpdateDevicesSet(configNetworksSet, config.QemuNetworks)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user