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
|
||||
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
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user