From 8ce9006eed15dadc6f051464b8b98e3a1abd7d6d Mon Sep 17 00:00:00 2001 From: Simon Caron <8635747+simoncaron@users.noreply.github.com> Date: Mon, 4 Sep 2023 10:44:49 -0400 Subject: [PATCH] feat(lxc): add support for `keyctl` and `fuse` features (#537) --- .../virtual_environment_container.md | 4 +++ proxmoxtf/resource/container.go | 29 +++++++++++++++++-- proxmoxtf/resource/container_test.go | 6 +++- 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/docs/resources/virtual_environment_container.md b/docs/resources/virtual_environment_container.md index 0d09efe8..175077ce 100644 --- a/docs/resources/virtual_environment_container.md +++ b/docs/resources/virtual_environment_container.md @@ -200,6 +200,10 @@ output "ubuntu_container_public_key" { - `features` - (Optional) The container features - `nesting` - (Optional) Whether the container is nested (defaults 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 diff --git a/proxmoxtf/resource/container.go b/proxmoxtf/resource/container.go index 23fc8199..9dd0748f 100644 --- a/proxmoxtf/resource/container.go +++ b/proxmoxtf/resource/container.go @@ -45,6 +45,8 @@ const ( dvResourceVirtualEnvironmentContainerDiskDatastoreID = "local" dvResourceVirtualEnvironmentContainerDiskSize = 4 dvResourceVirtualEnvironmentContainerFeaturesNesting = false + dvResourceVirtualEnvironmentContainerFeaturesKeyControl = false + dvResourceVirtualEnvironmentContainerFeaturesFUSE = false dvResourceVirtualEnvironmentContainerMemoryDedicated = 512 dvResourceVirtualEnvironmentContainerMemorySwap = 0 dvResourceVirtualEnvironmentContainerMountPointACL = false @@ -87,6 +89,8 @@ const ( mkResourceVirtualEnvironmentContainerDiskSize = "size" mkResourceVirtualEnvironmentContainerFeatures = "features" mkResourceVirtualEnvironmentContainerFeaturesNesting = "nesting" + mkResourceVirtualEnvironmentContainerFeaturesKeyControl = "keyctl" + mkResourceVirtualEnvironmentContainerFeaturesFUSE = "fuse" mkResourceVirtualEnvironmentContainerInitialization = "initialization" mkResourceVirtualEnvironmentContainerInitializationDNS = "dns" mkResourceVirtualEnvironmentContainerInitializationDNSDomain = "domain" @@ -308,7 +312,9 @@ func Container() *schema.Resource { DefaultFunc: func() (interface{}, error) { return []interface{}{ map[string]interface{}{ - mkResourceVirtualEnvironmentContainerFeaturesNesting: dvResourceVirtualEnvironmentContainerFeaturesNesting, + mkResourceVirtualEnvironmentContainerFeaturesNesting: dvResourceVirtualEnvironmentContainerFeaturesNesting, + mkResourceVirtualEnvironmentContainerFeaturesKeyControl: dvResourceVirtualEnvironmentContainerFeaturesKeyControl, + mkResourceVirtualEnvironmentContainerFeaturesFUSE: dvResourceVirtualEnvironmentContainerFeaturesFUSE, }, }, nil }, @@ -321,6 +327,20 @@ func Container() *schema.Resource { ForceNew: true, 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, @@ -1194,8 +1214,13 @@ func containerCreateCustom(ctx context.Context, d *schema.ResourceData, m interf } nesting := types2.CustomBool(featuresBlock[mkResourceVirtualEnvironmentContainerFeaturesNesting].(bool)) + keyctl := types2.CustomBool(featuresBlock[mkResourceVirtualEnvironmentContainerFeaturesKeyControl].(bool)) + fuse := types2.CustomBool(featuresBlock[mkResourceVirtualEnvironmentContainerFeaturesFUSE].(bool)) + features := containers.CustomFeatures{ - Nesting: &nesting, + Nesting: &nesting, + KeyControl: &keyctl, + FUSE: &fuse, } initialization := d.Get(mkResourceVirtualEnvironmentContainerInitialization).([]interface{}) diff --git a/proxmoxtf/resource/container_test.go b/proxmoxtf/resource/container_test.go index 57f84fa9..101127d2 100644 --- a/proxmoxtf/resource/container_test.go +++ b/proxmoxtf/resource/container_test.go @@ -113,10 +113,14 @@ func TestContainerSchema(t *testing.T) { test.AssertOptionalArguments(t, featuresSchema, []string{ mkResourceVirtualEnvironmentContainerFeaturesNesting, + mkResourceVirtualEnvironmentContainerFeaturesKeyControl, + mkResourceVirtualEnvironmentContainerFeaturesFUSE, }) test.AssertValueTypes(t, featuresSchema, map[string]schema.ValueType{ - mkResourceVirtualEnvironmentContainerFeaturesNesting: schema.TypeBool, + mkResourceVirtualEnvironmentContainerFeaturesNesting: schema.TypeBool, + mkResourceVirtualEnvironmentContainerFeaturesKeyControl: schema.TypeBool, + mkResourceVirtualEnvironmentContainerFeaturesFUSE: schema.TypeBool, }) initializationSchema := test.AssertNestedSchemaExistence(