mirror of
https://github.com/bpg/terraform-provider-proxmox.git
synced 2025-07-01 11:02:59 +00:00
Additional CPU argument
This commit is contained in:
parent
a9349cfbd0
commit
ea0c17bfca
@ -2,7 +2,7 @@
|
||||
|
||||
ENHANCEMENTS:
|
||||
|
||||
resource/virtual_environment_vm: Add `cpu.flags`, `cpu.type` and `vga` arguments
|
||||
resource/virtual_environment_vm: Add `cpu.flags`, `cpu.type`, `cpu.units` and `vga` arguments
|
||||
|
||||
## 0.1.0
|
||||
|
||||
|
@ -405,6 +405,7 @@ This resource doesn't expose any additional attributes.
|
||||
* `pentium3` - Intel Pentium 3 (1999-2001)
|
||||
* `phenom` - AMD Phenom (2010)
|
||||
* `qemu32`/`qemu64` - QEMU Virtual CPU version 2.5+ (32 & 64 bit variants)
|
||||
* `units` - (Optional) The CPU units (defaults to `1024`)
|
||||
* `description` - (Optional) The description
|
||||
* `disk` - (Optional) The disk configuration (multiple blocks supported)
|
||||
* `datastore_id` - (Optional) The ID of the datastore to create the disk in (defaults to `local-lvm`)
|
||||
|
@ -29,6 +29,7 @@ const (
|
||||
dvResourceVirtualEnvironmentVMCPUHotplugged = 0
|
||||
dvResourceVirtualEnvironmentVMCPUSockets = 1
|
||||
dvResourceVirtualEnvironmentVMCPUType = "qemu64"
|
||||
dvResourceVirtualEnvironmentVMCPUUnits = 1024
|
||||
dvResourceVirtualEnvironmentVMDescription = ""
|
||||
dvResourceVirtualEnvironmentVMDiskDatastoreID = "local-lvm"
|
||||
dvResourceVirtualEnvironmentVMDiskFileFormat = "qcow2"
|
||||
@ -86,6 +87,7 @@ const (
|
||||
mkResourceVirtualEnvironmentVMCPUHotplugged = "hotplugged"
|
||||
mkResourceVirtualEnvironmentVMCPUSockets = "sockets"
|
||||
mkResourceVirtualEnvironmentVMCPUType = "type"
|
||||
mkResourceVirtualEnvironmentVMCPUUnits = "units"
|
||||
mkResourceVirtualEnvironmentVMDescription = "description"
|
||||
mkResourceVirtualEnvironmentVMDisk = "disk"
|
||||
mkResourceVirtualEnvironmentVMDiskDatastoreID = "datastore_id"
|
||||
@ -370,6 +372,7 @@ func resourceVirtualEnvironmentVM() *schema.Resource {
|
||||
defaultMap[mkResourceVirtualEnvironmentVMCPUHotplugged] = dvResourceVirtualEnvironmentVMCPUHotplugged
|
||||
defaultMap[mkResourceVirtualEnvironmentVMCPUSockets] = dvResourceVirtualEnvironmentVMCPUSockets
|
||||
defaultMap[mkResourceVirtualEnvironmentVMCPUType] = dvResourceVirtualEnvironmentVMCPUType
|
||||
defaultMap[mkResourceVirtualEnvironmentVMCPUUnits] = dvResourceVirtualEnvironmentVMCPUUnits
|
||||
|
||||
defaultList[0] = defaultMap
|
||||
|
||||
@ -414,6 +417,13 @@ func resourceVirtualEnvironmentVM() *schema.Resource {
|
||||
Default: dvResourceVirtualEnvironmentVMCPUType,
|
||||
ValidateFunc: getCPUTypeValidator(),
|
||||
},
|
||||
mkResourceVirtualEnvironmentVMCPUUnits: {
|
||||
Type: schema.TypeInt,
|
||||
Description: "The CPU units",
|
||||
Optional: true,
|
||||
Default: dvResourceVirtualEnvironmentVMCPUUnits,
|
||||
ValidateFunc: validation.IntBetween(2, 262144),
|
||||
},
|
||||
},
|
||||
},
|
||||
MaxItems: 1,
|
||||
@ -811,6 +821,7 @@ func resourceVirtualEnvironmentVMCreate(d *schema.ResourceData, m interface{}) e
|
||||
cpuHotplugged := cpuBlock[mkResourceVirtualEnvironmentVMCPUHotplugged].(int)
|
||||
cpuSockets := cpuBlock[mkResourceVirtualEnvironmentVMCPUSockets].(int)
|
||||
cpuType := cpuBlock[mkResourceVirtualEnvironmentVMCPUType].(string)
|
||||
cpuUnits := cpuBlock[mkResourceVirtualEnvironmentVMCPUUnits].(int)
|
||||
|
||||
description := d.Get(mkResourceVirtualEnvironmentVMDescription).(string)
|
||||
diskDeviceObjects, err := resourceVirtualEnvironmentVMGetDiskDeviceObjects(d, m)
|
||||
@ -917,6 +928,7 @@ func resourceVirtualEnvironmentVMCreate(d *schema.ResourceData, m interface{}) e
|
||||
Type: cpuType,
|
||||
},
|
||||
CPUSockets: &cpuSockets,
|
||||
CPUUnits: &cpuUnits,
|
||||
DedicatedMemory: &memoryDedicated,
|
||||
FloatingMemory: &memoryFloating,
|
||||
IDEDevices: ideDevices,
|
||||
@ -1609,6 +1621,12 @@ func resourceVirtualEnvironmentVMRead(d *schema.ResourceData, m interface{}) err
|
||||
cpu[mkResourceVirtualEnvironmentVMCPUType] = ""
|
||||
}
|
||||
|
||||
if vmConfig.CPUUnits != nil {
|
||||
cpu[mkResourceVirtualEnvironmentVMCPUUnits] = *vmConfig.CPUUnits
|
||||
} else {
|
||||
cpu[mkResourceVirtualEnvironmentVMCPUUnits] = 0
|
||||
}
|
||||
|
||||
currentCPU := d.Get(mkResourceVirtualEnvironmentVMCPU).([]interface{})
|
||||
|
||||
if len(currentCPU) > 0 ||
|
||||
@ -1616,7 +1634,8 @@ func resourceVirtualEnvironmentVMRead(d *schema.ResourceData, m interface{}) err
|
||||
len(cpu[mkResourceVirtualEnvironmentVMCPUFlags].([]interface{})) > 0 ||
|
||||
cpu[mkResourceVirtualEnvironmentVMCPUHotplugged] != dvResourceVirtualEnvironmentVMCPUHotplugged ||
|
||||
cpu[mkResourceVirtualEnvironmentVMCPUSockets] != dvResourceVirtualEnvironmentVMCPUSockets ||
|
||||
cpu[mkResourceVirtualEnvironmentVMCPUType] != dvResourceVirtualEnvironmentVMCPUType {
|
||||
cpu[mkResourceVirtualEnvironmentVMCPUType] != dvResourceVirtualEnvironmentVMCPUType ||
|
||||
cpu[mkResourceVirtualEnvironmentVMCPUUnits] != dvResourceVirtualEnvironmentVMCPUUnits {
|
||||
d.Set(mkResourceVirtualEnvironmentVMCPU, []interface{}{cpu})
|
||||
}
|
||||
|
||||
@ -2094,23 +2113,31 @@ func resourceVirtualEnvironmentVMUpdate(d *schema.ResourceData, m interface{}) e
|
||||
}
|
||||
|
||||
cpuCores := cpuBlock[mkResourceVirtualEnvironmentVMCPUCores].(int)
|
||||
cpuFlags := cpuBlock[mkResourceVirtualEnvironmentVMCPUFlags].([]interface{})
|
||||
cpuHotplugged := cpuBlock[mkResourceVirtualEnvironmentVMCPUHotplugged].(int)
|
||||
cpuSockets := cpuBlock[mkResourceVirtualEnvironmentVMCPUSockets].(int)
|
||||
cpuType := cpuBlock[mkResourceVirtualEnvironmentVMCPUType].(string)
|
||||
|
||||
if cpuCores > 0 {
|
||||
body.CPUCores = &cpuCores
|
||||
}
|
||||
|
||||
cpuFlags := cpuBlock[mkResourceVirtualEnvironmentVMCPUFlags].([]interface{})
|
||||
cpuHotplugged := cpuBlock[mkResourceVirtualEnvironmentVMCPUHotplugged].(int)
|
||||
|
||||
if cpuHotplugged > 0 {
|
||||
body.VirtualCPUCount = &cpuHotplugged
|
||||
}
|
||||
|
||||
cpuSockets := cpuBlock[mkResourceVirtualEnvironmentVMCPUSockets].(int)
|
||||
|
||||
if cpuSockets > 0 {
|
||||
body.CPUSockets = &cpuSockets
|
||||
}
|
||||
|
||||
cpuType := cpuBlock[mkResourceVirtualEnvironmentVMCPUType].(string)
|
||||
cpuUnits := cpuBlock[mkResourceVirtualEnvironmentVMCPUUnits].(int)
|
||||
|
||||
if cpuUnits > 0 {
|
||||
body.CPUUnits = &cpuUnits
|
||||
}
|
||||
|
||||
cpuFlagsConverted := make([]string, len(cpuFlags))
|
||||
|
||||
for fi, flag := range cpuFlags {
|
||||
|
@ -231,6 +231,7 @@ func TestResourceVirtualEnvironmentVMSchema(t *testing.T) {
|
||||
mkResourceVirtualEnvironmentVMCPUHotplugged,
|
||||
mkResourceVirtualEnvironmentVMCPUSockets,
|
||||
mkResourceVirtualEnvironmentVMCPUType,
|
||||
mkResourceVirtualEnvironmentVMCPUUnits,
|
||||
})
|
||||
|
||||
testSchemaValueTypes(t, cpuSchema, []string{
|
||||
@ -239,12 +240,14 @@ func TestResourceVirtualEnvironmentVMSchema(t *testing.T) {
|
||||
mkResourceVirtualEnvironmentVMCPUHotplugged,
|
||||
mkResourceVirtualEnvironmentVMCPUSockets,
|
||||
mkResourceVirtualEnvironmentVMCPUType,
|
||||
mkResourceVirtualEnvironmentVMCPUUnits,
|
||||
}, []schema.ValueType{
|
||||
schema.TypeInt,
|
||||
schema.TypeList,
|
||||
schema.TypeInt,
|
||||
schema.TypeInt,
|
||||
schema.TypeString,
|
||||
schema.TypeInt,
|
||||
})
|
||||
|
||||
diskSchema := testNestedSchemaExistence(t, s, mkResourceVirtualEnvironmentVMDisk)
|
||||
|
Loading…
Reference in New Issue
Block a user