0
0
mirror of https://github.com/bpg/terraform-provider-proxmox.git synced 2025-07-01 02:52:58 +00:00

feat(lxc): add support for keyctl and fuse features (#537)

This commit is contained in:
Simon Caron 2023-09-04 10:44:49 -04:00 committed by GitHub
parent 5ecf135398
commit 8ce9006eed
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 36 additions and 3 deletions

View File

@ -200,6 +200,10 @@ output "ubuntu_container_public_key" {
- `features` - (Optional) The container features - `features` - (Optional) The container features
- `nesting` - (Optional) Whether the container is nested (defaults - `nesting` - (Optional) Whether the container is nested (defaults
to `false`) to `false`)
- `fuse` - (Optional) Whether the container supports FUSE mounts (defaults
to `false`)
- `keyctl` - (Optional) Whether the container supports `keyctl()` system call (defaults
to `false`)
## Attribute Reference ## Attribute Reference

View File

@ -45,6 +45,8 @@ const (
dvResourceVirtualEnvironmentContainerDiskDatastoreID = "local" dvResourceVirtualEnvironmentContainerDiskDatastoreID = "local"
dvResourceVirtualEnvironmentContainerDiskSize = 4 dvResourceVirtualEnvironmentContainerDiskSize = 4
dvResourceVirtualEnvironmentContainerFeaturesNesting = false dvResourceVirtualEnvironmentContainerFeaturesNesting = false
dvResourceVirtualEnvironmentContainerFeaturesKeyControl = false
dvResourceVirtualEnvironmentContainerFeaturesFUSE = false
dvResourceVirtualEnvironmentContainerMemoryDedicated = 512 dvResourceVirtualEnvironmentContainerMemoryDedicated = 512
dvResourceVirtualEnvironmentContainerMemorySwap = 0 dvResourceVirtualEnvironmentContainerMemorySwap = 0
dvResourceVirtualEnvironmentContainerMountPointACL = false dvResourceVirtualEnvironmentContainerMountPointACL = false
@ -87,6 +89,8 @@ const (
mkResourceVirtualEnvironmentContainerDiskSize = "size" mkResourceVirtualEnvironmentContainerDiskSize = "size"
mkResourceVirtualEnvironmentContainerFeatures = "features" mkResourceVirtualEnvironmentContainerFeatures = "features"
mkResourceVirtualEnvironmentContainerFeaturesNesting = "nesting" mkResourceVirtualEnvironmentContainerFeaturesNesting = "nesting"
mkResourceVirtualEnvironmentContainerFeaturesKeyControl = "keyctl"
mkResourceVirtualEnvironmentContainerFeaturesFUSE = "fuse"
mkResourceVirtualEnvironmentContainerInitialization = "initialization" mkResourceVirtualEnvironmentContainerInitialization = "initialization"
mkResourceVirtualEnvironmentContainerInitializationDNS = "dns" mkResourceVirtualEnvironmentContainerInitializationDNS = "dns"
mkResourceVirtualEnvironmentContainerInitializationDNSDomain = "domain" mkResourceVirtualEnvironmentContainerInitializationDNSDomain = "domain"
@ -308,7 +312,9 @@ func Container() *schema.Resource {
DefaultFunc: func() (interface{}, error) { DefaultFunc: func() (interface{}, error) {
return []interface{}{ return []interface{}{
map[string]interface{}{ map[string]interface{}{
mkResourceVirtualEnvironmentContainerFeaturesNesting: dvResourceVirtualEnvironmentContainerFeaturesNesting, mkResourceVirtualEnvironmentContainerFeaturesNesting: dvResourceVirtualEnvironmentContainerFeaturesNesting,
mkResourceVirtualEnvironmentContainerFeaturesKeyControl: dvResourceVirtualEnvironmentContainerFeaturesKeyControl,
mkResourceVirtualEnvironmentContainerFeaturesFUSE: dvResourceVirtualEnvironmentContainerFeaturesFUSE,
}, },
}, nil }, nil
}, },
@ -321,6 +327,20 @@ func Container() *schema.Resource {
ForceNew: true, ForceNew: true,
Default: dvResourceVirtualEnvironmentContainerFeaturesNesting, Default: dvResourceVirtualEnvironmentContainerFeaturesNesting,
}, },
mkResourceVirtualEnvironmentContainerFeaturesKeyControl: {
Type: schema.TypeBool,
Description: "Whether the container supports `keyctl()` system call",
Optional: true,
ForceNew: true,
Default: dvResourceVirtualEnvironmentContainerFeaturesKeyControl,
},
mkResourceVirtualEnvironmentContainerFeaturesFUSE: {
Type: schema.TypeBool,
Description: "Whether the container supports FUSE mounts",
Optional: true,
ForceNew: true,
Default: dvResourceVirtualEnvironmentContainerFeaturesFUSE,
},
}, },
}, },
MaxItems: 1, MaxItems: 1,
@ -1194,8 +1214,13 @@ func containerCreateCustom(ctx context.Context, d *schema.ResourceData, m interf
} }
nesting := types2.CustomBool(featuresBlock[mkResourceVirtualEnvironmentContainerFeaturesNesting].(bool)) nesting := types2.CustomBool(featuresBlock[mkResourceVirtualEnvironmentContainerFeaturesNesting].(bool))
keyctl := types2.CustomBool(featuresBlock[mkResourceVirtualEnvironmentContainerFeaturesKeyControl].(bool))
fuse := types2.CustomBool(featuresBlock[mkResourceVirtualEnvironmentContainerFeaturesFUSE].(bool))
features := containers.CustomFeatures{ features := containers.CustomFeatures{
Nesting: &nesting, Nesting: &nesting,
KeyControl: &keyctl,
FUSE: &fuse,
} }
initialization := d.Get(mkResourceVirtualEnvironmentContainerInitialization).([]interface{}) initialization := d.Get(mkResourceVirtualEnvironmentContainerInitialization).([]interface{})

View File

@ -113,10 +113,14 @@ func TestContainerSchema(t *testing.T) {
test.AssertOptionalArguments(t, featuresSchema, []string{ test.AssertOptionalArguments(t, featuresSchema, []string{
mkResourceVirtualEnvironmentContainerFeaturesNesting, mkResourceVirtualEnvironmentContainerFeaturesNesting,
mkResourceVirtualEnvironmentContainerFeaturesKeyControl,
mkResourceVirtualEnvironmentContainerFeaturesFUSE,
}) })
test.AssertValueTypes(t, featuresSchema, map[string]schema.ValueType{ test.AssertValueTypes(t, featuresSchema, map[string]schema.ValueType{
mkResourceVirtualEnvironmentContainerFeaturesNesting: schema.TypeBool, mkResourceVirtualEnvironmentContainerFeaturesNesting: schema.TypeBool,
mkResourceVirtualEnvironmentContainerFeaturesKeyControl: schema.TypeBool,
mkResourceVirtualEnvironmentContainerFeaturesFUSE: schema.TypeBool,
}) })
initializationSchema := test.AssertNestedSchemaExistence( initializationSchema := test.AssertNestedSchemaExistence(