mirror of
https://github.com/bpg/terraform-provider-proxmox.git
synced 2025-07-12 00:35:03 +00:00
feat(lxc): Add option for nested container feature (#251)
feat: Add option for nested container feature
This commit is contained in:
parent
1b4caa2206
commit
4d447390e6
@ -172,6 +172,8 @@ output "ubuntu_container_public_key" {
|
|||||||
- `unprivileged` - (Optional) Whether the container runs as unprivileged on
|
- `unprivileged` - (Optional) Whether the container runs as unprivileged on
|
||||||
the host (defaults to `false`).
|
the host (defaults to `false`).
|
||||||
- `vm_id` - (Optional) The virtual machine identifier
|
- `vm_id` - (Optional) The virtual machine identifier
|
||||||
|
- `features` - (Optional) The container features
|
||||||
|
- `nesting` - (Optional) Whether the container is nested (defaults to `false`)
|
||||||
|
|
||||||
## Attribute Reference
|
## Attribute Reference
|
||||||
|
|
||||||
|
@ -38,6 +38,7 @@ const (
|
|||||||
dvResourceVirtualEnvironmentContainerDescription = ""
|
dvResourceVirtualEnvironmentContainerDescription = ""
|
||||||
dvResourceVirtualEnvironmentContainerDiskDatastoreID = "local"
|
dvResourceVirtualEnvironmentContainerDiskDatastoreID = "local"
|
||||||
dvResourceVirtualEnvironmentContainerDiskSize = 4
|
dvResourceVirtualEnvironmentContainerDiskSize = 4
|
||||||
|
dvResourceVirtualEnvironmentContainerFeaturesNesting = false
|
||||||
dvResourceVirtualEnvironmentContainerMemoryDedicated = 512
|
dvResourceVirtualEnvironmentContainerMemoryDedicated = 512
|
||||||
dvResourceVirtualEnvironmentContainerMemorySwap = 0
|
dvResourceVirtualEnvironmentContainerMemorySwap = 0
|
||||||
dvResourceVirtualEnvironmentContainerNetworkInterfaceBridge = "vmbr0"
|
dvResourceVirtualEnvironmentContainerNetworkInterfaceBridge = "vmbr0"
|
||||||
@ -71,6 +72,8 @@ const (
|
|||||||
mkResourceVirtualEnvironmentContainerDisk = "disk"
|
mkResourceVirtualEnvironmentContainerDisk = "disk"
|
||||||
mkResourceVirtualEnvironmentContainerDiskDatastoreID = "datastore_id"
|
mkResourceVirtualEnvironmentContainerDiskDatastoreID = "datastore_id"
|
||||||
mkResourceVirtualEnvironmentContainerDiskSize = "size"
|
mkResourceVirtualEnvironmentContainerDiskSize = "size"
|
||||||
|
mkResourceVirtualEnvironmentContainerFeatures = "features"
|
||||||
|
mkResourceVirtualEnvironmentContainerFeaturesNesting = "nesting"
|
||||||
mkResourceVirtualEnvironmentContainerInitialization = "initialization"
|
mkResourceVirtualEnvironmentContainerInitialization = "initialization"
|
||||||
mkResourceVirtualEnvironmentContainerInitializationDNS = "dns"
|
mkResourceVirtualEnvironmentContainerInitializationDNS = "dns"
|
||||||
mkResourceVirtualEnvironmentContainerInitializationDNSDomain = "domain"
|
mkResourceVirtualEnvironmentContainerInitializationDNSDomain = "domain"
|
||||||
@ -272,6 +275,32 @@ func resourceVirtualEnvironmentContainer() *schema.Resource {
|
|||||||
MaxItems: 1,
|
MaxItems: 1,
|
||||||
MinItems: 0,
|
MinItems: 0,
|
||||||
},
|
},
|
||||||
|
mkResourceVirtualEnvironmentContainerFeatures: {
|
||||||
|
Type: schema.TypeList,
|
||||||
|
Description: "Features",
|
||||||
|
Optional: true,
|
||||||
|
ForceNew: true,
|
||||||
|
DefaultFunc: func() (interface{}, error) {
|
||||||
|
return []interface{}{
|
||||||
|
map[string]interface{}{
|
||||||
|
mkResourceVirtualEnvironmentContainerFeaturesNesting: dvResourceVirtualEnvironmentContainerFeaturesNesting,
|
||||||
|
},
|
||||||
|
}, nil
|
||||||
|
},
|
||||||
|
Elem: &schema.Resource{
|
||||||
|
Schema: map[string]*schema.Schema{
|
||||||
|
mkResourceVirtualEnvironmentContainerFeaturesNesting: {
|
||||||
|
Type: schema.TypeBool,
|
||||||
|
Description: "Whether the container runs as nested",
|
||||||
|
Optional: true,
|
||||||
|
ForceNew: true,
|
||||||
|
Default: dvResourceVirtualEnvironmentContainerFeaturesNesting,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
MaxItems: 1,
|
||||||
|
MinItems: 0,
|
||||||
|
},
|
||||||
mkResourceVirtualEnvironmentContainerInitialization: {
|
mkResourceVirtualEnvironmentContainerInitialization: {
|
||||||
Type: schema.TypeList,
|
Type: schema.TypeList,
|
||||||
Description: "The initialization configuration",
|
Description: "The initialization configuration",
|
||||||
@ -1037,6 +1066,22 @@ func resourceVirtualEnvironmentContainerCreateCustom(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
featuresBlock, err := getSchemaBlock(
|
||||||
|
resource,
|
||||||
|
d,
|
||||||
|
[]string{mkResourceVirtualEnvironmentContainerFeatures},
|
||||||
|
0,
|
||||||
|
true,
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
return diag.FromErr(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
nesting := proxmox.CustomBool(featuresBlock[mkResourceVirtualEnvironmentContainerFeaturesNesting].(bool))
|
||||||
|
features := proxmox.VirtualEnvironmentContainerCustomFeatures{
|
||||||
|
Nesting: &nesting,
|
||||||
|
}
|
||||||
|
|
||||||
initialization := d.Get(mkResourceVirtualEnvironmentContainerInitialization).([]interface{})
|
initialization := d.Get(mkResourceVirtualEnvironmentContainerInitialization).([]interface{})
|
||||||
initializationDNSDomain := dvResourceVirtualEnvironmentContainerInitializationDNSDomain
|
initializationDNSDomain := dvResourceVirtualEnvironmentContainerInitializationDNSDomain
|
||||||
initializationDNSServer := dvResourceVirtualEnvironmentContainerInitializationDNSServer
|
initializationDNSServer := dvResourceVirtualEnvironmentContainerInitializationDNSServer
|
||||||
@ -1233,6 +1278,7 @@ func resourceVirtualEnvironmentContainerCreateCustom(
|
|||||||
CPUUnits: &cpuUnits,
|
CPUUnits: &cpuUnits,
|
||||||
DatastoreID: &diskDatastoreID,
|
DatastoreID: &diskDatastoreID,
|
||||||
DedicatedMemory: &memoryDedicated,
|
DedicatedMemory: &memoryDedicated,
|
||||||
|
Features: &features,
|
||||||
NetworkInterfaces: networkInterfaceArray,
|
NetworkInterfaces: networkInterfaceArray,
|
||||||
OSTemplateFileVolume: &operatingSystemTemplateFileID,
|
OSTemplateFileVolume: &operatingSystemTemplateFileID,
|
||||||
OSType: &operatingSystemType,
|
OSType: &operatingSystemType,
|
||||||
|
@ -39,6 +39,7 @@ func TestResourceVirtualEnvironmentContainerSchema(t *testing.T) {
|
|||||||
mkResourceVirtualEnvironmentContainerTags,
|
mkResourceVirtualEnvironmentContainerTags,
|
||||||
mkResourceVirtualEnvironmentContainerTemplate,
|
mkResourceVirtualEnvironmentContainerTemplate,
|
||||||
mkResourceVirtualEnvironmentContainerUnprivileged,
|
mkResourceVirtualEnvironmentContainerUnprivileged,
|
||||||
|
mkResourceVirtualEnvironmentContainerFeatures,
|
||||||
mkResourceVirtualEnvironmentContainerVMID,
|
mkResourceVirtualEnvironmentContainerVMID,
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -54,6 +55,7 @@ func TestResourceVirtualEnvironmentContainerSchema(t *testing.T) {
|
|||||||
mkResourceVirtualEnvironmentContainerTags: schema.TypeList,
|
mkResourceVirtualEnvironmentContainerTags: schema.TypeList,
|
||||||
mkResourceVirtualEnvironmentContainerTemplate: schema.TypeBool,
|
mkResourceVirtualEnvironmentContainerTemplate: schema.TypeBool,
|
||||||
mkResourceVirtualEnvironmentContainerUnprivileged: schema.TypeBool,
|
mkResourceVirtualEnvironmentContainerUnprivileged: schema.TypeBool,
|
||||||
|
mkResourceVirtualEnvironmentContainerFeatures: schema.TypeList,
|
||||||
mkResourceVirtualEnvironmentContainerVMID: schema.TypeInt,
|
mkResourceVirtualEnvironmentContainerVMID: schema.TypeInt,
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -98,6 +100,16 @@ func TestResourceVirtualEnvironmentContainerSchema(t *testing.T) {
|
|||||||
mkResourceVirtualEnvironmentContainerDiskDatastoreID: schema.TypeString,
|
mkResourceVirtualEnvironmentContainerDiskDatastoreID: schema.TypeString,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
featuresSchema := testNestedSchemaExistence(t, s, mkResourceVirtualEnvironmentContainerFeatures)
|
||||||
|
|
||||||
|
testOptionalArguments(t, featuresSchema, []string{
|
||||||
|
mkResourceVirtualEnvironmentContainerFeaturesNesting,
|
||||||
|
})
|
||||||
|
|
||||||
|
testValueTypes(t, featuresSchema, map[string]schema.ValueType{
|
||||||
|
mkResourceVirtualEnvironmentContainerFeaturesNesting: schema.TypeBool,
|
||||||
|
})
|
||||||
|
|
||||||
initializationSchema := testNestedSchemaExistence(
|
initializationSchema := testNestedSchemaExistence(
|
||||||
t,
|
t,
|
||||||
s,
|
s,
|
||||||
|
Loading…
Reference in New Issue
Block a user