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