From 5158d17a3cf88b2f6aac61d48ea3b717ed984291 Mon Sep 17 00:00:00 2001 From: Virgil Date: Tue, 6 Aug 2019 16:05:34 +0200 Subject: [PATCH 1/4] Serial devices management --- proxmox/resource_vm_qemu.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/proxmox/resource_vm_qemu.go b/proxmox/resource_vm_qemu.go index 366340d..79ec930 100644 --- a/proxmox/resource_vm_qemu.go +++ b/proxmox/resource_vm_qemu.go @@ -274,6 +274,22 @@ func resourceVmQemu() *schema.Resource { return strings.TrimSpace(old) == strings.TrimSpace(new) }, }, + "serial": &schema.Schema{ + Type: schema.TypeSet, + Optional: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "id": &schema.Schema{ + Type: schema.TypeInt, + Required: true, + }, + "type": &schema.Schema{ + Type: schema.TypeString, + Required: true, + }, + }, + }, + }, "os_type": { Type: schema.TypeString, Optional: true, @@ -375,6 +391,8 @@ func resourceVmQemuCreate(d *schema.ResourceData, meta interface{}) error { qemuNetworks := DevicesSetToMap(networks) disks := d.Get("disk").(*schema.Set) qemuDisks := DevicesSetToMap(disks) + serials := d.Get("serial").(*schema.Set) + qemuSerials := DevicesSetToMap(serials) config := pxapi.ConfigQemu{ Name: vmName, @@ -390,6 +408,7 @@ func resourceVmQemuCreate(d *schema.ResourceData, meta interface{}) error { QemuOs: d.Get("qemu_os").(string), QemuNetworks: qemuNetworks, QemuDisks: qemuDisks, + QemuSerials: qemuSerials, // Cloud-init. CIuser: d.Get("ciuser").(string), CIpassword: d.Get("cipassword").(string), @@ -534,6 +553,8 @@ func resourceVmQemuUpdate(d *schema.ResourceData, meta interface{}) error { qemuDisks := DevicesSetToMap(configDisksSet) configNetworksSet := d.Get("network").(*schema.Set) qemuNetworks := DevicesSetToMap(configNetworksSet) + serials := d.Get("serial").(*schema.Set) + qemuSerials := DevicesSetToMap(serials) config := pxapi.ConfigQemu{ Name: d.Get("name").(string), @@ -549,6 +570,7 @@ func resourceVmQemuUpdate(d *schema.ResourceData, meta interface{}) error { QemuOs: d.Get("qemu_os").(string), QemuNetworks: qemuNetworks, QemuDisks: qemuDisks, + QemuSerials: qemuSerials, // Cloud-init. CIuser: d.Get("ciuser").(string), CIpassword: d.Get("cipassword").(string), @@ -664,6 +686,10 @@ func resourceVmQemuRead(d *schema.ResourceData, meta interface{}) error { d.Set("vlan", config.QemuVlanTag) d.Set("mac", config.QemuMacAddr) d.Set("pool", vmr.Pool()) + //Serials + configSerialsSet := d.Get("serial").(*schema.Set) + activeSerialSet := UpdateDevicesSet(configSerialsSet, config.QemuSerials) + d.Set("serial", activeSerialSet) pmParallelEnd(pconf) return nil From f005132aaa0a08d9e37c7cb1303547d04d5932be Mon Sep 17 00:00:00 2001 From: Virgil Date: Tue, 13 Aug 2019 09:13:20 +0200 Subject: [PATCH 2/4] Add serial example to README --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index f420ce5..51ce7b5 100644 --- a/README.md +++ b/README.md @@ -140,6 +140,10 @@ resource "proxmox_vm_qemu" "prepprovision-test" { size = 4G backup = true } + serial { + id = 0 + type = "socket" + } preprovision = true ssh_forward_ip = "10.0.0.1" ssh_user = "terraform" From 363079b01daf7190864f33d28375ad5c071f9b46 Mon Sep 17 00:00:00 2001 From: Virgil Date: Tue, 13 Aug 2019 09:18:47 +0200 Subject: [PATCH 3/4] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 51ce7b5..e0a9e87 100644 --- a/README.md +++ b/README.md @@ -140,6 +140,7 @@ resource "proxmox_vm_qemu" "prepprovision-test" { size = 4G backup = true } + # Serial interface is used by xterm.js serial { id = 0 type = "socket" From 7e6b78d2e580b4f54b73430bd052f74a59e6476d Mon Sep 17 00:00:00 2001 From: Virgil Date: Tue, 13 Aug 2019 09:20:31 +0200 Subject: [PATCH 4/4] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e0a9e87..ef535f0 100644 --- a/README.md +++ b/README.md @@ -140,7 +140,8 @@ resource "proxmox_vm_qemu" "prepprovision-test" { size = 4G backup = true } - # Serial interface is used by xterm.js + # Serial interface of type socket is used by xterm.js + # You will need to configure your guest system before being able to use it serial { id = 0 type = "socket"