0
0
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:
Tuomas Salmi 2023-03-09 03:26:04 +02:00 committed by GitHub
parent 1b4caa2206
commit 4d447390e6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 60 additions and 0 deletions

View File

@ -172,6 +172,8 @@ output "ubuntu_container_public_key" {
- `unprivileged` - (Optional) Whether the container runs as unprivileged on
the host (defaults to `false`).
- `vm_id` - (Optional) The virtual machine identifier
- `features` - (Optional) The container features
- `nesting` - (Optional) Whether the container is nested (defaults to `false`)
## Attribute Reference

View File

@ -38,6 +38,7 @@ const (
dvResourceVirtualEnvironmentContainerDescription = ""
dvResourceVirtualEnvironmentContainerDiskDatastoreID = "local"
dvResourceVirtualEnvironmentContainerDiskSize = 4
dvResourceVirtualEnvironmentContainerFeaturesNesting = false
dvResourceVirtualEnvironmentContainerMemoryDedicated = 512
dvResourceVirtualEnvironmentContainerMemorySwap = 0
dvResourceVirtualEnvironmentContainerNetworkInterfaceBridge = "vmbr0"
@ -71,6 +72,8 @@ const (
mkResourceVirtualEnvironmentContainerDisk = "disk"
mkResourceVirtualEnvironmentContainerDiskDatastoreID = "datastore_id"
mkResourceVirtualEnvironmentContainerDiskSize = "size"
mkResourceVirtualEnvironmentContainerFeatures = "features"
mkResourceVirtualEnvironmentContainerFeaturesNesting = "nesting"
mkResourceVirtualEnvironmentContainerInitialization = "initialization"
mkResourceVirtualEnvironmentContainerInitializationDNS = "dns"
mkResourceVirtualEnvironmentContainerInitializationDNSDomain = "domain"
@ -272,6 +275,32 @@ func resourceVirtualEnvironmentContainer() *schema.Resource {
MaxItems: 1,
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: {
Type: schema.TypeList,
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{})
initializationDNSDomain := dvResourceVirtualEnvironmentContainerInitializationDNSDomain
initializationDNSServer := dvResourceVirtualEnvironmentContainerInitializationDNSServer
@ -1233,6 +1278,7 @@ func resourceVirtualEnvironmentContainerCreateCustom(
CPUUnits: &cpuUnits,
DatastoreID: &diskDatastoreID,
DedicatedMemory: &memoryDedicated,
Features: &features,
NetworkInterfaces: networkInterfaceArray,
OSTemplateFileVolume: &operatingSystemTemplateFileID,
OSType: &operatingSystemType,

View File

@ -39,6 +39,7 @@ func TestResourceVirtualEnvironmentContainerSchema(t *testing.T) {
mkResourceVirtualEnvironmentContainerTags,
mkResourceVirtualEnvironmentContainerTemplate,
mkResourceVirtualEnvironmentContainerUnprivileged,
mkResourceVirtualEnvironmentContainerFeatures,
mkResourceVirtualEnvironmentContainerVMID,
})
@ -54,6 +55,7 @@ func TestResourceVirtualEnvironmentContainerSchema(t *testing.T) {
mkResourceVirtualEnvironmentContainerTags: schema.TypeList,
mkResourceVirtualEnvironmentContainerTemplate: schema.TypeBool,
mkResourceVirtualEnvironmentContainerUnprivileged: schema.TypeBool,
mkResourceVirtualEnvironmentContainerFeatures: schema.TypeList,
mkResourceVirtualEnvironmentContainerVMID: schema.TypeInt,
})
@ -98,6 +100,16 @@ func TestResourceVirtualEnvironmentContainerSchema(t *testing.T) {
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(
t,
s,