{"name":"proxmoxve","displayName":"Proxmox Virtual Environment (Proxmox VE)","version":"7.13.0","description":"A Pulumi package for creating and managing Proxmox Virtual Environment cloud resources.","keywords":["pulumi","proxmox","proxmoxve"],"homepage":"https://github.com/muhlba91/pulumi-proxmoxve","license":"Apache-2.0","attribution":"This Pulumi package is based on the [`proxmox` Terraform Provider](https://github.com/bpg/terraform-provider-proxmox).","repository":"https://github.com/muhlba91/pulumi-proxmoxve","logoUrl":"https://raw.githubusercontent.com/muhlba91/pulumi-proxmoxve/main/assets/proxmox-logo.png","pluginDownloadURL":"github://api.github.com/muhlba91/pulumi-proxmoxve","publisher":"Daniel Muehlbachler-Pietrzykowski","meta":{"moduleFormat":"(.*)(?:/[^/]*)"},"language":{"csharp":{"packageReferences":{"Pulumi":"3.*"},"namespaces":{"proxmoxve":"ProxmoxVE"},"compatibility":"tfbridge20"},"go":{"importBasePath":"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve","generateResourceContainerTypes":true,"generateExtraInputTypes":true},"java":{"basePackage":"io.muehlbachler.pulumi","buildFiles":"","gradleNexusPublishPluginVersion":"","gradleTest":""},"nodejs":{"packageName":"@muhlba91/pulumi-proxmoxve","packageDescription":"A Pulumi package for creating and managing Proxmox Virtual Environment cloud resources.","readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/bpg/terraform-provider-proxmox)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-proxmoxve` repo](https://github.com/muhlba91/pulumi-proxmoxve/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-proxmox` repo](https://github.com/bpg/terraform-provider-proxmox/issues).","dependencies":{"@pulumi/pulumi":"^3.0.0"},"devDependencies":{"@types/mime":"^2.0.0","@types/node":"^10.0.0"},"compatibility":"tfbridge20","disableUnionOutputTypes":true},"python":{"packageName":"pulumi_proxmoxve","requires":{"pulumi":"\u003e=3.0.0,\u003c4.0.0"},"readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/bpg/terraform-provider-proxmox)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-proxmoxve` repo](https://github.com/muhlba91/pulumi-proxmoxve/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-proxmox` repo](https://github.com/bpg/terraform-provider-proxmox/issues).","compatibility":"tfbridge20","respectSchemaVersion":true,"pyproject":{"enabled":true}}},"config":{"variables":{"apiToken":{"type":"string","description":"The API token for the Proxmox VE API.","secret":true},"authTicket":{"type":"string","description":"The pre-authenticated Ticket for the Proxmox VE API.","secret":true},"csrfPreventionToken":{"type":"string","description":"The pre-authenticated CSRF Prevention Token for the Proxmox VE API.","secret":true},"endpoint":{"type":"string","description":"The endpoint for the Proxmox VE API."},"insecure":{"type":"boolean","description":"Whether to skip the TLS verification step."},"minTls":{"type":"string","description":"The minimum required TLS version for API calls.Supported values: `1.0|1.1|1.2|1.3`. Defaults to `1.3`."},"otp":{"type":"string","description":"The one-time password for the Proxmox VE API.","deprecationMessage":"The \u003cspan pulumi-lang-nodejs=\"`otp`\" pulumi-lang-dotnet=\"`Otp`\" pulumi-lang-go=\"`otp`\" pulumi-lang-python=\"`otp`\" pulumi-lang-yaml=\"`otp`\" pulumi-lang-java=\"`otp`\"\u003e`otp`\u003c/span\u003e attribute is deprecated and will be removed in a future release. Please use the \u003cspan pulumi-lang-nodejs=\"`apiToken`\" pulumi-lang-dotnet=\"`ApiToken`\" pulumi-lang-go=\"`apiToken`\" pulumi-lang-python=\"`api_token`\" pulumi-lang-yaml=\"`apiToken`\" pulumi-lang-java=\"`apiToken`\"\u003e`api_token`\u003c/span\u003e attribute instead."},"password":{"type":"string","description":"The password for the Proxmox VE API.","secret":true},"randomVmIdEnd":{"type":"integer","description":"The ending number for random VM / Container IDs."},"randomVmIdStart":{"type":"integer","description":"The starting number for random VM / Container IDs."},"randomVmIds":{"type":"boolean","description":"Whether to generate random VM / Container IDs."},"ssh":{"$ref":"#/types/proxmoxve:config/ssh:ssh","description":"The SSH configuration for the Proxmox nodes."},"tmpDir":{"type":"string","description":"The alternative temporary directory."},"username":{"type":"string","description":"The username for the Proxmox VE API."}}},"types":{"proxmoxve:Acme/CertificateDomain:CertificateDomain":{"properties":{"alias":{"type":"string","description":"An optional alias domain for DNS validation. This allows you to validate the domain using a different domain's DNS records.\n"},"domain":{"type":"string","description":"The domain name to include in the certificate.\n"},"plugin":{"type":"string","description":"The DNS plugin to use for DNS-01 challenge validation. If not specified, the standalone HTTP-01 challenge will be used.\n"}},"type":"object","required":["domain"]},"proxmoxve:Acme/getAccountAccount:getAccountAccount":{"properties":{"contacts":{"type":"array","items":{"type":"string"},"description":"An array of contact email addresses.\n"},"createdAt":{"type":"string","description":"The timestamp of the account creation.\n"},"status":{"type":"string","description":"The status of the account. Can be one of \u003cspan pulumi-lang-nodejs=\"`valid`\" pulumi-lang-dotnet=\"`Valid`\" pulumi-lang-go=\"`valid`\" pulumi-lang-python=\"`valid`\" pulumi-lang-yaml=\"`valid`\" pulumi-lang-java=\"`valid`\"\u003e`valid`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`deactivated`\" pulumi-lang-dotnet=\"`Deactivated`\" pulumi-lang-go=\"`deactivated`\" pulumi-lang-python=\"`deactivated`\" pulumi-lang-yaml=\"`deactivated`\" pulumi-lang-java=\"`deactivated`\"\u003e`deactivated`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`revoked`\" pulumi-lang-dotnet=\"`Revoked`\" pulumi-lang-go=\"`revoked`\" pulumi-lang-python=\"`revoked`\" pulumi-lang-yaml=\"`revoked`\" pulumi-lang-java=\"`revoked`\"\u003e`revoked`\u003c/span\u003e.\n"}},"type":"object","required":["contacts","createdAt","status"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Acme/getPluginsPlugin:getPluginsPlugin":{"properties":{"api":{"type":"string","description":"API plugin name.\n"},"data":{"type":"object","additionalProperties":{"type":"string"},"description":"DNS plugin data.\n"},"digest":{"type":"string","description":"Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.\n"},"plugin":{"type":"string","description":"ACME Plugin ID name.\n"},"type":{"type":"string","description":"ACME challenge type (dns, standalone).\n"},"validationDelay":{"type":"integer","description":"Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records (0 - 172800).\n"}},"type":"object","required":["api","data","digest","plugin","type","validationDelay"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:CT/ContainerClone:ContainerClone":{"properties":{"datastoreId":{"type":"string","description":"The identifier for the target datastore.\n","willReplaceOnChanges":true},"nodeName":{"type":"string","description":"The name of the source node (leave blank, if\nequal to the \u003cspan pulumi-lang-nodejs=\"`nodeName`\" pulumi-lang-dotnet=\"`NodeName`\" pulumi-lang-go=\"`nodeName`\" pulumi-lang-python=\"`node_name`\" pulumi-lang-yaml=\"`nodeName`\" pulumi-lang-java=\"`nodeName`\"\u003e`node_name`\u003c/span\u003e argument).\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"The identifier for the source container.\n","willReplaceOnChanges":true}},"type":"object","required":["vmId"]},"proxmoxve:CT/ContainerConsole:ContainerConsole":{"properties":{"enabled":{"type":"boolean","description":"Whether to enable the console device (defaults\nto \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"ttyCount":{"type":"integer","description":"The number of available TTY (defaults to \u003cspan pulumi-lang-nodejs=\"`2`\" pulumi-lang-dotnet=\"`2`\" pulumi-lang-go=\"`2`\" pulumi-lang-python=\"`2`\" pulumi-lang-yaml=\"`2`\" pulumi-lang-java=\"`2`\"\u003e`2`\u003c/span\u003e).\n"},"type":{"type":"string","description":"The console mode (defaults to \u003cspan pulumi-lang-nodejs=\"`tty`\" pulumi-lang-dotnet=\"`Tty`\" pulumi-lang-go=\"`tty`\" pulumi-lang-python=\"`tty`\" pulumi-lang-yaml=\"`tty`\" pulumi-lang-java=\"`tty`\"\u003e`tty`\u003c/span\u003e).\n"}},"type":"object"},"proxmoxve:CT/ContainerCpu:ContainerCpu":{"properties":{"architecture":{"type":"string","description":"The CPU architecture (defaults to \u003cspan pulumi-lang-nodejs=\"`amd64`\" pulumi-lang-dotnet=\"`Amd64`\" pulumi-lang-go=\"`amd64`\" pulumi-lang-python=\"`amd64`\" pulumi-lang-yaml=\"`amd64`\" pulumi-lang-java=\"`amd64`\"\u003e`amd64`\u003c/span\u003e).\n"},"cores":{"type":"integer","description":"The number of CPU cores (defaults to \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e).\n"},"units":{"type":"integer","description":"The CPU units (defaults to \u003cspan pulumi-lang-nodejs=\"`1024`\" pulumi-lang-dotnet=\"`1024`\" pulumi-lang-go=\"`1024`\" pulumi-lang-python=\"`1024`\" pulumi-lang-yaml=\"`1024`\" pulumi-lang-java=\"`1024`\"\u003e`1024`\u003c/span\u003e).\n"}},"type":"object"},"proxmoxve:CT/ContainerDevicePassthrough:ContainerDevicePassthrough":{"properties":{"denyWrite":{"type":"boolean","description":"Deny the container to write to the device (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"gid":{"type":"integer","description":"Group ID to be assigned to the device node.\n"},"mode":{"type":"string","description":"Access mode to be set on the device node. Must be a\n4-digit octal number.\n"},"path":{"type":"string","description":"Device to pass through to the container (e.g. `/dev/sda`).\n"},"uid":{"type":"integer","description":"User ID to be assigned to the device node.\n"}},"type":"object","required":["path"]},"proxmoxve:CT/ContainerDisk:ContainerDisk":{"properties":{"acl":{"type":"boolean","description":"Explicitly enable or disable ACL support\n"},"datastoreId":{"type":"string","description":"The identifier for the datastore to create the\ndisk in (defaults to \u003cspan pulumi-lang-nodejs=\"`local`\" pulumi-lang-dotnet=\"`Local`\" pulumi-lang-go=\"`local`\" pulumi-lang-python=\"`local`\" pulumi-lang-yaml=\"`local`\" pulumi-lang-java=\"`local`\"\u003e`local`\u003c/span\u003e).\n","willReplaceOnChanges":true},"mountOptions":{"type":"array","items":{"type":"string"},"description":"List of extra mount options.\n"},"pathInDatastore":{"type":"string","description":"The in-datastore path to the disk image.\nUse this attribute for cross-resource references.\n"},"quota":{"type":"boolean","description":"Enable user quotas for the container rootfs\n"},"replicate":{"type":"boolean","description":"Will include this volume to a storage replica job\n"},"size":{"type":"integer","description":"The size of the root filesystem in gigabytes (defaults\nto \u003cspan pulumi-lang-nodejs=\"`4`\" pulumi-lang-dotnet=\"`4`\" pulumi-lang-go=\"`4`\" pulumi-lang-python=\"`4`\" pulumi-lang-yaml=\"`4`\" pulumi-lang-java=\"`4`\"\u003e`4`\u003c/span\u003e). When set to 0 a directory or zfs/btrfs subvolume will be created.\nRequires \u003cspan pulumi-lang-nodejs=\"`datastoreId`\" pulumi-lang-dotnet=\"`DatastoreId`\" pulumi-lang-go=\"`datastoreId`\" pulumi-lang-python=\"`datastore_id`\" pulumi-lang-yaml=\"`datastoreId`\" pulumi-lang-java=\"`datastoreId`\"\u003e`datastore_id`\u003c/span\u003e to be set.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["pathInDatastore"]}}},"proxmoxve:CT/ContainerFeatures:ContainerFeatures":{"properties":{"fuse":{"type":"boolean","description":"Whether the container supports FUSE mounts (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e)\n"},"keyctl":{"type":"boolean","description":"Whether the container supports `keyctl()` system call (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e)\n"},"mounts":{"type":"array","items":{"type":"string"},"description":"List of allowed mount types (\u003cspan pulumi-lang-nodejs=\"`cifs`\" pulumi-lang-dotnet=\"`Cifs`\" pulumi-lang-go=\"`cifs`\" pulumi-lang-python=\"`cifs`\" pulumi-lang-yaml=\"`cifs`\" pulumi-lang-java=\"`cifs`\"\u003e`cifs`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`nfs`\" pulumi-lang-dotnet=\"`Nfs`\" pulumi-lang-go=\"`nfs`\" pulumi-lang-python=\"`nfs`\" pulumi-lang-yaml=\"`nfs`\" pulumi-lang-java=\"`nfs`\"\u003e`nfs`\u003c/span\u003e)\n"},"nesting":{"type":"boolean","description":"Whether the container is nested (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e)\n"}},"type":"object"},"proxmoxve:CT/ContainerInitialization:ContainerInitialization":{"properties":{"dns":{"$ref":"#/types/proxmoxve:CT/ContainerInitializationDns:ContainerInitializationDns","description":"The DNS configuration.\n"},"hostname":{"type":"string","description":"The hostname.\n"},"ipConfigs":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerInitializationIpConfig:ContainerInitializationIpConfig"},"description":"The IP configuration (one block per network\ndevice).\n"},"userAccount":{"$ref":"#/types/proxmoxve:CT/ContainerInitializationUserAccount:ContainerInitializationUserAccount","description":"The user account configuration.\n","willReplaceOnChanges":true}},"type":"object"},"proxmoxve:CT/ContainerInitializationDns:ContainerInitializationDns":{"properties":{"domain":{"type":"string","description":"The DNS search domain.\n"},"server":{"type":"string","description":"The DNS server.\nThe \u003cspan pulumi-lang-nodejs=\"`server`\" pulumi-lang-dotnet=\"`Server`\" pulumi-lang-go=\"`server`\" pulumi-lang-python=\"`server`\" pulumi-lang-yaml=\"`server`\" pulumi-lang-java=\"`server`\"\u003e`server`\u003c/span\u003e attribute is deprecated and will be removed in a future release. Please use\nthe \u003cspan pulumi-lang-nodejs=\"`servers`\" pulumi-lang-dotnet=\"`Servers`\" pulumi-lang-go=\"`servers`\" pulumi-lang-python=\"`servers`\" pulumi-lang-yaml=\"`servers`\" pulumi-lang-java=\"`servers`\"\u003e`servers`\u003c/span\u003e attribute instead.\n","deprecationMessage":"The \u003cspan pulumi-lang-nodejs=\"`server`\" pulumi-lang-dotnet=\"`Server`\" pulumi-lang-go=\"`server`\" pulumi-lang-python=\"`server`\" pulumi-lang-yaml=\"`server`\" pulumi-lang-java=\"`server`\"\u003e`server`\u003c/span\u003e attribute is deprecated and will be removed in a future release. Please use the \u003cspan pulumi-lang-nodejs=\"`servers`\" pulumi-lang-dotnet=\"`Servers`\" pulumi-lang-go=\"`servers`\" pulumi-lang-python=\"`servers`\" pulumi-lang-yaml=\"`servers`\" pulumi-lang-java=\"`servers`\"\u003e`servers`\u003c/span\u003e attribute instead."},"servers":{"type":"array","items":{"type":"string"},"description":"The list of DNS servers.\n"}},"type":"object"},"proxmoxve:CT/ContainerInitializationIpConfig:ContainerInitializationIpConfig":{"properties":{"ipv4":{"$ref":"#/types/proxmoxve:CT/ContainerInitializationIpConfigIpv4:ContainerInitializationIpConfigIpv4","description":"The IPv4 configuration.\n"},"ipv6":{"$ref":"#/types/proxmoxve:CT/ContainerInitializationIpConfigIpv6:ContainerInitializationIpConfigIpv6","description":"The IPv6 configuration.\n"}},"type":"object"},"proxmoxve:CT/ContainerInitializationIpConfigIpv4:ContainerInitializationIpConfigIpv4":{"properties":{"address":{"type":"string","description":"The IPv4 address in CIDR notation\n(e.g. 192.168.2.2/24). Alternatively, set this to \u003cspan pulumi-lang-nodejs=\"`dhcp`\" pulumi-lang-dotnet=\"`Dhcp`\" pulumi-lang-go=\"`dhcp`\" pulumi-lang-python=\"`dhcp`\" pulumi-lang-yaml=\"`dhcp`\" pulumi-lang-java=\"`dhcp`\"\u003e`dhcp`\u003c/span\u003e for\nautodiscovery.\n"},"gateway":{"type":"string","description":"The IPv4 gateway (must be omitted\nwhen \u003cspan pulumi-lang-nodejs=\"`dhcp`\" pulumi-lang-dotnet=\"`Dhcp`\" pulumi-lang-go=\"`dhcp`\" pulumi-lang-python=\"`dhcp`\" pulumi-lang-yaml=\"`dhcp`\" pulumi-lang-java=\"`dhcp`\"\u003e`dhcp`\u003c/span\u003e is used as the address).\n"}},"type":"object"},"proxmoxve:CT/ContainerInitializationIpConfigIpv6:ContainerInitializationIpConfigIpv6":{"properties":{"address":{"type":"string","description":"The IPv6 address in CIDR notation\n(e.g. fd1c::7334/64). Alternatively, set this\nto \u003cspan pulumi-lang-nodejs=\"`dhcp`\" pulumi-lang-dotnet=\"`Dhcp`\" pulumi-lang-go=\"`dhcp`\" pulumi-lang-python=\"`dhcp`\" pulumi-lang-yaml=\"`dhcp`\" pulumi-lang-java=\"`dhcp`\"\u003e`dhcp`\u003c/span\u003e for DHCPv6, or \u003cspan pulumi-lang-nodejs=\"`auto`\" pulumi-lang-dotnet=\"`Auto`\" pulumi-lang-go=\"`auto`\" pulumi-lang-python=\"`auto`\" pulumi-lang-yaml=\"`auto`\" pulumi-lang-java=\"`auto`\"\u003e`auto`\u003c/span\u003e for SLAAC.\n"},"gateway":{"type":"string","description":"The IPv6 gateway (must be omitted\nwhen \u003cspan pulumi-lang-nodejs=\"`dhcp`\" pulumi-lang-dotnet=\"`Dhcp`\" pulumi-lang-go=\"`dhcp`\" pulumi-lang-python=\"`dhcp`\" pulumi-lang-yaml=\"`dhcp`\" pulumi-lang-java=\"`dhcp`\"\u003e`dhcp`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`auto`\" pulumi-lang-dotnet=\"`Auto`\" pulumi-lang-go=\"`auto`\" pulumi-lang-python=\"`auto`\" pulumi-lang-yaml=\"`auto`\" pulumi-lang-java=\"`auto`\"\u003e`auto`\u003c/span\u003e are used as the address).\n"}},"type":"object"},"proxmoxve:CT/ContainerInitializationUserAccount:ContainerInitializationUserAccount":{"properties":{"keys":{"type":"array","items":{"type":"string"},"description":"The SSH keys for the root account.\n","willReplaceOnChanges":true},"password":{"type":"string","description":"The password for the root account.\n","secret":true,"willReplaceOnChanges":true}},"type":"object"},"proxmoxve:CT/ContainerMemory:ContainerMemory":{"properties":{"dedicated":{"type":"integer","description":"The dedicated memory in megabytes (defaults\nto \u003cspan pulumi-lang-nodejs=\"`512`\" pulumi-lang-dotnet=\"`512`\" pulumi-lang-go=\"`512`\" pulumi-lang-python=\"`512`\" pulumi-lang-yaml=\"`512`\" pulumi-lang-java=\"`512`\"\u003e`512`\u003c/span\u003e).\n"},"swap":{"type":"integer","description":"The swap size in megabytes (defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e).\n"}},"type":"object"},"proxmoxve:CT/ContainerMountPoint:ContainerMountPoint":{"properties":{"acl":{"type":"boolean","description":"Explicitly enable or disable ACL support.\n"},"backup":{"type":"boolean","description":"Whether to include the mount point in backups (only\nused for volume mount points, defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"mountOptions":{"type":"array","items":{"type":"string"},"description":"List of extra mount options.\n"},"path":{"type":"string","description":"Path to the mount point as seen from inside the\ncontainer.\n"},"pathInDatastore":{"type":"string","description":"The in-datastore path to the mount point volume.\nUse this attribute for cross-resource references instead of \u003cspan pulumi-lang-nodejs=\"`volume`\" pulumi-lang-dotnet=\"`Volume`\" pulumi-lang-go=\"`volume`\" pulumi-lang-python=\"`volume`\" pulumi-lang-yaml=\"`volume`\" pulumi-lang-java=\"`volume`\"\u003e`volume`\u003c/span\u003e.\n"},"quota":{"type":"boolean","description":"Enable user quotas inside the container (not supported\nwith ZFS subvolumes).\n"},"readOnly":{"type":"boolean","description":"Read-only mount point.\n"},"replicate":{"type":"boolean","description":"Will include this volume to a storage replica job.\n"},"shared":{"type":"boolean","description":"Mark this non-volume mount point as available on all\nnodes.\n"},"size":{"type":"string","description":"Volume size (only for volume mount points).\nCan be specified with a unit suffix (e.g. `10G`).\n","willReplaceOnChanges":true},"volume":{"type":"string","description":"Volume, device or directory to mount into the\ncontainer.\n","willReplaceOnChanges":true}},"type":"object","required":["path","volume"],"language":{"nodejs":{"requiredOutputs":["path","pathInDatastore","volume"]}}},"proxmoxve:CT/ContainerNetworkInterface:ContainerNetworkInterface":{"properties":{"bridge":{"type":"string","description":"The name of the network bridge (defaults\nto \u003cspan pulumi-lang-nodejs=\"`vmbr0`\" pulumi-lang-dotnet=\"`Vmbr0`\" pulumi-lang-go=\"`vmbr0`\" pulumi-lang-python=\"`vmbr0`\" pulumi-lang-yaml=\"`vmbr0`\" pulumi-lang-java=\"`vmbr0`\"\u003e`vmbr0`\u003c/span\u003e).\n"},"enabled":{"type":"boolean","description":"Whether to enable the network device (defaults\nto \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"firewall":{"type":"boolean","description":"Whether this interface's firewall rules should be\nused (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"macAddress":{"type":"string","description":"The MAC address.\n"},"mtu":{"type":"integer","description":"Maximum transfer unit of the interface. Cannot be\nlarger than the bridge's MTU.\n"},"name":{"type":"string","description":"The network interface name.\n"},"rateLimit":{"type":"number","description":"The rate limit in megabytes per second.\n"},"vlanId":{"type":"integer","description":"The VLAN identifier.\n"}},"type":"object","required":["name"],"language":{"nodejs":{"requiredOutputs":["macAddress","name"]}}},"proxmoxve:CT/ContainerOperatingSystem:ContainerOperatingSystem":{"properties":{"templateFileId":{"type":"string","description":"The identifier for an OS template file.\nThe ID format is `\u003cdatastore_id\u003e:\u003ccontent_type\u003e/\u003cfile_name\u003e`, for example `local:iso/jammy-server-cloudimg-amd64.tar.gz`.\nCan be also taken from \u003cspan pulumi-lang-nodejs=\"`proxmoxve.Download.File`\" pulumi-lang-dotnet=\"`proxmoxve.Download.File`\" pulumi-lang-go=\"`Download.File`\" pulumi-lang-python=\"`Download.File`\" pulumi-lang-yaml=\"`proxmoxve.Download.File`\" pulumi-lang-java=\"`proxmoxve.Download.File`\"\u003e`proxmoxve.Download.File`\u003c/span\u003e resource, or from the output of `pvesm list \u003cstorage\u003e`.\n","willReplaceOnChanges":true},"type":{"type":"string","description":"The type (defaults to \u003cspan pulumi-lang-nodejs=\"`unmanaged`\" pulumi-lang-dotnet=\"`Unmanaged`\" pulumi-lang-go=\"`unmanaged`\" pulumi-lang-python=\"`unmanaged`\" pulumi-lang-yaml=\"`unmanaged`\" pulumi-lang-java=\"`unmanaged`\"\u003e`unmanaged`\u003c/span\u003e).\n"}},"type":"object","required":["templateFileId"]},"proxmoxve:CT/ContainerStartup:ContainerStartup":{"properties":{"downDelay":{"type":"integer","description":"A non-negative number defining the delay in\nseconds before the next container is shut down.\n"},"order":{"type":"integer","description":"A non-negative number defining the general startup\norder.\n"},"upDelay":{"type":"integer","description":"A non-negative number defining the delay in\nseconds before the next container is started.\n"}},"type":"object"},"proxmoxve:CT/ContainerWaitForIp:ContainerWaitForIp":{"properties":{"ipv4":{"type":"boolean","description":"Wait for at least one IPv4 address (non-loopback, non-link-local) (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"ipv6":{"type":"boolean","description":"Wait for at least one IPv6 address (non-loopback, non-link-local) (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n\nWhen \u003cspan pulumi-lang-nodejs=\"`waitForIp`\" pulumi-lang-dotnet=\"`WaitForIp`\" pulumi-lang-go=\"`waitForIp`\" pulumi-lang-python=\"`wait_for_ip`\" pulumi-lang-yaml=\"`waitForIp`\" pulumi-lang-java=\"`waitForIp`\"\u003e`wait_for_ip`\u003c/span\u003e is not specified or both \u003cspan pulumi-lang-nodejs=\"`ipv4`\" pulumi-lang-dotnet=\"`Ipv4`\" pulumi-lang-go=\"`ipv4`\" pulumi-lang-python=\"`ipv4`\" pulumi-lang-yaml=\"`ipv4`\" pulumi-lang-java=\"`ipv4`\"\u003e`ipv4`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`ipv6`\" pulumi-lang-dotnet=\"`Ipv6`\" pulumi-lang-go=\"`ipv6`\" pulumi-lang-python=\"`ipv6`\" pulumi-lang-yaml=\"`ipv6`\" pulumi-lang-java=\"`ipv6`\"\u003e`ipv6`\u003c/span\u003e are \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, the provider waits for any valid global unicast address (IPv4 or IPv6). In dual-stack networks where DHCPv6 responds faster, this may result in only IPv6 addresses being available. Set `ipv4 = true` to ensure IPv4 address availability.\n"}},"type":"object"},"proxmoxve:Cluster/OptionsNextId:OptionsNextId":{"properties":{"lower":{"type":"integer","description":"The minimum number for the next free VM ID. Must be higher or equal to 100\n"},"upper":{"type":"integer","description":"The maximum number for the next free VM ID. Must be less or equal to 999999999\n"}},"type":"object"},"proxmoxve:Cluster/OptionsNotify:OptionsNotify":{"properties":{"haFencingMode":{"type":"string","description":"Cluster-wide notification settings for the HA fencing mode. Must be \u003cspan pulumi-lang-nodejs=\"`always`\" pulumi-lang-dotnet=\"`Always`\" pulumi-lang-go=\"`always`\" pulumi-lang-python=\"`always`\" pulumi-lang-yaml=\"`always`\" pulumi-lang-java=\"`always`\"\u003e`always`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`never`\" pulumi-lang-dotnet=\"`Never`\" pulumi-lang-go=\"`never`\" pulumi-lang-python=\"`never`\" pulumi-lang-yaml=\"`never`\" pulumi-lang-java=\"`never`\"\u003e`never`\u003c/span\u003e.\n"},"haFencingTarget":{"type":"string","description":"Cluster-wide notification settings for the HA fencing target.\n"},"packageUpdates":{"type":"string","description":"Cluster-wide notification settings for package updates. Must be \u003cspan pulumi-lang-nodejs=\"`auto`\" pulumi-lang-dotnet=\"`Auto`\" pulumi-lang-go=\"`auto`\" pulumi-lang-python=\"`auto`\" pulumi-lang-yaml=\"`auto`\" pulumi-lang-java=\"`auto`\"\u003e`auto`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`always`\" pulumi-lang-dotnet=\"`Always`\" pulumi-lang-go=\"`always`\" pulumi-lang-python=\"`always`\" pulumi-lang-yaml=\"`always`\" pulumi-lang-java=\"`always`\"\u003e`always`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`never`\" pulumi-lang-dotnet=\"`Never`\" pulumi-lang-go=\"`never`\" pulumi-lang-python=\"`never`\" pulumi-lang-yaml=\"`never`\" pulumi-lang-java=\"`never`\"\u003e`never`\u003c/span\u003e.\n"},"packageUpdatesTarget":{"type":"string","description":"Cluster-wide notification settings for the package updates target.\n"},"replication":{"type":"string","description":"Cluster-wide notification settings for replication. Must be \u003cspan pulumi-lang-nodejs=\"`always`\" pulumi-lang-dotnet=\"`Always`\" pulumi-lang-go=\"`always`\" pulumi-lang-python=\"`always`\" pulumi-lang-yaml=\"`always`\" pulumi-lang-java=\"`always`\"\u003e`always`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`never`\" pulumi-lang-dotnet=\"`Never`\" pulumi-lang-go=\"`never`\" pulumi-lang-python=\"`never`\" pulumi-lang-yaml=\"`never`\" pulumi-lang-java=\"`never`\"\u003e`never`\u003c/span\u003e.\n"},"replicationTarget":{"type":"string","description":"Cluster-wide notification settings for the replication target.\n"}},"type":"object"},"proxmoxve:Hardware/getMappingsCheck:getMappingsCheck":{"properties":{"mappingId":{"type":"string","description":"The corresponding hardware mapping ID of the node check diagnostic entry.\n"},"message":{"type":"string","description":"The message of the node check diagnostic entry.\n"},"severity":{"type":"string","description":"The severity of the node check diagnostic entry.\n"}},"type":"object","required":["mappingId","message","severity"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Hardware/mapping/DirMap:DirMap":{"properties":{"node":{"type":"string","description":"The node this mapping applies to.\n"},"path":{"type":"string","description":"The path of the map. For directory mappings the path is required and refers to the POSIX path of the directory as visible from the node.\n"}},"type":"object","required":["node","path"]},"proxmoxve:Hardware/mapping/PciMap:PciMap":{"properties":{"comment":{"type":"string","description":"The comment of the mapped PCI device.\n"},"id":{"type":"string","description":"The ID of the map.\n"},"iommuGroup":{"type":"integer","description":"The IOMMU group of the map. Not mandatory for the Proxmox VE API call, but causes a PCI hardware mapping to be incomplete when not set\n"},"node":{"type":"string","description":"The node name of the map.\n"},"path":{"type":"string","description":"The path of the map.\n"},"subsystemId":{"type":"string","description":"The subsystem ID group of the map. Not mandatory for the Proxmox VE API call, but causes a PCI hardware mapping to be incomplete when not set\n"}},"type":"object","required":["id","node","path"]},"proxmoxve:Hardware/mapping/UsbMap:UsbMap":{"properties":{"comment":{"type":"string","description":"The comment of the mapped USB device.\n"},"id":{"type":"string","description":"The ID of the map.\n"},"node":{"type":"string","description":"The node name of the map.\n"},"path":{"type":"string","description":"The path of the map. For hardware mappings of type USB the path is optional and indicates that the device is mapped through the device ID instead of ports.\n"}},"type":"object","required":["id","node"]},"proxmoxve:Hardware/mapping/getDirMap:getDirMap":{"properties":{"node":{"type":"string","description":"The node name attribute of the map.\n"},"path":{"type":"string","description":"The path attribute of the map.\n"}},"type":"object","required":["node","path"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Hardware/mapping/getPciMap:getPciMap":{"properties":{"comment":{"type":"string","description":"The comment of the mapped PCI device.\n"},"id":{"type":"string","description":"The ID attribute of the map.\n"},"iommuGroup":{"type":"integer","description":"The IOMMU group attribute of the map.\n"},"node":{"type":"string","description":"The node name attribute of the map.\n"},"path":{"type":"string","description":"The path attribute of the map.\n"},"subsystemId":{"type":"string","description":"The subsystem ID attribute of the map.Not mandatory for the Proxmox VE API call, but causes a PCI hardware mapping to be incomplete when not set.\n"}},"type":"object","required":["comment","id","iommuGroup","node","path","subsystemId"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Hardware/mapping/getUsbMap:getUsbMap":{"properties":{"comment":{"type":"string","description":"The comment of the mapped USB device.\n"},"id":{"type":"string","description":"The ID attribute of the map.\n"},"node":{"type":"string","description":"The node name attribute of the map.\n"},"path":{"type":"string","description":"The path attribute of the map.\n"}},"type":"object","required":["comment","id","node","path"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Network/FirewallIPSetCidr:FirewallIPSetCidr":{"properties":{"comment":{"type":"string","description":"Arbitrary string annotation.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"Network/IP specification in CIDR format.\n","willReplaceOnChanges":true},"nomatch":{"type":"boolean","description":"Entries marked as \u003cspan pulumi-lang-nodejs=\"`nomatch`\" pulumi-lang-dotnet=\"`Nomatch`\" pulumi-lang-go=\"`nomatch`\" pulumi-lang-python=\"`nomatch`\" pulumi-lang-yaml=\"`nomatch`\" pulumi-lang-java=\"`nomatch`\"\u003e`nomatch`\u003c/span\u003e are skipped as if those\nwere not added to the set.\n","willReplaceOnChanges":true}},"type":"object","required":["name"]},"proxmoxve:Network/FirewallLogRatelimit:FirewallLogRatelimit":{"properties":{"burst":{"type":"integer","description":"Initial burst of packages which will always get\nlogged before the rate is applied (defaults to \u003cspan pulumi-lang-nodejs=\"`5`\" pulumi-lang-dotnet=\"`5`\" pulumi-lang-go=\"`5`\" pulumi-lang-python=\"`5`\" pulumi-lang-yaml=\"`5`\" pulumi-lang-java=\"`5`\"\u003e`5`\u003c/span\u003e).\n"},"enabled":{"type":"boolean","description":"Enable or disable the log rate limit.\n"},"rate":{"type":"string","description":"Frequency with which the burst bucket gets refilled\n(defaults to `1/second`).\n"}},"type":"object"},"proxmoxve:Network/FirewallRulesRule:FirewallRulesRule":{"properties":{"action":{"type":"string","description":"Rule action (`ACCEPT`, `DROP`, `REJECT`).\n"},"comment":{"type":"string","description":"Rule comment.\n"},"dest":{"type":"string","description":"Restrict packet destination address. This can\nrefer to a single IP address, an IP set ('+ipsetname') or an IP\nalias definition. You can also specify an address range\nlike `20.34.101.207-201.3.9.99`, or a list of IP addresses and\nnetworks (entries are separated by comma). Please do not mix IPv4\nand IPv6 addresses inside such lists.\n"},"dport":{"type":"string","description":"Restrict TCP/UDP destination port. You can use\nservice names or simple numbers (0-65535), as defined\nin `/etc/services`. Port ranges can be specified with '\\d+:\\d+', for\nexample `80:85`, and you can use comma separated list to match\nseveral ports or ranges.\n"},"enabled":{"type":"boolean","description":"Enable this rule. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"},"iface":{"type":"string","description":"Network interface name. You have to use network\nconfiguration key names for VMs and containers ('net\\d+'). Host\nrelated rules can use arbitrary strings.\n"},"log":{"type":"string","description":"Log level for this rule (\u003cspan pulumi-lang-nodejs=\"`emerg`\" pulumi-lang-dotnet=\"`Emerg`\" pulumi-lang-go=\"`emerg`\" pulumi-lang-python=\"`emerg`\" pulumi-lang-yaml=\"`emerg`\" pulumi-lang-java=\"`emerg`\"\u003e`emerg`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`alert`\" pulumi-lang-dotnet=\"`Alert`\" pulumi-lang-go=\"`alert`\" pulumi-lang-python=\"`alert`\" pulumi-lang-yaml=\"`alert`\" pulumi-lang-java=\"`alert`\"\u003e`alert`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`crit`\" pulumi-lang-dotnet=\"`Crit`\" pulumi-lang-go=\"`crit`\" pulumi-lang-python=\"`crit`\" pulumi-lang-yaml=\"`crit`\" pulumi-lang-java=\"`crit`\"\u003e`crit`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`err`\" pulumi-lang-dotnet=\"`Err`\" pulumi-lang-go=\"`err`\" pulumi-lang-python=\"`err`\" pulumi-lang-yaml=\"`err`\" pulumi-lang-java=\"`err`\"\u003e`err`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`warning`\" pulumi-lang-dotnet=\"`Warning`\" pulumi-lang-go=\"`warning`\" pulumi-lang-python=\"`warning`\" pulumi-lang-yaml=\"`warning`\" pulumi-lang-java=\"`warning`\"\u003e`warning`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`notice`\" pulumi-lang-dotnet=\"`Notice`\" pulumi-lang-go=\"`notice`\" pulumi-lang-python=\"`notice`\" pulumi-lang-yaml=\"`notice`\" pulumi-lang-java=\"`notice`\"\u003e`notice`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e).\n"},"macro":{"type":"string","description":"Macro name. Use predefined standard macro\nfrom \u003chttps://pve.proxmox.com/pve-docs/pve-admin-guide.html#_firewall_macro_definitions\u003e\n"},"pos":{"type":"integer","description":"Position of the rule in the list.\n"},"proto":{"type":"string","description":"Restrict packet protocol. You can use protocol\nnames as defined in '/etc/protocols'.\n"},"securityGroup":{"type":"string","description":"Security group name.\n"},"source":{"type":"string","description":"Restrict packet source address. This can refer\nto a single IP address, an IP set ('+ipsetname') or an IP alias\ndefinition. You can also specify an address range\nlike `20.34.101.207-201.3.9.99`, or a list of IP addresses and\nnetworks (entries are separated by comma). Please do not mix IPv4\nand IPv6 addresses inside such lists.\n"},"sport":{"type":"string","description":"Restrict TCP/UDP source port. You can use\nservice names or simple numbers (0-65535), as defined\nin `/etc/services`. Port ranges can be specified with '\\d+:\\d+', for\nexample `80:85`, and you can use comma separated list to match\nseveral ports or ranges.\n- a security group insertion block, which includes the following arguments:\n"},"type":{"type":"string","description":"Rule type (\u003cspan pulumi-lang-nodejs=\"`in`\" pulumi-lang-dotnet=\"`In`\" pulumi-lang-go=\"`in`\" pulumi-lang-python=\"`in`\" pulumi-lang-yaml=\"`in`\" pulumi-lang-java=\"`in`\"\u003e`in`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`out`\" pulumi-lang-dotnet=\"`Out`\" pulumi-lang-go=\"`out`\" pulumi-lang-python=\"`out`\" pulumi-lang-yaml=\"`out`\" pulumi-lang-java=\"`out`\"\u003e`out`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`forward`\" pulumi-lang-dotnet=\"`Forward`\" pulumi-lang-go=\"`forward`\" pulumi-lang-python=\"`forward`\" pulumi-lang-yaml=\"`forward`\" pulumi-lang-java=\"`forward`\"\u003e`forward`\u003c/span\u003e).\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["pos"]}}},"proxmoxve:Network/FirewallSecurityGroupRule:FirewallSecurityGroupRule":{"properties":{"action":{"type":"string","description":"Rule action (`ACCEPT`, `DROP`, `REJECT`).\n"},"comment":{"type":"string","description":"Rule comment.\n"},"dest":{"type":"string","description":"Restrict packet destination address. This can refer to\na single IP address, an IP set ('+ipsetname') or an IP alias\ndefinition. You can also specify an address range like\n`20.34.101.207-201.3.9.99`, or a list of IP addresses and networks\n(entries are separated by comma). Please do not mix IPv4 and IPv6\naddresses inside such lists.\n"},"dport":{"type":"string","description":"Restrict TCP/UDP destination port. You can use\nservice names or simple numbers (0-65535), as defined in '/etc/\nservices'. Port ranges can be specified with '\\d+:\\d+', for example\n`80:85`, and you can use comma separated list to match several ports or\nranges.\n"},"enabled":{"type":"boolean","description":"Enable this rule. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"},"iface":{"type":"string","description":"Network interface name. You have to use network\nconfiguration key names for VMs and containers ('net\\d+'). Host related\nrules can use arbitrary strings.\n"},"log":{"type":"string","description":"Log level for this rule (\u003cspan pulumi-lang-nodejs=\"`emerg`\" pulumi-lang-dotnet=\"`Emerg`\" pulumi-lang-go=\"`emerg`\" pulumi-lang-python=\"`emerg`\" pulumi-lang-yaml=\"`emerg`\" pulumi-lang-java=\"`emerg`\"\u003e`emerg`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`alert`\" pulumi-lang-dotnet=\"`Alert`\" pulumi-lang-go=\"`alert`\" pulumi-lang-python=\"`alert`\" pulumi-lang-yaml=\"`alert`\" pulumi-lang-java=\"`alert`\"\u003e`alert`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`crit`\" pulumi-lang-dotnet=\"`Crit`\" pulumi-lang-go=\"`crit`\" pulumi-lang-python=\"`crit`\" pulumi-lang-yaml=\"`crit`\" pulumi-lang-java=\"`crit`\"\u003e`crit`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`err`\" pulumi-lang-dotnet=\"`Err`\" pulumi-lang-go=\"`err`\" pulumi-lang-python=\"`err`\" pulumi-lang-yaml=\"`err`\" pulumi-lang-java=\"`err`\"\u003e`err`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`warning`\" pulumi-lang-dotnet=\"`Warning`\" pulumi-lang-go=\"`warning`\" pulumi-lang-python=\"`warning`\" pulumi-lang-yaml=\"`warning`\" pulumi-lang-java=\"`warning`\"\u003e`warning`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`notice`\" pulumi-lang-dotnet=\"`Notice`\" pulumi-lang-go=\"`notice`\" pulumi-lang-python=\"`notice`\" pulumi-lang-yaml=\"`notice`\" pulumi-lang-java=\"`notice`\"\u003e`notice`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e).\n"},"macro":{"type":"string","description":"Macro name. Use predefined standard macro\nfrom \u003chttps://pve.proxmox.com/pve-docs/pve-admin-guide.html#_firewall_macro_definitions\u003e\n"},"pos":{"type":"integer","description":"Position of the rule in the list.\n"},"proto":{"type":"string","description":"Restrict packet protocol. You can use protocol names\nas defined in '/etc/protocols'.\n"},"securityGroup":{"type":"string","description":"Security group name\n"},"source":{"type":"string","description":"Restrict packet source address. This can refer\nto a single IP address, an IP set ('+ipsetname') or an IP alias\ndefinition. You can also specify an address range like\n`20.34.101.207-201.3.9.99`, or a list of IP addresses and networks (\nentries are separated by comma). Please do not mix IPv4 and IPv6\naddresses inside such lists.\n"},"sport":{"type":"string","description":"Restrict TCP/UDP source port. You can use\nservice names or simple numbers (0-65535), as defined in '/etc/\nservices'. Port ranges can be specified with '\\d+:\\d+', for example\n`80:85`, and you can use comma separated list to match several ports or\nranges.\n"},"type":{"type":"string","description":"Rule type (\u003cspan pulumi-lang-nodejs=\"`in`\" pulumi-lang-dotnet=\"`In`\" pulumi-lang-go=\"`in`\" pulumi-lang-python=\"`in`\" pulumi-lang-yaml=\"`in`\" pulumi-lang-java=\"`in`\"\u003e`in`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`out`\" pulumi-lang-dotnet=\"`Out`\" pulumi-lang-go=\"`out`\" pulumi-lang-python=\"`out`\" pulumi-lang-yaml=\"`out`\" pulumi-lang-java=\"`out`\"\u003e`out`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`forward`\" pulumi-lang-dotnet=\"`Forward`\" pulumi-lang-go=\"`forward`\" pulumi-lang-python=\"`forward`\" pulumi-lang-yaml=\"`forward`\" pulumi-lang-java=\"`forward`\"\u003e`forward`\u003c/span\u003e).\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["pos"]}}},"proxmoxve:Network/getHostsEntry:getHostsEntry":{"properties":{"address":{"type":"string","description":"The address\n"},"hostnames":{"type":"array","items":{"type":"string"},"description":"The hostnames associated with each of the IP addresses.\n"}},"type":"object","required":["address","hostnames"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Permission/GroupAcl:GroupAcl":{"properties":{"path":{"type":"string","description":"The path.\n"},"propagate":{"type":"boolean","description":"Whether to propagate to child paths.\n"},"roleId":{"type":"string","description":"The role identifier.\n"}},"type":"object","required":["path","roleId"]},"proxmoxve:Permission/PoolMember:PoolMember":{"properties":{"datastoreId":{"type":"string","description":"The datastore identifier.\n"},"id":{"type":"string","description":"The member identifier.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"type":{"type":"string","description":"The member type.\n"},"vmId":{"type":"integer","description":"The virtual machine identifier.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["datastoreId","id","nodeName","type","vmId"]}}},"proxmoxve:Permission/UserAcl:UserAcl":{"properties":{"path":{"type":"string","description":"The path.\n"},"propagate":{"type":"boolean","description":"Whether to propagate to child paths.\n"},"roleId":{"type":"string","description":"The role identifier.\n"}},"type":"object","required":["path","roleId"]},"proxmoxve:Permission/getGroupAcl:getGroupAcl":{"properties":{"path":{"type":"string","description":"The path.\n"},"propagate":{"type":"boolean","description":"Whether to propagate to child paths.\n"},"roleId":{"type":"string","description":"The role identifier.\n"}},"type":"object","required":["path","propagate","roleId"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Permission/getPoolMember:getPoolMember":{"properties":{"datastoreId":{"type":"string","description":"The datastore identifier.\n"},"id":{"type":"string","description":"The member identifier.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"type":{"type":"string","description":"The member type.\n"},"vmId":{"type":"integer","description":"The virtual machine identifier.\n"}},"type":"object","required":["datastoreId","id","nodeName","type","vmId"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Permission/getUserAcl:getUserAcl":{"properties":{"path":{"type":"string","description":"The path.\n"},"propagate":{"type":"boolean","description":"Whether to propagate to child paths.\n"},"roleId":{"type":"string","description":"The role identifier.\n"}},"type":"object","required":["path","propagate","roleId"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Sdn/SubnetDhcpRange:SubnetDhcpRange":{"properties":{"endAddress":{"type":"string","description":"End of the DHCP range.\n"},"startAddress":{"type":"string","description":"Start of the DHCP range.\n"}},"type":"object","required":["endAddress","startAddress"]},"proxmoxve:Sdn/getSubnetDhcpRange:getSubnetDhcpRange":{"properties":{"endAddress":{"type":"string","description":"End of the DHCP range.\n"},"startAddress":{"type":"string","description":"Start of the DHCP range.\n"}},"type":"object","required":["endAddress","startAddress"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Sdn/getVnetsVnet:getVnetsVnet":{"properties":{"alias":{"type":"string"},"id":{"type":"string"},"isolatePorts":{"type":"boolean"},"tag":{"type":"integer"},"vlanAware":{"type":"boolean"},"zone":{"type":"string"}},"type":"object","required":["alias","id","isolatePorts","tag","vlanAware","zone"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Sdn/getZonesZone:getZonesZone":{"properties":{"advertiseSubnets":{"type":"boolean"},"bridge":{"type":"string"},"controller":{"type":"string"},"dhcp":{"type":"string"},"disableArpNdSuppression":{"type":"boolean"},"dns":{"type":"string"},"dnsZone":{"type":"string"},"exitNodes":{"type":"array","items":{"type":"string"}},"exitNodesLocalRouting":{"type":"boolean"},"id":{"type":"string"},"ipam":{"type":"string"},"mtu":{"type":"integer"},"nodes":{"type":"array","items":{"type":"string"}},"peers":{"type":"array","items":{"type":"string"}},"pending":{"type":"boolean"},"primaryExitNode":{"type":"string"},"reverseDns":{"type":"string"},"rtImport":{"type":"string"},"serviceVlan":{"type":"integer"},"serviceVlanProtocol":{"type":"string"},"state":{"type":"string"},"type":{"type":"string"},"vrfVxlan":{"type":"integer"}},"type":"object","required":["advertiseSubnets","bridge","controller","dhcp","disableArpNdSuppression","dns","dnsZone","exitNodes","exitNodesLocalRouting","id","ipam","mtu","nodes","peers","pending","primaryExitNode","reverseDns","rtImport","serviceVlan","serviceVlanProtocol","state","type","vrfVxlan"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Storage/CIFSBackups:CIFSBackups":{"properties":{"keepAll":{"type":"boolean","description":"Specifies if all backups should be kept, regardless of their age. When set to true, other keep_* attributes must not be set.\n"},"keepDaily":{"type":"integer","description":"The number of daily backups to keep. Older backups will be removed.\n"},"keepHourly":{"type":"integer","description":"The number of hourly backups to keep. Older backups will be removed.\n"},"keepLast":{"type":"integer","description":"Specifies the number of the most recent backups to keep, regardless of their age.\n"},"keepMonthly":{"type":"integer","description":"The number of monthly backups to keep. Older backups will be removed.\n"},"keepWeekly":{"type":"integer","description":"The number of weekly backups to keep. Older backups will be removed.\n"},"keepYearly":{"type":"integer","description":"The number of yearly backups to keep. Older backups will be removed.\n"},"maxProtectedBackups":{"type":"integer","description":"The maximum number of protected backups per guest. Use '-1' for unlimited.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["keepAll"]}}},"proxmoxve:Storage/DirectoryBackups:DirectoryBackups":{"properties":{"keepAll":{"type":"boolean","description":"Specifies if all backups should be kept, regardless of their age. When set to true, other keep_* attributes must not be set.\n"},"keepDaily":{"type":"integer","description":"The number of daily backups to keep. Older backups will be removed.\n"},"keepHourly":{"type":"integer","description":"The number of hourly backups to keep. Older backups will be removed.\n"},"keepLast":{"type":"integer","description":"Specifies the number of the most recent backups to keep, regardless of their age.\n"},"keepMonthly":{"type":"integer","description":"The number of monthly backups to keep. Older backups will be removed.\n"},"keepWeekly":{"type":"integer","description":"The number of weekly backups to keep. Older backups will be removed.\n"},"keepYearly":{"type":"integer","description":"The number of yearly backups to keep. Older backups will be removed.\n"},"maxProtectedBackups":{"type":"integer","description":"The maximum number of protected backups per guest. Use '-1' for unlimited.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["keepAll"]}}},"proxmoxve:Storage/FileSourceFile:FileSourceFile":{"properties":{"changed":{"type":"boolean","description":"Whether the source file has changed since the last run\n","willReplaceOnChanges":true},"checksum":{"type":"string","description":"The SHA256 checksum of the source file.\n","willReplaceOnChanges":true},"fileName":{"type":"string","description":"The file name to use instead of the source file\nname. Useful when the source file does not have a valid file extension,\nfor example when the source file is a URL referencing a `.qcow2` image.\n","willReplaceOnChanges":true},"insecure":{"type":"boolean","description":"Whether to skip the TLS verification step for\nHTTPS sources (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n","willReplaceOnChanges":true},"minTls":{"type":"string","description":"The minimum required TLS version for HTTPS\nsources. \"Supported values: `1.0|1.1|1.2|1.3` (defaults to `1.3`).\n","willReplaceOnChanges":true},"path":{"type":"string","description":"A path to a local file or a URL.\n","willReplaceOnChanges":true}},"type":"object","required":["path"]},"proxmoxve:Storage/FileSourceRaw:FileSourceRaw":{"properties":{"data":{"type":"string","description":"The raw data.\n","willReplaceOnChanges":true},"fileName":{"type":"string","description":"The file name.\n","willReplaceOnChanges":true},"resize":{"type":"integer","description":"The number of bytes to resize the file to.\n","willReplaceOnChanges":true}},"type":"object","required":["data","fileName"]},"proxmoxve:Storage/NFSBackups:NFSBackups":{"properties":{"keepAll":{"type":"boolean","description":"Specifies if all backups should be kept, regardless of their age. When set to true, other keep_* attributes must not be set.\n"},"keepDaily":{"type":"integer","description":"The number of daily backups to keep. Older backups will be removed.\n"},"keepHourly":{"type":"integer","description":"The number of hourly backups to keep. Older backups will be removed.\n"},"keepLast":{"type":"integer","description":"Specifies the number of the most recent backups to keep, regardless of their age.\n"},"keepMonthly":{"type":"integer","description":"The number of monthly backups to keep. Older backups will be removed.\n"},"keepWeekly":{"type":"integer","description":"The number of weekly backups to keep. Older backups will be removed.\n"},"keepYearly":{"type":"integer","description":"The number of yearly backups to keep. Older backups will be removed.\n"},"maxProtectedBackups":{"type":"integer","description":"The maximum number of protected backups per guest. Use '-1' for unlimited.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["keepAll"]}}},"proxmoxve:Storage/PBSBackups:PBSBackups":{"properties":{"keepAll":{"type":"boolean","description":"Specifies if all backups should be kept, regardless of their age. When set to true, other keep_* attributes must not be set.\n"},"keepDaily":{"type":"integer","description":"The number of daily backups to keep. Older backups will be removed.\n"},"keepHourly":{"type":"integer","description":"The number of hourly backups to keep. Older backups will be removed.\n"},"keepLast":{"type":"integer","description":"Specifies the number of the most recent backups to keep, regardless of their age.\n"},"keepMonthly":{"type":"integer","description":"The number of monthly backups to keep. Older backups will be removed.\n"},"keepWeekly":{"type":"integer","description":"The number of weekly backups to keep. Older backups will be removed.\n"},"keepYearly":{"type":"integer","description":"The number of yearly backups to keep. Older backups will be removed.\n"},"maxProtectedBackups":{"type":"integer","description":"The maximum number of protected backups per guest. Use '-1' for unlimited.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["keepAll"]}}},"proxmoxve:Storage/getDatastoresDatastore:getDatastoresDatastore":{"properties":{"active":{"type":"boolean","description":"Whether the store is active.\n"},"contentTypes":{"type":"array","items":{"type":"string"},"description":"Allowed store content types.\n"},"enabled":{"type":"boolean","description":"Whether the store is enabled.\n"},"id":{"type":"string","description":"The ID of the store.\n"},"nodeName":{"type":"string","description":"The name of the node the store is on.\n"},"shared":{"type":"boolean","description":"Shared flag from store configuration.\n"},"spaceAvailable":{"type":"integer","description":"Available store space in bytes.\n"},"spaceTotal":{"type":"integer","description":"Total store space in bytes.\n"},"spaceUsed":{"type":"integer","description":"Used store space in bytes.\n"},"spaceUsedFraction":{"type":"number","description":"Used fraction (used/total).\n"},"type":{"type":"string","description":"Store type.\n"}},"type":"object","required":["contentTypes","id","nodeName","type"]},"proxmoxve:Storage/getDatastoresFilters:getDatastoresFilters":{"properties":{"contentTypes":{"type":"array","items":{"type":"string"},"description":"Only list stores with the given content types.\n"},"id":{"type":"string","description":"Only list stores with the given ID.\n"},"target":{"type":"string","description":"If \u003cspan pulumi-lang-nodejs=\"`target`\" pulumi-lang-dotnet=\"`Target`\" pulumi-lang-go=\"`target`\" pulumi-lang-python=\"`target`\" pulumi-lang-yaml=\"`target`\" pulumi-lang-java=\"`target`\"\u003e`target`\u003c/span\u003e is different to \u003cspan pulumi-lang-nodejs=\"`nodeName`\" pulumi-lang-dotnet=\"`NodeName`\" pulumi-lang-go=\"`nodeName`\" pulumi-lang-python=\"`node_name`\" pulumi-lang-yaml=\"`nodeName`\" pulumi-lang-java=\"`nodeName`\"\u003e`node_name`\u003c/span\u003e, then only lists shared stores which content is accessible on this node and the specified \u003cspan pulumi-lang-nodejs=\"`target`\" pulumi-lang-dotnet=\"`Target`\" pulumi-lang-go=\"`target`\" pulumi-lang-python=\"`target`\" pulumi-lang-yaml=\"`target`\" pulumi-lang-java=\"`target`\"\u003e`target`\u003c/span\u003e node.\n"}},"type":"object"},"proxmoxve:VM/ClonedVirtualMachineCdrom:ClonedVirtualMachineCdrom":{"properties":{"fileId":{"type":"string","description":"The file ID of the CD-ROM, or `cdrom|none`. Defaults to \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e to leave the CD-ROM empty. Use \u003cspan pulumi-lang-nodejs=\"`cdrom`\" pulumi-lang-dotnet=\"`Cdrom`\" pulumi-lang-go=\"`cdrom`\" pulumi-lang-python=\"`cdrom`\" pulumi-lang-yaml=\"`cdrom`\" pulumi-lang-java=\"`cdrom`\"\u003e`cdrom`\u003c/span\u003e to connect to the physical drive.\n"}},"type":"object"},"proxmoxve:VM/ClonedVirtualMachineClone:ClonedVirtualMachineClone":{"properties":{"bandwidthLimit":{"type":"integer","description":"Clone bandwidth limit in MB/s.\n"},"full":{"type":"boolean","description":"Perform a full clone (true) or linked clone (false).\n"},"poolId":{"type":"string","description":"Pool to assign the cloned VM to.\n"},"retries":{"type":"integer","description":"Number of retries for clone operations.\n"},"snapshotName":{"type":"string","description":"Snapshot name to clone from.\n"},"sourceNodeName":{"type":"string","description":"Source node of the VM/template. Defaults to target node if unset.\n"},"sourceVmId":{"type":"integer","description":"Source VM/template ID to clone from.\n"},"targetDatastore":{"type":"string","description":"Target datastore for cloned disks.\n"},"targetFormat":{"type":"string","description":"Target disk format for clone (e.g., raw, qcow2).\n"}},"type":"object","required":["sourceVmId"],"language":{"nodejs":{"requiredOutputs":["full","retries","sourceVmId"]}}},"proxmoxve:VM/ClonedVirtualMachineCpu:ClonedVirtualMachineCpu":{"properties":{"affinity":{"type":"string","description":"The CPU cores that are used to run the VM’s vCPU. The value is a list of CPU IDs, separated by commas. The CPU IDs are zero-based.  For example, `0,1,2,3` (which also can be shortened to `0-3`) means that the VM’s vCPUs are run on the first four CPU cores. Setting \u003cspan pulumi-lang-nodejs=\"`affinity`\" pulumi-lang-dotnet=\"`Affinity`\" pulumi-lang-go=\"`affinity`\" pulumi-lang-python=\"`affinity`\" pulumi-lang-yaml=\"`affinity`\" pulumi-lang-java=\"`affinity`\"\u003e`affinity`\u003c/span\u003e is only allowed for `root@pam` authenticated user.\n"},"architecture":{"type":"string","description":"The CPU architecture `\u003caarch64 | x86_64\u003e` (defaults to the host). Setting \u003cspan pulumi-lang-nodejs=\"`architecture`\" pulumi-lang-dotnet=\"`Architecture`\" pulumi-lang-go=\"`architecture`\" pulumi-lang-python=\"`architecture`\" pulumi-lang-yaml=\"`architecture`\" pulumi-lang-java=\"`architecture`\"\u003e`architecture`\u003c/span\u003e is only allowed for `root@pam` authenticated user.\n"},"cores":{"type":"integer","description":"The number of CPU cores per socket (defaults to \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e).\n"},"flags":{"type":"array","items":{"type":"string"},"description":"Set of additional CPU flags. Use `+FLAG` to enable, `-FLAG` to disable a flag. Custom CPU models can specify any flag supported by QEMU/KVM, VM-specific flags must be from the following set for security reasons: \u003cspan pulumi-lang-nodejs=\"`pcid`\" pulumi-lang-dotnet=\"`Pcid`\" pulumi-lang-go=\"`pcid`\" pulumi-lang-python=\"`pcid`\" pulumi-lang-yaml=\"`pcid`\" pulumi-lang-java=\"`pcid`\"\u003e`pcid`\u003c/span\u003e, `spec-ctrl`, \u003cspan pulumi-lang-nodejs=\"`ibpb`\" pulumi-lang-dotnet=\"`Ibpb`\" pulumi-lang-go=\"`ibpb`\" pulumi-lang-python=\"`ibpb`\" pulumi-lang-yaml=\"`ibpb`\" pulumi-lang-java=\"`ibpb`\"\u003e`ibpb`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ssbd`\" pulumi-lang-dotnet=\"`Ssbd`\" pulumi-lang-go=\"`ssbd`\" pulumi-lang-python=\"`ssbd`\" pulumi-lang-yaml=\"`ssbd`\" pulumi-lang-java=\"`ssbd`\"\u003e`ssbd`\u003c/span\u003e, `virt-ssbd`, `amd-ssbd`, `amd-no-ssb`, \u003cspan pulumi-lang-nodejs=\"`pdpe1gb`\" pulumi-lang-dotnet=\"`Pdpe1gb`\" pulumi-lang-go=\"`pdpe1gb`\" pulumi-lang-python=\"`pdpe1gb`\" pulumi-lang-yaml=\"`pdpe1gb`\" pulumi-lang-java=\"`pdpe1gb`\"\u003e`pdpe1gb`\u003c/span\u003e, `md-clear`, `hv-tlbflush`, `hv-evmcs`, \u003cspan pulumi-lang-nodejs=\"`aes`\" pulumi-lang-dotnet=\"`Aes`\" pulumi-lang-go=\"`aes`\" pulumi-lang-python=\"`aes`\" pulumi-lang-yaml=\"`aes`\" pulumi-lang-java=\"`aes`\"\u003e`aes`\u003c/span\u003e.\n"},"hotplugged":{"type":"integer","description":"The number of hotplugged vCPUs (defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e).\n"},"limit":{"type":"integer","description":"Limit of CPU usage (defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e which means no limit).\n"},"numa":{"type":"boolean","description":"Enable NUMA (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"sockets":{"type":"integer","description":"The number of CPU sockets (defaults to \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e).\n"},"type":{"type":"string","description":"Emulated CPU type, it's recommended to use `x86-64-v2-AES` or higher (defaults to \u003cspan pulumi-lang-nodejs=\"`kvm64`\" pulumi-lang-dotnet=\"`Kvm64`\" pulumi-lang-go=\"`kvm64`\" pulumi-lang-python=\"`kvm64`\" pulumi-lang-yaml=\"`kvm64`\" pulumi-lang-java=\"`kvm64`\"\u003e`kvm64`\u003c/span\u003e). See https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm*virtual*machines_settings for more information.\n"},"units":{"type":"integer","description":"CPU weight for a VM. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this VM gets. Number is relative to weights of all the other running VMs.\n"}},"type":"object"},"proxmoxve:VM/ClonedVirtualMachineDelete:ClonedVirtualMachineDelete":{"properties":{"disks":{"type":"array","items":{"type":"string"},"description":"Disk slots to delete (e.g., scsi2).\n"},"networks":{"type":"array","items":{"type":"string"},"description":"Network slots to delete (e.g., net1).\n"}},"type":"object"},"proxmoxve:VM/ClonedVirtualMachineDisk:ClonedVirtualMachineDisk":{"properties":{"aio":{"type":"string","description":"AIO mode (io_uring, native, threads).\n"},"backup":{"type":"boolean","description":"Include disk in backups.\n"},"cache":{"type":"string","description":"Cache mode.\n"},"datastoreId":{"type":"string","description":"Target datastore for new disks when file is not provided.\n"},"discard":{"type":"string","description":"Discard/trim behavior.\n"},"file":{"type":"string","description":"Existing volume reference (e.g., local-lvm:vm-100-disk-0).\n"},"format":{"type":"string","description":"Disk format (raw, qcow2, vmdk).\n"},"importFrom":{"type":"string","description":"Import source volume/file id.\n"},"iothread":{"type":"boolean","description":"Use IO thread.\n"},"media":{"type":"string","description":"Disk media (e.g., disk, cdrom).\n"},"replicate":{"type":"boolean","description":"Consider disk for replication.\n"},"serial":{"type":"string","description":"Disk serial number.\n"},"sizeGb":{"type":"integer","description":"Disk size (GiB) when creating new disks. **Note:** Disk shrinking is not supported. Attempting to set \u003cspan pulumi-lang-nodejs=\"`sizeGb`\" pulumi-lang-dotnet=\"`SizeGb`\" pulumi-lang-go=\"`sizeGb`\" pulumi-lang-python=\"`size_gb`\" pulumi-lang-yaml=\"`sizeGb`\" pulumi-lang-java=\"`sizeGb`\"\u003e`size_gb`\u003c/span\u003e to a value smaller than the current disk size will result in an error. Only disk expansion is allowed.\n"},"ssd":{"type":"boolean","description":"Mark disk as SSD.\n"}},"type":"object"},"proxmoxve:VM/ClonedVirtualMachineMemory:ClonedVirtualMachineMemory":{"properties":{"balloon":{"type":"integer","description":"Minimum guaranteed memory in MiB via balloon device. This is the floor amount of RAM that is always guaranteed to the VM. Setting to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e disables the balloon driver entirely (defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e).\n"},"hugepages":{"type":"string","description":"Enable hugepages for VM memory allocation. Hugepages can improve performance for memory-intensive workloads by reducing TLB misses. \n\n**Options:**\n- \u003cspan pulumi-lang-nodejs=\"`2`\" pulumi-lang-dotnet=\"`2`\" pulumi-lang-go=\"`2`\" pulumi-lang-python=\"`2`\" pulumi-lang-yaml=\"`2`\" pulumi-lang-java=\"`2`\"\u003e`2`\u003c/span\u003e - Use 2 MiB hugepages\n- \u003cspan pulumi-lang-nodejs=\"`1024`\" pulumi-lang-dotnet=\"`1024`\" pulumi-lang-go=\"`1024`\" pulumi-lang-python=\"`1024`\" pulumi-lang-yaml=\"`1024`\" pulumi-lang-java=\"`1024`\"\u003e`1024`\u003c/span\u003e - Use 1 GiB hugepages\n- \u003cspan pulumi-lang-nodejs=\"`any`\" pulumi-lang-dotnet=\"`Any`\" pulumi-lang-go=\"`any`\" pulumi-lang-python=\"`any`\" pulumi-lang-yaml=\"`any`\" pulumi-lang-java=\"`any`\"\u003e`any`\u003c/span\u003e - Use any available hugepage size\n"},"keepHugepages":{"type":"boolean","description":"Don't release hugepages when the VM shuts down. By default, hugepages are released back to the host when the VM stops. Setting this to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e keeps them allocated for faster VM startup (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"shares":{"type":"integer","description":"CPU scheduler priority for memory ballooning. This is used by the kernel fair scheduler. Higher values mean this VM gets more CPU time during memory ballooning operations. The value is relative to other running VMs (defaults to \u003cspan pulumi-lang-nodejs=\"`1000`\" pulumi-lang-dotnet=\"`1000`\" pulumi-lang-go=\"`1000`\" pulumi-lang-python=\"`1000`\" pulumi-lang-yaml=\"`1000`\" pulumi-lang-java=\"`1000`\"\u003e`1000`\u003c/span\u003e).\n"},"size":{"type":"integer","description":"Total memory available to the VM in MiB. This is the total RAM the VM can use. When ballooning is enabled (balloon \u003e 0), memory between \u003cspan pulumi-lang-nodejs=\"`balloon`\" pulumi-lang-dotnet=\"`Balloon`\" pulumi-lang-go=\"`balloon`\" pulumi-lang-python=\"`balloon`\" pulumi-lang-yaml=\"`balloon`\" pulumi-lang-java=\"`balloon`\"\u003e`balloon`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`size`\" pulumi-lang-dotnet=\"`Size`\" pulumi-lang-go=\"`size`\" pulumi-lang-python=\"`size`\" pulumi-lang-yaml=\"`size`\" pulumi-lang-java=\"`size`\"\u003e`size`\u003c/span\u003e can be reclaimed by the host. When ballooning is disabled (balloon = 0), this is the fixed amount of RAM allocated to the VM (defaults to \u003cspan pulumi-lang-nodejs=\"`512`\" pulumi-lang-dotnet=\"`512`\" pulumi-lang-go=\"`512`\" pulumi-lang-python=\"`512`\" pulumi-lang-yaml=\"`512`\" pulumi-lang-java=\"`512`\"\u003e`512`\u003c/span\u003e MiB).\n"}},"type":"object"},"proxmoxve:VM/ClonedVirtualMachineNetwork:ClonedVirtualMachineNetwork":{"properties":{"bridge":{"type":"string","description":"Bridge name.\n"},"firewall":{"type":"boolean","description":"Enable firewall on this interface.\n"},"linkDown":{"type":"boolean","description":"Keep link down.\n"},"macAddress":{"type":"string","description":"MAC address (computed if omitted).\n"},"model":{"type":"string","description":"NIC model (e.g., virtio, e1000).\n"},"mtu":{"type":"integer","description":"Interface MTU.\n"},"queues":{"type":"integer","description":"Number of multiqueue NIC queues.\n"},"rateLimit":{"type":"number","description":"Rate limit (MB/s).\n"},"tag":{"type":"integer","description":"VLAN tag.\n"},"trunks":{"type":"array","items":{"type":"integer"},"description":"Trunk VLAN IDs.\n"}},"type":"object"},"proxmoxve:VM/ClonedVirtualMachineRng:ClonedVirtualMachineRng":{"properties":{"maxBytes":{"type":"integer","description":"Maximum bytes of entropy allowed to get injected into the guest every period. Use 0 to disable limiting (potentially dangerous).\n"},"period":{"type":"integer","description":"Period in milliseconds to limit entropy injection to the guest. Use 0 to disable limiting (potentially dangerous).\n"},"source":{"type":"string","description":"The file on the host to gather entropy from. In most cases, `/dev/urandom` should be preferred over `/dev/random` to avoid entropy-starvation issues on the host.\n"}},"type":"object"},"proxmoxve:VM/ClonedVirtualMachineTimeouts:ClonedVirtualMachineTimeouts":{"properties":{"create":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"},"delete":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"},"read":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"},"update":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"}},"type":"object"},"proxmoxve:VM/ClonedVirtualMachineVga:ClonedVirtualMachineVga":{"properties":{"clipboard":{"type":"string","description":"Enable a specific clipboard. If not set, depending on the display type the SPICE one will be added. Currently only \u003cspan pulumi-lang-nodejs=\"`vnc`\" pulumi-lang-dotnet=\"`Vnc`\" pulumi-lang-go=\"`vnc`\" pulumi-lang-python=\"`vnc`\" pulumi-lang-yaml=\"`vnc`\" pulumi-lang-java=\"`vnc`\"\u003e`vnc`\u003c/span\u003e is available. Migration with VNC clipboard is not supported by Proxmox.\n"},"memory":{"type":"integer","description":"The VGA memory in megabytes (4-512 MB). Has no effect with serial display.\n"},"type":{"type":"string","description":"The VGA type (defaults to \u003cspan pulumi-lang-nodejs=\"`std`\" pulumi-lang-dotnet=\"`Std`\" pulumi-lang-go=\"`std`\" pulumi-lang-python=\"`std`\" pulumi-lang-yaml=\"`std`\" pulumi-lang-java=\"`std`\"\u003e`std`\u003c/span\u003e).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachine2Cdrom:VirtualMachine2Cdrom":{"properties":{"fileId":{"type":"string","description":"The file ID of the CD-ROM, or `cdrom|none`. Defaults to \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e to leave the CD-ROM empty. Use \u003cspan pulumi-lang-nodejs=\"`cdrom`\" pulumi-lang-dotnet=\"`Cdrom`\" pulumi-lang-go=\"`cdrom`\" pulumi-lang-python=\"`cdrom`\" pulumi-lang-yaml=\"`cdrom`\" pulumi-lang-java=\"`cdrom`\"\u003e`cdrom`\u003c/span\u003e to connect to the physical drive.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["fileId"]}}},"proxmoxve:VM/VirtualMachine2Cpu:VirtualMachine2Cpu":{"properties":{"affinity":{"type":"string","description":"The CPU cores that are used to run the VM’s vCPU. The value is a list of CPU IDs, separated by commas. The CPU IDs are zero-based.  For example, `0,1,2,3` (which also can be shortened to `0-3`) means that the VM’s vCPUs are run on the first four CPU cores. Setting \u003cspan pulumi-lang-nodejs=\"`affinity`\" pulumi-lang-dotnet=\"`Affinity`\" pulumi-lang-go=\"`affinity`\" pulumi-lang-python=\"`affinity`\" pulumi-lang-yaml=\"`affinity`\" pulumi-lang-java=\"`affinity`\"\u003e`affinity`\u003c/span\u003e is only allowed for `root@pam` authenticated user.\n"},"architecture":{"type":"string","description":"The CPU architecture `\u003caarch64 | x86_64\u003e` (defaults to the host). Setting \u003cspan pulumi-lang-nodejs=\"`architecture`\" pulumi-lang-dotnet=\"`Architecture`\" pulumi-lang-go=\"`architecture`\" pulumi-lang-python=\"`architecture`\" pulumi-lang-yaml=\"`architecture`\" pulumi-lang-java=\"`architecture`\"\u003e`architecture`\u003c/span\u003e is only allowed for `root@pam` authenticated user.\n"},"cores":{"type":"integer","description":"The number of CPU cores per socket (defaults to \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e).\n"},"flags":{"type":"array","items":{"type":"string"},"description":"Set of additional CPU flags. Use `+FLAG` to enable, `-FLAG` to disable a flag. Custom CPU models can specify any flag supported by QEMU/KVM, VM-specific flags must be from the following set for security reasons: \u003cspan pulumi-lang-nodejs=\"`pcid`\" pulumi-lang-dotnet=\"`Pcid`\" pulumi-lang-go=\"`pcid`\" pulumi-lang-python=\"`pcid`\" pulumi-lang-yaml=\"`pcid`\" pulumi-lang-java=\"`pcid`\"\u003e`pcid`\u003c/span\u003e, `spec-ctrl`, \u003cspan pulumi-lang-nodejs=\"`ibpb`\" pulumi-lang-dotnet=\"`Ibpb`\" pulumi-lang-go=\"`ibpb`\" pulumi-lang-python=\"`ibpb`\" pulumi-lang-yaml=\"`ibpb`\" pulumi-lang-java=\"`ibpb`\"\u003e`ibpb`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ssbd`\" pulumi-lang-dotnet=\"`Ssbd`\" pulumi-lang-go=\"`ssbd`\" pulumi-lang-python=\"`ssbd`\" pulumi-lang-yaml=\"`ssbd`\" pulumi-lang-java=\"`ssbd`\"\u003e`ssbd`\u003c/span\u003e, `virt-ssbd`, `amd-ssbd`, `amd-no-ssb`, \u003cspan pulumi-lang-nodejs=\"`pdpe1gb`\" pulumi-lang-dotnet=\"`Pdpe1gb`\" pulumi-lang-go=\"`pdpe1gb`\" pulumi-lang-python=\"`pdpe1gb`\" pulumi-lang-yaml=\"`pdpe1gb`\" pulumi-lang-java=\"`pdpe1gb`\"\u003e`pdpe1gb`\u003c/span\u003e, `md-clear`, `hv-tlbflush`, `hv-evmcs`, \u003cspan pulumi-lang-nodejs=\"`aes`\" pulumi-lang-dotnet=\"`Aes`\" pulumi-lang-go=\"`aes`\" pulumi-lang-python=\"`aes`\" pulumi-lang-yaml=\"`aes`\" pulumi-lang-java=\"`aes`\"\u003e`aes`\u003c/span\u003e.\n"},"hotplugged":{"type":"integer","description":"The number of hotplugged vCPUs (defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e).\n"},"limit":{"type":"integer","description":"Limit of CPU usage (defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e which means no limit).\n"},"numa":{"type":"boolean","description":"Enable NUMA (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"sockets":{"type":"integer","description":"The number of CPU sockets (defaults to \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e).\n"},"type":{"type":"string","description":"Emulated CPU type, it's recommended to use `x86-64-v2-AES` or higher (defaults to \u003cspan pulumi-lang-nodejs=\"`kvm64`\" pulumi-lang-dotnet=\"`Kvm64`\" pulumi-lang-go=\"`kvm64`\" pulumi-lang-python=\"`kvm64`\" pulumi-lang-yaml=\"`kvm64`\" pulumi-lang-java=\"`kvm64`\"\u003e`kvm64`\u003c/span\u003e). See https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm*virtual*machines_settings for more information.\n"},"units":{"type":"integer","description":"CPU weight for a VM. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this VM gets. Number is relative to weights of all the other running VMs.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["affinity","architecture","cores","flags","hotplugged","limit","numa","sockets","type","units"]}}},"proxmoxve:VM/VirtualMachine2Rng:VirtualMachine2Rng":{"properties":{"maxBytes":{"type":"integer","description":"Maximum bytes of entropy allowed to get injected into the guest every period. Use 0 to disable limiting (potentially dangerous).\n"},"period":{"type":"integer","description":"Period in milliseconds to limit entropy injection to the guest. Use 0 to disable limiting (potentially dangerous).\n"},"source":{"type":"string","description":"The file on the host to gather entropy from. In most cases, `/dev/urandom` should be preferred over `/dev/random` to avoid entropy-starvation issues on the host.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["maxBytes","period","source"]}}},"proxmoxve:VM/VirtualMachine2Timeouts:VirtualMachine2Timeouts":{"properties":{"create":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"},"delete":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"},"read":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"},"update":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachine2Vga:VirtualMachine2Vga":{"properties":{"clipboard":{"type":"string","description":"Enable a specific clipboard. If not set, depending on the display type the SPICE one will be added. Currently only \u003cspan pulumi-lang-nodejs=\"`vnc`\" pulumi-lang-dotnet=\"`Vnc`\" pulumi-lang-go=\"`vnc`\" pulumi-lang-python=\"`vnc`\" pulumi-lang-yaml=\"`vnc`\" pulumi-lang-java=\"`vnc`\"\u003e`vnc`\u003c/span\u003e is available. Migration with VNC clipboard is not supported by Proxmox.\n"},"memory":{"type":"integer","description":"The VGA memory in megabytes (4-512 MB). Has no effect with serial display.\n"},"type":{"type":"string","description":"The VGA type (defaults to \u003cspan pulumi-lang-nodejs=\"`std`\" pulumi-lang-dotnet=\"`Std`\" pulumi-lang-go=\"`std`\" pulumi-lang-python=\"`std`\" pulumi-lang-yaml=\"`std`\" pulumi-lang-java=\"`std`\"\u003e`std`\u003c/span\u003e).\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["clipboard","memory","type"]}}},"proxmoxve:VM/VirtualMachineAgent:VirtualMachineAgent":{"properties":{"enabled":{"type":"boolean","description":"Whether to enable the QEMU agent (defaults\nto \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"timeout":{"type":"string","description":"The maximum amount of time to wait for data from\nthe QEMU agent to become available ( defaults to \u003cspan pulumi-lang-nodejs=\"`15m`\" pulumi-lang-dotnet=\"`15m`\" pulumi-lang-go=\"`15m`\" pulumi-lang-python=\"`15m`\" pulumi-lang-yaml=\"`15m`\" pulumi-lang-java=\"`15m`\"\u003e`15m`\u003c/span\u003e).\n"},"trim":{"type":"boolean","description":"Whether to enable the FSTRIM feature in the QEMU agent\n(defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"type":{"type":"string","description":"The QEMU agent interface type (defaults to \u003cspan pulumi-lang-nodejs=\"`virtio`\" pulumi-lang-dotnet=\"`Virtio`\" pulumi-lang-go=\"`virtio`\" pulumi-lang-python=\"`virtio`\" pulumi-lang-yaml=\"`virtio`\" pulumi-lang-java=\"`virtio`\"\u003e`virtio`\u003c/span\u003e).\n"},"waitForIp":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAgentWaitForIp:VirtualMachineAgentWaitForIp","description":"Configuration for waiting for specific IP address types when the VM starts.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineAgentWaitForIp:VirtualMachineAgentWaitForIp":{"properties":{"ipv4":{"type":"boolean","description":"Wait for at least one IPv4 address (non-loopback, non-link-local) (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"ipv6":{"type":"boolean","description":"Wait for at least one IPv6 address (non-loopback, non-link-local) (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n\nWhen \u003cspan pulumi-lang-nodejs=\"`waitForIp`\" pulumi-lang-dotnet=\"`WaitForIp`\" pulumi-lang-go=\"`waitForIp`\" pulumi-lang-python=\"`wait_for_ip`\" pulumi-lang-yaml=\"`waitForIp`\" pulumi-lang-java=\"`waitForIp`\"\u003e`wait_for_ip`\u003c/span\u003e is not specified or both \u003cspan pulumi-lang-nodejs=\"`ipv4`\" pulumi-lang-dotnet=\"`Ipv4`\" pulumi-lang-go=\"`ipv4`\" pulumi-lang-python=\"`ipv4`\" pulumi-lang-yaml=\"`ipv4`\" pulumi-lang-java=\"`ipv4`\"\u003e`ipv4`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`ipv6`\" pulumi-lang-dotnet=\"`Ipv6`\" pulumi-lang-go=\"`ipv6`\" pulumi-lang-python=\"`ipv6`\" pulumi-lang-yaml=\"`ipv6`\" pulumi-lang-java=\"`ipv6`\"\u003e`ipv6`\u003c/span\u003e are \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, the provider waits for any valid global unicast address (IPv4 or IPv6). In dual-stack networks where DHCPv6 responds faster, this may result in only IPv6 addresses being available. Set `ipv4 = true` to ensure IPv4 address availability.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineAmdSev:VirtualMachineAmdSev":{"properties":{"allowSmt":{"type":"boolean","description":"Sets policy bit to allow Simultaneous Multi Threading (SMT)\n(Ignored unless for SEV-SNP) (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"kernelHashes":{"type":"boolean","description":"Add kernel hashes to guest firmware for measured linux kernel launch (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"noDebug":{"type":"boolean","description":"Sets policy bit to disallow debugging of guest (defaults\nto \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"noKeySharing":{"type":"boolean","description":"Sets policy bit to disallow key sharing with other guests (Ignored for SEV-SNP) (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n\nThe \u003cspan pulumi-lang-nodejs=\"`amdSev`\" pulumi-lang-dotnet=\"`AmdSev`\" pulumi-lang-go=\"`amdSev`\" pulumi-lang-python=\"`amd_sev`\" pulumi-lang-yaml=\"`amdSev`\" pulumi-lang-java=\"`amdSev`\"\u003e`amd_sev`\u003c/span\u003e setting is only allowed for a `root@pam` authenticated user.\n"},"type":{"type":"string","description":"Enable standard SEV with \u003cspan pulumi-lang-nodejs=\"`std`\" pulumi-lang-dotnet=\"`Std`\" pulumi-lang-go=\"`std`\" pulumi-lang-python=\"`std`\" pulumi-lang-yaml=\"`std`\" pulumi-lang-java=\"`std`\"\u003e`std`\u003c/span\u003e or enable experimental SEV-ES with the \u003cspan pulumi-lang-nodejs=\"`es`\" pulumi-lang-dotnet=\"`Es`\" pulumi-lang-go=\"`es`\" pulumi-lang-python=\"`es`\" pulumi-lang-yaml=\"`es`\" pulumi-lang-java=\"`es`\"\u003e`es`\u003c/span\u003e option or enable experimental SEV-SNP with the \u003cspan pulumi-lang-nodejs=\"`snp`\" pulumi-lang-dotnet=\"`Snp`\" pulumi-lang-go=\"`snp`\" pulumi-lang-python=\"`snp`\" pulumi-lang-yaml=\"`snp`\" pulumi-lang-java=\"`snp`\"\u003e`snp`\u003c/span\u003e option (defaults to \u003cspan pulumi-lang-nodejs=\"`std`\" pulumi-lang-dotnet=\"`Std`\" pulumi-lang-go=\"`std`\" pulumi-lang-python=\"`std`\" pulumi-lang-yaml=\"`std`\" pulumi-lang-java=\"`std`\"\u003e`std`\u003c/span\u003e).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineAudioDevice:VirtualMachineAudioDevice":{"properties":{"device":{"type":"string","description":"The device (defaults to `intel-hda`).\n- `AC97` - Intel 82801AA AC97 Audio.\n- `ich9-intel-hda` - Intel HD Audio Controller (ich9).\n- `intel-hda` - Intel HD Audio.\n"},"driver":{"type":"string","description":"The driver (defaults to \u003cspan pulumi-lang-nodejs=\"`spice`\" pulumi-lang-dotnet=\"`Spice`\" pulumi-lang-go=\"`spice`\" pulumi-lang-python=\"`spice`\" pulumi-lang-yaml=\"`spice`\" pulumi-lang-java=\"`spice`\"\u003e`spice`\u003c/span\u003e).\n"},"enabled":{"type":"boolean","description":"Whether to enable the audio device (defaults\nto \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineCdrom:VirtualMachineCdrom":{"properties":{"enabled":{"type":"boolean","description":"Whether to enable the CD-ROM drive (defaults\nto \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e). *Deprecated*. The attribute will be removed in the next version of the provider.\nSet \u003cspan pulumi-lang-nodejs=\"`fileId`\" pulumi-lang-dotnet=\"`FileId`\" pulumi-lang-go=\"`fileId`\" pulumi-lang-python=\"`file_id`\" pulumi-lang-yaml=\"`fileId`\" pulumi-lang-java=\"`fileId`\"\u003e`file_id`\u003c/span\u003e to \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e to leave the CD-ROM drive empty.\n","deprecationMessage":"Remove this attribute's configuration as it is no longer used and the attribute will be removed in the next version of the provider. Set \u003cspan pulumi-lang-nodejs=\"`fileId`\" pulumi-lang-dotnet=\"`FileId`\" pulumi-lang-go=\"`fileId`\" pulumi-lang-python=\"`file_id`\" pulumi-lang-yaml=\"`fileId`\" pulumi-lang-java=\"`fileId`\"\u003e`file_id`\u003c/span\u003e to \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e to leave the CDROM drive empty."},"fileId":{"type":"string","description":"A file ID for an ISO file (defaults to \u003cspan pulumi-lang-nodejs=\"`cdrom`\" pulumi-lang-dotnet=\"`Cdrom`\" pulumi-lang-go=\"`cdrom`\" pulumi-lang-python=\"`cdrom`\" pulumi-lang-yaml=\"`cdrom`\" pulumi-lang-java=\"`cdrom`\"\u003e`cdrom`\u003c/span\u003e as\nin the physical drive). Use \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e to leave the CD-ROM drive empty.\n"},"interface":{"type":"string","description":"A hardware interface to connect CD-ROM drive to (defaults to \u003cspan pulumi-lang-nodejs=\"`ide3`\" pulumi-lang-dotnet=\"`Ide3`\" pulumi-lang-go=\"`ide3`\" pulumi-lang-python=\"`ide3`\" pulumi-lang-yaml=\"`ide3`\" pulumi-lang-java=\"`ide3`\"\u003e`ide3`\u003c/span\u003e).\n\"Must be one of `ideN`, `sataN`, `scsiN`, where N is the index of the interface. \" +\n\"Note that \u003cspan pulumi-lang-nodejs=\"`q35`\" pulumi-lang-dotnet=\"`Q35`\" pulumi-lang-go=\"`q35`\" pulumi-lang-python=\"`q35`\" pulumi-lang-yaml=\"`q35`\" pulumi-lang-java=\"`q35`\"\u003e`q35`\u003c/span\u003e machine type only supports \u003cspan pulumi-lang-nodejs=\"`ide0`\" pulumi-lang-dotnet=\"`Ide0`\" pulumi-lang-go=\"`ide0`\" pulumi-lang-python=\"`ide0`\" pulumi-lang-yaml=\"`ide0`\" pulumi-lang-java=\"`ide0`\"\u003e`ide0`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`ide2`\" pulumi-lang-dotnet=\"`Ide2`\" pulumi-lang-go=\"`ide2`\" pulumi-lang-python=\"`ide2`\" pulumi-lang-yaml=\"`ide2`\" pulumi-lang-java=\"`ide2`\"\u003e`ide2`\u003c/span\u003e of IDE interfaces.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineClone:VirtualMachineClone":{"properties":{"datastoreId":{"type":"string","description":"The identifier for the target datastore.\n","willReplaceOnChanges":true},"full":{"type":"boolean","description":"Full or linked clone (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n","willReplaceOnChanges":true},"nodeName":{"type":"string","description":"The name of the source node (leave blank, if\nequal to the \u003cspan pulumi-lang-nodejs=\"`nodeName`\" pulumi-lang-dotnet=\"`NodeName`\" pulumi-lang-go=\"`nodeName`\" pulumi-lang-python=\"`node_name`\" pulumi-lang-yaml=\"`nodeName`\" pulumi-lang-java=\"`nodeName`\"\u003e`node_name`\u003c/span\u003e argument).\n","willReplaceOnChanges":true},"retries":{"type":"integer","description":"Number of retries in Proxmox for clone vm.\nSometimes Proxmox errors with timeout when creating multiple clones at\nonce.\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"The identifier for the source VM.\n","willReplaceOnChanges":true}},"type":"object","required":["vmId"]},"proxmoxve:VM/VirtualMachineCpu:VirtualMachineCpu":{"properties":{"affinity":{"type":"string","description":"The CPU cores that are used to run the VM’s vCPU. The\nvalue is a list of CPU IDs, separated by commas. The CPU IDs are zero-based.\nFor example, `0,1,2,3` (which also can be shortened to `0-3`) means that the VM’s vCPUs are run on the first four\nCPU cores. Setting \u003cspan pulumi-lang-nodejs=\"`affinity`\" pulumi-lang-dotnet=\"`Affinity`\" pulumi-lang-go=\"`affinity`\" pulumi-lang-python=\"`affinity`\" pulumi-lang-yaml=\"`affinity`\" pulumi-lang-java=\"`affinity`\"\u003e`affinity`\u003c/span\u003e is only allowed for `root@pam` authenticated user.\n"},"architecture":{"type":"string","description":"The CPU architecture (defaults to \u003cspan pulumi-lang-nodejs=\"`x8664`\" pulumi-lang-dotnet=\"`X8664`\" pulumi-lang-go=\"`x8664`\" pulumi-lang-python=\"`x86_64`\" pulumi-lang-yaml=\"`x8664`\" pulumi-lang-java=\"`x8664`\"\u003e`x86_64`\u003c/span\u003e).\n"},"cores":{"type":"integer","description":"The number of CPU cores (defaults to \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e).\n"},"flags":{"type":"array","items":{"type":"string"},"description":"The CPU flags.\n- `+aes`/`-aes` - Activate AES instruction set for HW acceleration.\n- `+amd-no-ssb`/`-amd-no-ssb` - Notifies guest OS that host is not\nvulnerable for Spectre on AMD CPUs.\n- `+amd-ssbd`/`-amd-ssbd` - Improves Spectre mitigation performance with\nAMD CPUs, best used with \"virt-ssbd\".\n- `+hv-evmcs`/`-hv-evmcs` - Improve performance for nested\nvirtualization (only supported on Intel CPUs).\n- `+hv-tlbflush`/`-hv-tlbflush` - Improve performance in overcommitted\nWindows guests (may lead to guest BSOD on old CPUs).\n- `+ibpb`/`-ibpb` - Allows improved Spectre mitigation on AMD CPUs.\n- `+md-clear`/`-md-clear` - Required to let the guest OS know if MDS is\nmitigated correctly.\n- `+pcid`/`-pcid` - Meltdown fix cost reduction on Westmere, Sandy- and\nIvy Bridge Intel CPUs.\n- `+pdpe1gb`/`-pdpe1gb` - Allows guest OS to use 1 GB size pages, if\nhost HW supports it.\n- `+spec-ctrl`/`-spec-ctrl` - Allows improved Spectre mitigation with\nIntel CPUs.\n- `+ssbd`/`-ssbd` - Protection for \"Speculative Store Bypass\" for Intel\nmodels.\n- `+virt-ssbd`/`-virt-ssbd` - Basis for \"Speculative Store Bypass\"\nprotection for AMD models.\n"},"hotplugged":{"type":"integer","description":"The number of hotplugged vCPUs (defaults\nto \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e).\n"},"limit":{"type":"integer","description":"Limit of CPU usage, `0...128`. (defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e -- no limit).\n"},"numa":{"type":"boolean","description":"Enable/disable NUMA. (default to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e)\n"},"sockets":{"type":"integer","description":"The number of CPU sockets (defaults to \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e).\n"},"type":{"type":"string","description":"The emulated CPU type, it's recommended to\nuse `x86-64-v2-AES` (defaults to \u003cspan pulumi-lang-nodejs=\"`qemu64`\" pulumi-lang-dotnet=\"`Qemu64`\" pulumi-lang-go=\"`qemu64`\" pulumi-lang-python=\"`qemu64`\" pulumi-lang-yaml=\"`qemu64`\" pulumi-lang-java=\"`qemu64`\"\u003e`qemu64`\u003c/span\u003e).\n"},"units":{"type":"integer","description":"The CPU units. PVE default is \u003cspan pulumi-lang-nodejs=\"`1024`\" pulumi-lang-dotnet=\"`1024`\" pulumi-lang-go=\"`1024`\" pulumi-lang-python=\"`1024`\" pulumi-lang-yaml=\"`1024`\" pulumi-lang-java=\"`1024`\"\u003e`1024`\u003c/span\u003e for cgroups v1 and \u003cspan pulumi-lang-nodejs=\"`100`\" pulumi-lang-dotnet=\"`100`\" pulumi-lang-go=\"`100`\" pulumi-lang-python=\"`100`\" pulumi-lang-yaml=\"`100`\" pulumi-lang-java=\"`100`\"\u003e`100`\u003c/span\u003e for cgroups v2.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["units"]}}},"proxmoxve:VM/VirtualMachineDisk:VirtualMachineDisk":{"properties":{"aio":{"type":"string","description":"The disk AIO mode (defaults to \u003cspan pulumi-lang-nodejs=\"`ioUring`\" pulumi-lang-dotnet=\"`IoUring`\" pulumi-lang-go=\"`ioUring`\" pulumi-lang-python=\"`io_uring`\" pulumi-lang-yaml=\"`ioUring`\" pulumi-lang-java=\"`ioUring`\"\u003e`io_uring`\u003c/span\u003e).\n"},"backup":{"type":"boolean","description":"Whether the drive should be included when making backups (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"cache":{"type":"string","description":"The cache type (defaults to \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e).\n"},"datastoreId":{"type":"string","description":"The identifier for the datastore to create\nthe disk in (defaults to `local-lvm`).\n"},"discard":{"type":"string","description":"Whether to pass discard/trim requests to the\nunderlying storage. Supported values are \u003cspan pulumi-lang-nodejs=\"`on`\" pulumi-lang-dotnet=\"`On`\" pulumi-lang-go=\"`on`\" pulumi-lang-python=\"`on`\" pulumi-lang-yaml=\"`on`\" pulumi-lang-java=\"`on`\"\u003e`on`\u003c/span\u003e/\u003cspan pulumi-lang-nodejs=\"`ignore`\" pulumi-lang-dotnet=\"`Ignore`\" pulumi-lang-go=\"`ignore`\" pulumi-lang-python=\"`ignore`\" pulumi-lang-yaml=\"`ignore`\" pulumi-lang-java=\"`ignore`\"\u003e`ignore`\u003c/span\u003e (defaults\nto \u003cspan pulumi-lang-nodejs=\"`ignore`\" pulumi-lang-dotnet=\"`Ignore`\" pulumi-lang-go=\"`ignore`\" pulumi-lang-python=\"`ignore`\" pulumi-lang-yaml=\"`ignore`\" pulumi-lang-java=\"`ignore`\"\u003e`ignore`\u003c/span\u003e).\n"},"fileFormat":{"type":"string","description":"The file format.\n"},"fileId":{"type":"string","description":"The file ID for a disk image when importing a disk into VM. The ID format is\n`\u003cdatastore_id\u003e:\u003ccontent_type\u003e/\u003cfile_name\u003e`, for example `local:iso/centos8.img`. Can be also taken from\n\u003cspan pulumi-lang-nodejs=\"`proxmoxve.Download.File`\" pulumi-lang-dotnet=\"`proxmoxve.Download.File`\" pulumi-lang-go=\"`Download.File`\" pulumi-lang-python=\"`Download.File`\" pulumi-lang-yaml=\"`proxmoxve.Download.File`\" pulumi-lang-java=\"`proxmoxve.Download.File`\"\u003e`proxmoxve.Download.File`\u003c/span\u003e resource. Prefer \u003cspan pulumi-lang-nodejs=\"`importFrom`\" pulumi-lang-dotnet=\"`ImportFrom`\" pulumi-lang-go=\"`importFrom`\" pulumi-lang-python=\"`import_from`\" pulumi-lang-yaml=\"`importFrom`\" pulumi-lang-java=\"`importFrom`\"\u003e`import_from`\u003c/span\u003e for uncompressed images.\nUse \u003cspan pulumi-lang-nodejs=\"`fileId`\" pulumi-lang-dotnet=\"`FileId`\" pulumi-lang-go=\"`fileId`\" pulumi-lang-python=\"`file_id`\" pulumi-lang-yaml=\"`fileId`\" pulumi-lang-java=\"`fileId`\"\u003e`file_id`\u003c/span\u003e when working with compressed cloud images (e.g., `.qcow2.xz`) that were downloaded\nwith \u003cspan pulumi-lang-nodejs=\"`contentType \" pulumi-lang-dotnet=\"`ContentType \" pulumi-lang-go=\"`contentType \" pulumi-lang-python=\"`content_type \" pulumi-lang-yaml=\"`contentType \" pulumi-lang-java=\"`contentType \"\u003e`content_type \u003c/span\u003e= \"iso\"` and \u003cspan pulumi-lang-nodejs=\"`decompressionAlgorithm`\" pulumi-lang-dotnet=\"`DecompressionAlgorithm`\" pulumi-lang-go=\"`decompressionAlgorithm`\" pulumi-lang-python=\"`decompression_algorithm`\" pulumi-lang-yaml=\"`decompressionAlgorithm`\" pulumi-lang-java=\"`decompressionAlgorithm`\"\u003e`decompression_algorithm`\u003c/span\u003e set. See the\nCreate a VM from a Cloud Image guide for examples.\n","willReplaceOnChanges":true},"importFrom":{"type":"string","description":"The file ID for a disk image to import into VM. The image must be of \u003cspan pulumi-lang-nodejs=\"`import`\" pulumi-lang-dotnet=\"`Import`\" pulumi-lang-go=\"`import`\" pulumi-lang-python=\"`import`\" pulumi-lang-yaml=\"`import`\" pulumi-lang-java=\"`import`\"\u003e`import`\u003c/span\u003e content type\n(uncompressed images only). The ID format is `\u003cdatastore_id\u003e:import/\u003cfile_name\u003e`, for example `local:import/centos8.qcow2`.\nCan be also taken from \u003cspan pulumi-lang-nodejs=\"`proxmoxve.Download.File`\" pulumi-lang-dotnet=\"`proxmoxve.Download.File`\" pulumi-lang-go=\"`Download.File`\" pulumi-lang-python=\"`Download.File`\" pulumi-lang-yaml=\"`proxmoxve.Download.File`\" pulumi-lang-java=\"`proxmoxve.Download.File`\"\u003e`proxmoxve.Download.File`\u003c/span\u003e resource. Note: compressed images downloaded with\n\u003cspan pulumi-lang-nodejs=\"`decompressionAlgorithm`\" pulumi-lang-dotnet=\"`DecompressionAlgorithm`\" pulumi-lang-go=\"`decompressionAlgorithm`\" pulumi-lang-python=\"`decompression_algorithm`\" pulumi-lang-yaml=\"`decompressionAlgorithm`\" pulumi-lang-java=\"`decompressionAlgorithm`\"\u003e`decompression_algorithm`\u003c/span\u003e cannot use \u003cspan pulumi-lang-nodejs=\"`importFrom`\" pulumi-lang-dotnet=\"`ImportFrom`\" pulumi-lang-go=\"`importFrom`\" pulumi-lang-python=\"`import_from`\" pulumi-lang-yaml=\"`importFrom`\" pulumi-lang-java=\"`importFrom`\"\u003e`import_from`\u003c/span\u003e; use \u003cspan pulumi-lang-nodejs=\"`fileId`\" pulumi-lang-dotnet=\"`FileId`\" pulumi-lang-go=\"`fileId`\" pulumi-lang-python=\"`file_id`\" pulumi-lang-yaml=\"`fileId`\" pulumi-lang-java=\"`fileId`\"\u003e`file_id`\u003c/span\u003e instead.\n"},"interface":{"type":"string","description":"The disk interface for Proxmox, currently \u003cspan pulumi-lang-nodejs=\"`scsi`\" pulumi-lang-dotnet=\"`Scsi`\" pulumi-lang-go=\"`scsi`\" pulumi-lang-python=\"`scsi`\" pulumi-lang-yaml=\"`scsi`\" pulumi-lang-java=\"`scsi`\"\u003e`scsi`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`sata`\" pulumi-lang-dotnet=\"`Sata`\" pulumi-lang-go=\"`sata`\" pulumi-lang-python=\"`sata`\" pulumi-lang-yaml=\"`sata`\" pulumi-lang-java=\"`sata`\"\u003e`sata`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`virtio`\" pulumi-lang-dotnet=\"`Virtio`\" pulumi-lang-go=\"`virtio`\" pulumi-lang-python=\"`virtio`\" pulumi-lang-yaml=\"`virtio`\" pulumi-lang-java=\"`virtio`\"\u003e`virtio`\u003c/span\u003e interfaces are supported. Append the disk index at\nthe end, for example, \u003cspan pulumi-lang-nodejs=\"`virtio0`\" pulumi-lang-dotnet=\"`Virtio0`\" pulumi-lang-go=\"`virtio0`\" pulumi-lang-python=\"`virtio0`\" pulumi-lang-yaml=\"`virtio0`\" pulumi-lang-java=\"`virtio0`\"\u003e`virtio0`\u003c/span\u003e for the first virtio disk, \u003cspan pulumi-lang-nodejs=\"`virtio1`\" pulumi-lang-dotnet=\"`Virtio1`\" pulumi-lang-go=\"`virtio1`\" pulumi-lang-python=\"`virtio1`\" pulumi-lang-yaml=\"`virtio1`\" pulumi-lang-java=\"`virtio1`\"\u003e`virtio1`\u003c/span\u003e for\nthe second, etc.\n"},"iothread":{"type":"boolean","description":"Whether to use iothreads for this disk (defaults\nto \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"pathInDatastore":{"type":"string","description":"The in-datastore path to the disk image.\n***Experimental.***Use to attach another VM's disks,\nor (as root only) host's filesystem paths (\u003cspan pulumi-lang-nodejs=\"`datastoreId`\" pulumi-lang-dotnet=\"`DatastoreId`\" pulumi-lang-go=\"`datastoreId`\" pulumi-lang-python=\"`datastore_id`\" pulumi-lang-yaml=\"`datastoreId`\" pulumi-lang-java=\"`datastoreId`\"\u003e`datastore_id`\u003c/span\u003e empty string).\nSee \"*Example: Attached disks*\".\n"},"replicate":{"type":"boolean","description":"Whether the drive should be considered for replication jobs (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"serial":{"type":"string","description":"The serial number of the disk, up to 20 bytes long.\n"},"size":{"type":"integer","description":"The disk size in gigabytes (defaults to \u003cspan pulumi-lang-nodejs=\"`8`\" pulumi-lang-dotnet=\"`8`\" pulumi-lang-go=\"`8`\" pulumi-lang-python=\"`8`\" pulumi-lang-yaml=\"`8`\" pulumi-lang-java=\"`8`\"\u003e`8`\u003c/span\u003e).\n"},"speed":{"$ref":"#/types/proxmoxve:VM/VirtualMachineDiskSpeed:VirtualMachineDiskSpeed","description":"The speed limits.\n"},"ssd":{"type":"boolean","description":"Whether to use an SSD emulation option for this disk (\ndefaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e). Note that SSD emulation is not supported on VirtIO\nBlock drives.\n"}},"type":"object","required":["interface"],"language":{"nodejs":{"requiredOutputs":["fileFormat","interface","pathInDatastore"]}}},"proxmoxve:VM/VirtualMachineDiskSpeed:VirtualMachineDiskSpeed":{"properties":{"iopsRead":{"type":"integer","description":"The maximum read I/O in operations per second.\n"},"iopsReadBurstable":{"type":"integer","description":"The maximum unthrottled read I/O pool in operations per second.\n"},"iopsWrite":{"type":"integer","description":"The maximum write I/O in operations per second.\n"},"iopsWriteBurstable":{"type":"integer","description":"The maximum unthrottled write I/O pool in operations per second.\n"},"read":{"type":"integer","description":"The maximum read speed in megabytes per second.\n"},"readBurstable":{"type":"integer","description":"The maximum burstable read speed in\nmegabytes per second.\n"},"write":{"type":"integer","description":"The maximum write speed in megabytes per second.\n"},"writeBurstable":{"type":"integer","description":"The maximum burstable write speed in\nmegabytes per second.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineEfiDisk:VirtualMachineEfiDisk":{"properties":{"datastoreId":{"type":"string","description":"The identifier for the datastore to create\nthe disk in (defaults to `local-lvm`).\n"},"fileFormat":{"type":"string","description":"The file format (defaults to \u003cspan pulumi-lang-nodejs=\"`raw`\" pulumi-lang-dotnet=\"`Raw`\" pulumi-lang-go=\"`raw`\" pulumi-lang-python=\"`raw`\" pulumi-lang-yaml=\"`raw`\" pulumi-lang-java=\"`raw`\"\u003e`raw`\u003c/span\u003e).\n"},"preEnrolledKeys":{"type":"boolean","description":"Use am EFI vars template with\ndistribution-specific and Microsoft Standard keys enrolled, if used with\nEFI type=\u003cspan pulumi-lang-nodejs=\"`4m`\" pulumi-lang-dotnet=\"`4m`\" pulumi-lang-go=\"`4m`\" pulumi-lang-python=\"`4m`\" pulumi-lang-yaml=\"`4m`\" pulumi-lang-java=\"`4m`\"\u003e`4m`\u003c/span\u003e. Ignored for VMs with cpu.architecture=\u003cspan pulumi-lang-nodejs=\"`aarch64`\" pulumi-lang-dotnet=\"`Aarch64`\" pulumi-lang-go=\"`aarch64`\" pulumi-lang-python=\"`aarch64`\" pulumi-lang-yaml=\"`aarch64`\" pulumi-lang-java=\"`aarch64`\"\u003e`aarch64`\u003c/span\u003e (defaults\nto \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"type":{"type":"string","description":"Size and type of the OVMF EFI disk. \u003cspan pulumi-lang-nodejs=\"`4m`\" pulumi-lang-dotnet=\"`4m`\" pulumi-lang-go=\"`4m`\" pulumi-lang-python=\"`4m`\" pulumi-lang-yaml=\"`4m`\" pulumi-lang-java=\"`4m`\"\u003e`4m`\u003c/span\u003e is newer and\nrecommended, and required for Secure Boot. For backwards compatibility\nuse \u003cspan pulumi-lang-nodejs=\"`2m`\" pulumi-lang-dotnet=\"`2m`\" pulumi-lang-go=\"`2m`\" pulumi-lang-python=\"`2m`\" pulumi-lang-yaml=\"`2m`\" pulumi-lang-java=\"`2m`\"\u003e`2m`\u003c/span\u003e. Ignored for VMs with cpu.architecture=\u003cspan pulumi-lang-nodejs=\"`aarch64`\" pulumi-lang-dotnet=\"`Aarch64`\" pulumi-lang-go=\"`aarch64`\" pulumi-lang-python=\"`aarch64`\" pulumi-lang-yaml=\"`aarch64`\" pulumi-lang-java=\"`aarch64`\"\u003e`aarch64`\u003c/span\u003e (defaults\nto \u003cspan pulumi-lang-nodejs=\"`2m`\" pulumi-lang-dotnet=\"`2m`\" pulumi-lang-go=\"`2m`\" pulumi-lang-python=\"`2m`\" pulumi-lang-yaml=\"`2m`\" pulumi-lang-java=\"`2m`\"\u003e`2m`\u003c/span\u003e).\n","willReplaceOnChanges":true}},"type":"object","language":{"nodejs":{"requiredOutputs":["fileFormat"]}}},"proxmoxve:VM/VirtualMachineHostpci:VirtualMachineHostpci":{"properties":{"device":{"type":"string","description":"The PCI device name for Proxmox, in form\nof `hostpciX` where `X` is a sequential number from 0 to 15.\n"},"id":{"type":"string","description":"The PCI device ID. This parameter is not compatible\nwith \u003cspan pulumi-lang-nodejs=\"`apiToken`\" pulumi-lang-dotnet=\"`ApiToken`\" pulumi-lang-go=\"`apiToken`\" pulumi-lang-python=\"`api_token`\" pulumi-lang-yaml=\"`apiToken`\" pulumi-lang-java=\"`apiToken`\"\u003e`api_token`\u003c/span\u003e and requires the root \u003cspan pulumi-lang-nodejs=\"`username`\" pulumi-lang-dotnet=\"`Username`\" pulumi-lang-go=\"`username`\" pulumi-lang-python=\"`username`\" pulumi-lang-yaml=\"`username`\" pulumi-lang-java=\"`username`\"\u003e`username`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`password`\" pulumi-lang-dotnet=\"`Password`\" pulumi-lang-go=\"`password`\" pulumi-lang-python=\"`password`\" pulumi-lang-yaml=\"`password`\" pulumi-lang-java=\"`password`\"\u003e`password`\u003c/span\u003e\nconfigured in the proxmox provider. Use either this or \u003cspan pulumi-lang-nodejs=\"`mapping`\" pulumi-lang-dotnet=\"`Mapping`\" pulumi-lang-go=\"`mapping`\" pulumi-lang-python=\"`mapping`\" pulumi-lang-yaml=\"`mapping`\" pulumi-lang-java=\"`mapping`\"\u003e`mapping`\u003c/span\u003e.\n"},"mapping":{"type":"string","description":"The resource mapping name of the device, for\nexample gpu. Use either this or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e.\n"},"mdev":{"type":"string","description":"The mediated device ID to use.\n"},"pcie":{"type":"boolean","description":"Tells Proxmox to use a PCIe or PCI port. Some\nguests/device combination require PCIe rather than PCI. PCIe is only\navailable for q35 machine types.\n"},"romFile":{"type":"string","description":"A path to a ROM file for the device to use. This\nis a relative path under `/usr/share/kvm/`.\n"},"rombar":{"type":"boolean","description":"Makes the firmware ROM visible for the VM (defaults\nto \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"xvga":{"type":"boolean","description":"Marks the PCI(e) device as the primary GPU of the VM.\nWith this enabled the \u003cspan pulumi-lang-nodejs=\"`vga`\" pulumi-lang-dotnet=\"`Vga`\" pulumi-lang-go=\"`vga`\" pulumi-lang-python=\"`vga`\" pulumi-lang-yaml=\"`vga`\" pulumi-lang-java=\"`vga`\"\u003e`vga`\u003c/span\u003e configuration argument will be ignored.\n"}},"type":"object","required":["device"]},"proxmoxve:VM/VirtualMachineInitialization:VirtualMachineInitialization":{"properties":{"datastoreId":{"type":"string","description":"The identifier for the datastore to create the\ncloud-init disk in (defaults to `local-lvm`).\n"},"dns":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitializationDns:VirtualMachineInitializationDns","description":"The DNS configuration.\n"},"fileFormat":{"type":"string","description":"The file format.\n"},"interface":{"type":"string","description":"The hardware interface to connect the cloud-init\nimage to. Must be one of `ide0..3`, `sata0..5`, `scsi0..30`. Will be\ndetected if the setting is missing but a cloud-init image is present,\notherwise defaults to \u003cspan pulumi-lang-nodejs=\"`ide2`\" pulumi-lang-dotnet=\"`Ide2`\" pulumi-lang-go=\"`ide2`\" pulumi-lang-python=\"`ide2`\" pulumi-lang-yaml=\"`ide2`\" pulumi-lang-java=\"`ide2`\"\u003e`ide2`\u003c/span\u003e.\n"},"ipConfigs":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitializationIpConfig:VirtualMachineInitializationIpConfig"},"description":"The IP configuration (one block per network\ndevice).\n"},"metaDataFileId":{"type":"string","description":"The identifier for a file containing\nall meta data passed to the VM via cloud-init.\n","willReplaceOnChanges":true},"networkDataFileId":{"type":"string","description":"The identifier for a file containing\nnetwork configuration data passed to the VM via cloud-init (conflicts\nwith \u003cspan pulumi-lang-nodejs=\"`ipConfig`\" pulumi-lang-dotnet=\"`IpConfig`\" pulumi-lang-go=\"`ipConfig`\" pulumi-lang-python=\"`ip_config`\" pulumi-lang-yaml=\"`ipConfig`\" pulumi-lang-java=\"`ipConfig`\"\u003e`ip_config`\u003c/span\u003e).\n","willReplaceOnChanges":true},"type":{"type":"string","description":"The cloud-init configuration format\n","willReplaceOnChanges":true},"userAccount":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitializationUserAccount:VirtualMachineInitializationUserAccount","description":"The user account configuration (conflicts\nwith \u003cspan pulumi-lang-nodejs=\"`userDataFileId`\" pulumi-lang-dotnet=\"`UserDataFileId`\" pulumi-lang-go=\"`userDataFileId`\" pulumi-lang-python=\"`user_data_file_id`\" pulumi-lang-yaml=\"`userDataFileId`\" pulumi-lang-java=\"`userDataFileId`\"\u003e`user_data_file_id`\u003c/span\u003e).\n"},"userDataFileId":{"type":"string","description":"The identifier for a file containing\ncustom user data (conflicts with \u003cspan pulumi-lang-nodejs=\"`userAccount`\" pulumi-lang-dotnet=\"`UserAccount`\" pulumi-lang-go=\"`userAccount`\" pulumi-lang-python=\"`user_account`\" pulumi-lang-yaml=\"`userAccount`\" pulumi-lang-java=\"`userAccount`\"\u003e`user_account`\u003c/span\u003e).\n","willReplaceOnChanges":true},"vendorDataFileId":{"type":"string","description":"The identifier for a file containing\nall vendor data passed to the VM via cloud-init.\n","willReplaceOnChanges":true}},"type":"object","language":{"nodejs":{"requiredOutputs":["fileFormat","metaDataFileId","networkDataFileId","type","userDataFileId","vendorDataFileId"]}}},"proxmoxve:VM/VirtualMachineInitializationDns:VirtualMachineInitializationDns":{"properties":{"domain":{"type":"string","description":"The DNS search domain.\n"},"servers":{"type":"array","items":{"type":"string"},"description":"The list of DNS servers.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineInitializationIpConfig:VirtualMachineInitializationIpConfig":{"properties":{"ipv4":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitializationIpConfigIpv4:VirtualMachineInitializationIpConfigIpv4","description":"The IPv4 configuration.\n"},"ipv6":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitializationIpConfigIpv6:VirtualMachineInitializationIpConfigIpv6","description":"The IPv6 configuration.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineInitializationIpConfigIpv4:VirtualMachineInitializationIpConfigIpv4":{"properties":{"address":{"type":"string","description":"The IPv4 address in CIDR notation\n(e.g. 192.168.2.2/24). Alternatively, set this to \u003cspan pulumi-lang-nodejs=\"`dhcp`\" pulumi-lang-dotnet=\"`Dhcp`\" pulumi-lang-go=\"`dhcp`\" pulumi-lang-python=\"`dhcp`\" pulumi-lang-yaml=\"`dhcp`\" pulumi-lang-java=\"`dhcp`\"\u003e`dhcp`\u003c/span\u003e for\nautodiscovery.\n"},"gateway":{"type":"string","description":"The IPv4 gateway (must be omitted\nwhen \u003cspan pulumi-lang-nodejs=\"`dhcp`\" pulumi-lang-dotnet=\"`Dhcp`\" pulumi-lang-go=\"`dhcp`\" pulumi-lang-python=\"`dhcp`\" pulumi-lang-yaml=\"`dhcp`\" pulumi-lang-java=\"`dhcp`\"\u003e`dhcp`\u003c/span\u003e is used as the address).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineInitializationIpConfigIpv6:VirtualMachineInitializationIpConfigIpv6":{"properties":{"address":{"type":"string","description":"The IPv6 address in CIDR notation\n(e.g. fd1c::7334/64). Alternatively, set this\nto \u003cspan pulumi-lang-nodejs=\"`dhcp`\" pulumi-lang-dotnet=\"`Dhcp`\" pulumi-lang-go=\"`dhcp`\" pulumi-lang-python=\"`dhcp`\" pulumi-lang-yaml=\"`dhcp`\" pulumi-lang-java=\"`dhcp`\"\u003e`dhcp`\u003c/span\u003e for DHCPv6, or \u003cspan pulumi-lang-nodejs=\"`auto`\" pulumi-lang-dotnet=\"`Auto`\" pulumi-lang-go=\"`auto`\" pulumi-lang-python=\"`auto`\" pulumi-lang-yaml=\"`auto`\" pulumi-lang-java=\"`auto`\"\u003e`auto`\u003c/span\u003e for SLAAC.\n"},"gateway":{"type":"string","description":"The IPv6 gateway (must be omitted\nwhen \u003cspan pulumi-lang-nodejs=\"`dhcp`\" pulumi-lang-dotnet=\"`Dhcp`\" pulumi-lang-go=\"`dhcp`\" pulumi-lang-python=\"`dhcp`\" pulumi-lang-yaml=\"`dhcp`\" pulumi-lang-java=\"`dhcp`\"\u003e`dhcp`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`auto`\" pulumi-lang-dotnet=\"`Auto`\" pulumi-lang-go=\"`auto`\" pulumi-lang-python=\"`auto`\" pulumi-lang-yaml=\"`auto`\" pulumi-lang-java=\"`auto`\"\u003e`auto`\u003c/span\u003e are used as the address).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineInitializationUserAccount:VirtualMachineInitializationUserAccount":{"properties":{"keys":{"type":"array","items":{"type":"string"},"description":"The SSH keys.\n"},"password":{"type":"string","description":"The SSH password.\n","secret":true},"username":{"type":"string","description":"The SSH username.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineMemory:VirtualMachineMemory":{"properties":{"dedicated":{"type":"integer","description":"The dedicated memory in megabytes (defaults to \u003cspan pulumi-lang-nodejs=\"`512`\" pulumi-lang-dotnet=\"`512`\" pulumi-lang-go=\"`512`\" pulumi-lang-python=\"`512`\" pulumi-lang-yaml=\"`512`\" pulumi-lang-java=\"`512`\"\u003e`512`\u003c/span\u003e).\n"},"floating":{"type":"integer","description":"The floating memory in megabytes. The default is \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e, which disables \"ballooning device\" for the VM.\nPlease note that Proxmox has ballooning enabled by default. To enable it, set \u003cspan pulumi-lang-nodejs=\"`floating`\" pulumi-lang-dotnet=\"`Floating`\" pulumi-lang-go=\"`floating`\" pulumi-lang-python=\"`floating`\" pulumi-lang-yaml=\"`floating`\" pulumi-lang-java=\"`floating`\"\u003e`floating`\u003c/span\u003e to the same value as \u003cspan pulumi-lang-nodejs=\"`dedicated`\" pulumi-lang-dotnet=\"`Dedicated`\" pulumi-lang-go=\"`dedicated`\" pulumi-lang-python=\"`dedicated`\" pulumi-lang-yaml=\"`dedicated`\" pulumi-lang-java=\"`dedicated`\"\u003e`dedicated`\u003c/span\u003e.\nSee [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_memory) section 10.2.6 for more information.\n"},"hugepages":{"type":"string","description":"Enable/disable hugepages memory (defaults to disable).\n"},"keepHugepages":{"type":"boolean","description":"Keep hugepages memory after the VM is stopped (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n\nSettings \u003cspan pulumi-lang-nodejs=\"`hugepages`\" pulumi-lang-dotnet=\"`Hugepages`\" pulumi-lang-go=\"`hugepages`\" pulumi-lang-python=\"`hugepages`\" pulumi-lang-yaml=\"`hugepages`\" pulumi-lang-java=\"`hugepages`\"\u003e`hugepages`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`keepHugepages`\" pulumi-lang-dotnet=\"`KeepHugepages`\" pulumi-lang-go=\"`keepHugepages`\" pulumi-lang-python=\"`keep_hugepages`\" pulumi-lang-yaml=\"`keepHugepages`\" pulumi-lang-java=\"`keepHugepages`\"\u003e`keep_hugepages`\u003c/span\u003e are only allowed for `root@pam` authenticated user.\nAnd required `cpu.numa` to be enabled.\n"},"shared":{"type":"integer","description":"The shared memory in megabytes (defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineNetworkDevice:VirtualMachineNetworkDevice":{"properties":{"bridge":{"type":"string","description":"The name of the network bridge (defaults to \u003cspan pulumi-lang-nodejs=\"`vmbr0`\" pulumi-lang-dotnet=\"`Vmbr0`\" pulumi-lang-go=\"`vmbr0`\" pulumi-lang-python=\"`vmbr0`\" pulumi-lang-yaml=\"`vmbr0`\" pulumi-lang-java=\"`vmbr0`\"\u003e`vmbr0`\u003c/span\u003e).\n"},"disconnected":{"type":"boolean","description":"Whether to disconnect the network device from the network (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"enabled":{"type":"boolean","description":"Whether to enable the network device (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"firewall":{"type":"boolean","description":"Whether this interface's firewall rules should be used (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"macAddress":{"type":"string","description":"The MAC address.\n"},"model":{"type":"string","description":"The network device model (defaults to \u003cspan pulumi-lang-nodejs=\"`virtio`\" pulumi-lang-dotnet=\"`Virtio`\" pulumi-lang-go=\"`virtio`\" pulumi-lang-python=\"`virtio`\" pulumi-lang-yaml=\"`virtio`\" pulumi-lang-java=\"`virtio`\"\u003e`virtio`\u003c/span\u003e).\n"},"mtu":{"type":"integer","description":"Force MTU, for VirtIO only. Set to 1 to use the bridge MTU. Cannot be larger than the bridge MTU.\n"},"queues":{"type":"integer","description":"The number of queues for VirtIO (1..64).\n"},"rateLimit":{"type":"number","description":"The rate limit in megabytes per second.\n"},"trunks":{"type":"string","description":"String containing a `;` separated list of VLAN trunks\n(\"10;20;30\"). Note that the VLAN-aware feature need to be enabled on the PVE\nLinux Bridge to use trunks.\n"},"vlanId":{"type":"integer","description":"The VLAN identifier.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["macAddress"]}}},"proxmoxve:VM/VirtualMachineNuma:VirtualMachineNuma":{"properties":{"cpus":{"type":"string","description":"The CPU cores to assign to the NUMA node (format is `0-7;16-31`).\n"},"device":{"type":"string","description":"The NUMA device name for Proxmox, in form\nof `numaX` where `X` is a sequential number from 0 to 7.\n"},"hostnodes":{"type":"string","description":"The NUMA host nodes.\n"},"memory":{"type":"integer","description":"The memory in megabytes to assign to the NUMA node.\n"},"policy":{"type":"string","description":"The NUMA policy (defaults to \u003cspan pulumi-lang-nodejs=\"`preferred`\" pulumi-lang-dotnet=\"`Preferred`\" pulumi-lang-go=\"`preferred`\" pulumi-lang-python=\"`preferred`\" pulumi-lang-yaml=\"`preferred`\" pulumi-lang-java=\"`preferred`\"\u003e`preferred`\u003c/span\u003e).\n"}},"type":"object","required":["cpus","device","memory"]},"proxmoxve:VM/VirtualMachineOperatingSystem:VirtualMachineOperatingSystem":{"properties":{"type":{"type":"string","description":"The type (defaults to \u003cspan pulumi-lang-nodejs=\"`other`\" pulumi-lang-dotnet=\"`Other`\" pulumi-lang-go=\"`other`\" pulumi-lang-python=\"`other`\" pulumi-lang-yaml=\"`other`\" pulumi-lang-java=\"`other`\"\u003e`other`\u003c/span\u003e).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineRng:VirtualMachineRng":{"properties":{"maxBytes":{"type":"integer","description":"Maximum bytes of entropy allowed to get injected into the guest every \u003cspan pulumi-lang-nodejs=\"`period`\" pulumi-lang-dotnet=\"`Period`\" pulumi-lang-go=\"`period`\" pulumi-lang-python=\"`period`\" pulumi-lang-yaml=\"`period`\" pulumi-lang-java=\"`period`\"\u003e`period`\u003c/span\u003e milliseconds (defaults to \u003cspan pulumi-lang-nodejs=\"`1024`\" pulumi-lang-dotnet=\"`1024`\" pulumi-lang-go=\"`1024`\" pulumi-lang-python=\"`1024`\" pulumi-lang-yaml=\"`1024`\" pulumi-lang-java=\"`1024`\"\u003e`1024`\u003c/span\u003e). Prefer a lower value when using `/dev/random` as source.\n"},"period":{"type":"integer","description":"Every \u003cspan pulumi-lang-nodejs=\"`period`\" pulumi-lang-dotnet=\"`Period`\" pulumi-lang-go=\"`period`\" pulumi-lang-python=\"`period`\" pulumi-lang-yaml=\"`period`\" pulumi-lang-java=\"`period`\"\u003e`period`\u003c/span\u003e milliseconds the entropy-injection quota is reset, allowing the guest to retrieve another \u003cspan pulumi-lang-nodejs=\"`maxBytes`\" pulumi-lang-dotnet=\"`MaxBytes`\" pulumi-lang-go=\"`maxBytes`\" pulumi-lang-python=\"`max_bytes`\" pulumi-lang-yaml=\"`maxBytes`\" pulumi-lang-java=\"`maxBytes`\"\u003e`max_bytes`\u003c/span\u003e of entropy (defaults to \u003cspan pulumi-lang-nodejs=\"`1000`\" pulumi-lang-dotnet=\"`1000`\" pulumi-lang-go=\"`1000`\" pulumi-lang-python=\"`1000`\" pulumi-lang-yaml=\"`1000`\" pulumi-lang-java=\"`1000`\"\u003e`1000`\u003c/span\u003e).\n"},"source":{"type":"string","description":"The file on the host to gather entropy from. In most cases, `/dev/urandom` should be preferred over `/dev/random` to avoid entropy-starvation issues on the host.\n"}},"type":"object","required":["source"],"language":{"nodejs":{"requiredOutputs":["maxBytes","period","source"]}}},"proxmoxve:VM/VirtualMachineSerialDevice:VirtualMachineSerialDevice":{"properties":{"device":{"type":"string","description":"The device (defaults to \u003cspan pulumi-lang-nodejs=\"`socket`\" pulumi-lang-dotnet=\"`Socket`\" pulumi-lang-go=\"`socket`\" pulumi-lang-python=\"`socket`\" pulumi-lang-yaml=\"`socket`\" pulumi-lang-java=\"`socket`\"\u003e`socket`\u003c/span\u003e).\n- `/dev/*` - A host serial device.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineSmbios:VirtualMachineSmbios":{"properties":{"family":{"type":"string","description":"The family string.\n"},"manufacturer":{"type":"string","description":"The manufacturer.\n"},"product":{"type":"string","description":"The product ID.\n"},"serial":{"type":"string","description":"The serial number.\n"},"sku":{"type":"string","description":"The SKU number.\n"},"uuid":{"type":"string","description":"The UUID (defaults to randomly generated UUID).\n"},"version":{"type":"string","description":"The version.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["uuid"]}}},"proxmoxve:VM/VirtualMachineStartup:VirtualMachineStartup":{"properties":{"downDelay":{"type":"integer","description":"A non-negative number defining the delay in\nseconds before the next VM is shut down.\n"},"order":{"type":"integer","description":"A non-negative number defining the general startup\norder.\n"},"upDelay":{"type":"integer","description":"A non-negative number defining the delay in\nseconds before the next VM is started.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineTpmState:VirtualMachineTpmState":{"properties":{"datastoreId":{"type":"string","description":"The identifier for the datastore to create\nthe disk in (defaults to `local-lvm`).\n"},"version":{"type":"string","description":"TPM state device version. Can be `v1.2` or `v2.0`.\n(defaults to `v2.0`).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineUsb:VirtualMachineUsb":{"properties":{"host":{"type":"string","description":"The Host USB device or port or the value \u003cspan pulumi-lang-nodejs=\"`spice`\" pulumi-lang-dotnet=\"`Spice`\" pulumi-lang-go=\"`spice`\" pulumi-lang-python=\"`spice`\" pulumi-lang-yaml=\"`spice`\" pulumi-lang-java=\"`spice`\"\u003e`spice`\u003c/span\u003e. Use either this or \u003cspan pulumi-lang-nodejs=\"`mapping`\" pulumi-lang-dotnet=\"`Mapping`\" pulumi-lang-go=\"`mapping`\" pulumi-lang-python=\"`mapping`\" pulumi-lang-yaml=\"`mapping`\" pulumi-lang-java=\"`mapping`\"\u003e`mapping`\u003c/span\u003e.\n"},"mapping":{"type":"string","description":"The cluster-wide resource mapping name of the device, for example \"usbdevice\". Use either this or \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\"\u003e`host`\u003c/span\u003e.\n"},"usb3":{"type":"boolean","description":"Makes the USB device a USB3 device for the VM\n(defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineVga:VirtualMachineVga":{"properties":{"clipboard":{"type":"string","description":"Enable VNC clipboard by setting to \u003cspan pulumi-lang-nodejs=\"`vnc`\" pulumi-lang-dotnet=\"`Vnc`\" pulumi-lang-go=\"`vnc`\" pulumi-lang-python=\"`vnc`\" pulumi-lang-yaml=\"`vnc`\" pulumi-lang-java=\"`vnc`\"\u003e`vnc`\u003c/span\u003e. See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) section 10.2.8 for more information.\n"},"memory":{"type":"integer","description":"The VGA memory in megabytes (defaults to \u003cspan pulumi-lang-nodejs=\"`16`\" pulumi-lang-dotnet=\"`16`\" pulumi-lang-go=\"`16`\" pulumi-lang-python=\"`16`\" pulumi-lang-yaml=\"`16`\" pulumi-lang-java=\"`16`\"\u003e`16`\u003c/span\u003e).\n"},"type":{"type":"string","description":"The VGA type (defaults to \u003cspan pulumi-lang-nodejs=\"`std`\" pulumi-lang-dotnet=\"`Std`\" pulumi-lang-go=\"`std`\" pulumi-lang-python=\"`std`\" pulumi-lang-yaml=\"`std`\" pulumi-lang-java=\"`std`\"\u003e`std`\u003c/span\u003e).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineVirtiof:VirtualMachineVirtiof":{"properties":{"cache":{"type":"string","description":"The caching mode\n"},"directIo":{"type":"boolean","description":"Whether to allow direct io\n"},"exposeAcl":{"type":"boolean","description":"Enable POSIX ACLs, implies xattr support\n"},"exposeXattr":{"type":"boolean","description":"Enable support for extended attributes\n"},"mapping":{"type":"string","description":"Identifier of the directory mapping\n"}},"type":"object","required":["mapping"]},"proxmoxve:VM/VirtualMachineWatchdog:VirtualMachineWatchdog":{"properties":{"action":{"type":"string","description":"The action to perform if after activation the guest fails to poll the watchdog in time  (defaults to \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e).\n"},"enabled":{"type":"boolean","description":"Whether the watchdog is enabled (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"model":{"type":"string","description":"The watchdog type to emulate (defaults to \u003cspan pulumi-lang-nodejs=\"`i6300esb`\" pulumi-lang-dotnet=\"`I6300esb`\" pulumi-lang-go=\"`i6300esb`\" pulumi-lang-python=\"`i6300esb`\" pulumi-lang-yaml=\"`i6300esb`\" pulumi-lang-java=\"`i6300esb`\"\u003e`i6300esb`\u003c/span\u003e).\n"}},"type":"object"},"proxmoxve:VM/getVirtualMachinesFilter:getVirtualMachinesFilter":{"properties":{"name":{"type":"string","description":"Name of the VM attribute to filter on. One of [\u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`template`\" pulumi-lang-dotnet=\"`Template`\" pulumi-lang-go=\"`template`\" pulumi-lang-python=\"`template`\" pulumi-lang-yaml=\"`template`\" pulumi-lang-java=\"`template`\"\u003e`template`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`status`\" pulumi-lang-dotnet=\"`Status`\" pulumi-lang-go=\"`status`\" pulumi-lang-python=\"`status`\" pulumi-lang-yaml=\"`status`\" pulumi-lang-java=\"`status`\"\u003e`status`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nodeName`\" pulumi-lang-dotnet=\"`NodeName`\" pulumi-lang-go=\"`nodeName`\" pulumi-lang-python=\"`node_name`\" pulumi-lang-yaml=\"`nodeName`\" pulumi-lang-java=\"`nodeName`\"\u003e`node_name`\u003c/span\u003e]\n"},"regex":{"type":"boolean","description":"Treat values as regex patterns\n"},"values":{"type":"array","items":{"type":"string"},"description":"List of values to pass the filter. VM's attribute should match at least one value in the list.\n"}},"type":"object","required":["name","values"]},"proxmoxve:VM/getVirtualMachinesVm:getVirtualMachinesVm":{"properties":{"name":{"type":"string","description":"The virtual machine name.\n"},"nodeName":{"type":"string","description":"The node name. All cluster nodes will be queried in case this is omitted\n"},"status":{"type":"string","description":"The status of the VM.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags to filter the VMs. The VM must have all\nthe tags to be included in the result.\n"},"template":{"type":"boolean","description":"Whether the VM is a template.\n"},"vmId":{"type":"integer","description":"The VM identifier.\n"}},"type":"object","required":["name","nodeName","tags","vmId"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:config/ssh:ssh":{"properties":{"agent":{"type":"boolean","description":"Whether to use the SSH agent for authentication. Takes precedence over the \u003cspan pulumi-lang-nodejs=\"`privateKey`\" pulumi-lang-dotnet=\"`PrivateKey`\" pulumi-lang-go=\"`privateKey`\" pulumi-lang-python=\"`private_key`\" pulumi-lang-yaml=\"`privateKey`\" pulumi-lang-java=\"`privateKey`\"\u003e`private_key`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`password`\" pulumi-lang-dotnet=\"`Password`\" pulumi-lang-go=\"`password`\" pulumi-lang-python=\"`password`\" pulumi-lang-yaml=\"`password`\" pulumi-lang-java=\"`password`\"\u003e`password`\u003c/span\u003e fields. Defaults to the value of the `PROXMOX_VE_SSH_AGENT` environment variable, or \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e if not set.\n"},"agentForwarding":{"type":"boolean","description":"Whether to enable SSH agent forwarding. Defaults to the value of the `PROXMOX_VE_SSH_AGENT_FORWARDING` environment variable, or \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e if not set.\n"},"agentSocket":{"type":"string","description":"The path to the SSH agent socket. Defaults to the value of the `SSH_AUTH_SOCK` environment variable.\n"},"nodes":{"type":"array","items":{"$ref":"#/types/proxmoxve:config/sshNode:sshNode"},"description":"Overrides for SSH connection configuration for a Proxmox VE node.\n"},"password":{"type":"string","description":"The password used for the SSH connection. Defaults to the value of the \u003cspan pulumi-lang-nodejs=\"`password`\" pulumi-lang-dotnet=\"`Password`\" pulumi-lang-go=\"`password`\" pulumi-lang-python=\"`password`\" pulumi-lang-yaml=\"`password`\" pulumi-lang-java=\"`password`\"\u003e`password`\u003c/span\u003e field of the \u003cspan pulumi-lang-nodejs=\"`provider`\" pulumi-lang-dotnet=\"`Provider`\" pulumi-lang-go=\"`provider`\" pulumi-lang-python=\"`provider`\" pulumi-lang-yaml=\"`provider`\" pulumi-lang-java=\"`provider`\"\u003e`provider`\u003c/span\u003e block.\n","secret":true},"privateKey":{"type":"string","description":"The unencrypted private key (in PEM format) used for the SSH connection. Defaults to the value of the `PROXMOX_VE_SSH_PRIVATE_KEY` environment variable.\n","secret":true},"socks5Password":{"type":"string","description":"The password for the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_PASSWORD` environment variable.\n","secret":true},"socks5Server":{"type":"string","description":"The address:port of the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_SERVER` environment variable.\n"},"socks5Username":{"type":"string","description":"The username for the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_USERNAME` environment variable.\n"},"username":{"type":"string","description":"The username used for the SSH connection. Defaults to the value of the \u003cspan pulumi-lang-nodejs=\"`username`\" pulumi-lang-dotnet=\"`Username`\" pulumi-lang-go=\"`username`\" pulumi-lang-python=\"`username`\" pulumi-lang-yaml=\"`username`\" pulumi-lang-java=\"`username`\"\u003e`username`\u003c/span\u003e field of the \u003cspan pulumi-lang-nodejs=\"`provider`\" pulumi-lang-dotnet=\"`Provider`\" pulumi-lang-go=\"`provider`\" pulumi-lang-python=\"`provider`\" pulumi-lang-yaml=\"`provider`\" pulumi-lang-java=\"`provider`\"\u003e`provider`\u003c/span\u003e block.\n"}},"type":"object"},"proxmoxve:config/sshNode:sshNode":{"properties":{"address":{"type":"string","description":"The address of the Proxmox VE node.\n"},"name":{"type":"string","description":"The name of the Proxmox VE node.\n"},"port":{"type":"integer","description":"The port of the Proxmox VE node.\n"}},"type":"object","required":["address","name"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:index/HostsEntry:HostsEntry":{"properties":{"address":{"type":"string","description":"The IP address.\n"},"hostnames":{"type":"array","items":{"type":"string"},"description":"The hostnames.\n"}},"type":"object","required":["address","hostnames"]},"proxmoxve:index/ProviderSsh:ProviderSsh":{"properties":{"agent":{"type":"boolean","description":"Whether to use the SSH agent for authentication. Takes precedence over the \u003cspan pulumi-lang-nodejs=\"`privateKey`\" pulumi-lang-dotnet=\"`PrivateKey`\" pulumi-lang-go=\"`privateKey`\" pulumi-lang-python=\"`private_key`\" pulumi-lang-yaml=\"`privateKey`\" pulumi-lang-java=\"`privateKey`\"\u003e`private_key`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`password`\" pulumi-lang-dotnet=\"`Password`\" pulumi-lang-go=\"`password`\" pulumi-lang-python=\"`password`\" pulumi-lang-yaml=\"`password`\" pulumi-lang-java=\"`password`\"\u003e`password`\u003c/span\u003e fields. Defaults to the value of the `PROXMOX_VE_SSH_AGENT` environment variable, or \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e if not set.\n"},"agentForwarding":{"type":"boolean","description":"Whether to enable SSH agent forwarding. Defaults to the value of the `PROXMOX_VE_SSH_AGENT_FORWARDING` environment variable, or \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e if not set.\n"},"agentSocket":{"type":"string","description":"The path to the SSH agent socket. Defaults to the value of the `SSH_AUTH_SOCK` environment variable.\n"},"nodes":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/ProviderSshNode:ProviderSshNode"},"description":"Overrides for SSH connection configuration for a Proxmox VE node.\n"},"password":{"type":"string","description":"The password used for the SSH connection. Defaults to the value of the \u003cspan pulumi-lang-nodejs=\"`password`\" pulumi-lang-dotnet=\"`Password`\" pulumi-lang-go=\"`password`\" pulumi-lang-python=\"`password`\" pulumi-lang-yaml=\"`password`\" pulumi-lang-java=\"`password`\"\u003e`password`\u003c/span\u003e field of the \u003cspan pulumi-lang-nodejs=\"`provider`\" pulumi-lang-dotnet=\"`Provider`\" pulumi-lang-go=\"`provider`\" pulumi-lang-python=\"`provider`\" pulumi-lang-yaml=\"`provider`\" pulumi-lang-java=\"`provider`\"\u003e`provider`\u003c/span\u003e block.\n","secret":true},"privateKey":{"type":"string","description":"The unencrypted private key (in PEM format) used for the SSH connection. Defaults to the value of the `PROXMOX_VE_SSH_PRIVATE_KEY` environment variable.\n","secret":true},"socks5Password":{"type":"string","description":"The password for the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_PASSWORD` environment variable.\n","secret":true},"socks5Server":{"type":"string","description":"The address:port of the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_SERVER` environment variable.\n"},"socks5Username":{"type":"string","description":"The username for the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_USERNAME` environment variable.\n"},"username":{"type":"string","description":"The username used for the SSH connection. Defaults to the value of the \u003cspan pulumi-lang-nodejs=\"`username`\" pulumi-lang-dotnet=\"`Username`\" pulumi-lang-go=\"`username`\" pulumi-lang-python=\"`username`\" pulumi-lang-yaml=\"`username`\" pulumi-lang-java=\"`username`\"\u003e`username`\u003c/span\u003e field of the \u003cspan pulumi-lang-nodejs=\"`provider`\" pulumi-lang-dotnet=\"`Provider`\" pulumi-lang-go=\"`provider`\" pulumi-lang-python=\"`provider`\" pulumi-lang-yaml=\"`provider`\" pulumi-lang-java=\"`provider`\"\u003e`provider`\u003c/span\u003e block.\n"}},"type":"object"},"proxmoxve:index/ProviderSshNode:ProviderSshNode":{"properties":{"address":{"type":"string","description":"The address of the Proxmox VE node.\n"},"name":{"type":"string","description":"The name of the Proxmox VE node.\n"},"port":{"type":"integer","description":"The port of the Proxmox VE node.\n"}},"type":"object","required":["address","name"],"language":{"nodejs":{"requiredOutputs":[]}}},"proxmoxve:index/getContainersContainer:getContainersContainer":{"properties":{"name":{"type":"string","description":"The container name.\n"},"nodeName":{"type":"string","description":"The node name. All cluster nodes will be queried in case this is omitted\n"},"status":{"type":"string","description":"The status of the container.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags to filter the containers. The container must have all\nthe tags to be included in the result.\n"},"template":{"type":"boolean","description":"Whether the container is a template.\n"},"vmId":{"type":"integer","description":"The container identifier.\n"}},"type":"object","required":["name","nodeName","tags","vmId"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:index/getContainersFilter:getContainersFilter":{"properties":{"name":{"type":"string","description":"Name of the container attribute to filter on. One of [\u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`template`\" pulumi-lang-dotnet=\"`Template`\" pulumi-lang-go=\"`template`\" pulumi-lang-python=\"`template`\" pulumi-lang-yaml=\"`template`\" pulumi-lang-java=\"`template`\"\u003e`template`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`status`\" pulumi-lang-dotnet=\"`Status`\" pulumi-lang-go=\"`status`\" pulumi-lang-python=\"`status`\" pulumi-lang-yaml=\"`status`\" pulumi-lang-java=\"`status`\"\u003e`status`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nodeName`\" pulumi-lang-dotnet=\"`NodeName`\" pulumi-lang-go=\"`nodeName`\" pulumi-lang-python=\"`node_name`\" pulumi-lang-yaml=\"`nodeName`\" pulumi-lang-java=\"`nodeName`\"\u003e`node_name`\u003c/span\u003e]\n"},"regex":{"type":"boolean","description":"Treat values as regex patterns\n"},"values":{"type":"array","items":{"type":"string"},"description":"List of values to pass the filter. Container's attribute should match at least one value in the list.\n"}},"type":"object","required":["name","values"]},"proxmoxve:index/getVm2Cpu:getVm2Cpu":{"properties":{"affinity":{"type":"string","description":"List of host cores used to execute guest processes, for example: '0,5,8-11'\n"},"architecture":{"type":"string","description":"The CPU architecture.\n"},"cores":{"type":"integer","description":"The number of CPU cores per socket.\n"},"flags":{"type":"array","items":{"type":"string"},"description":"Set of additional CPU flags.\n"},"hotplugged":{"type":"integer","description":"The number of hotplugged vCPUs.\n"},"limit":{"type":"integer","description":"Limit of CPU usage.\n"},"numa":{"type":"boolean","description":"Enable NUMA.\n"},"sockets":{"type":"integer","description":"The number of CPU sockets.\n"},"type":{"type":"string","description":"Emulated CPU type.\n"},"units":{"type":"integer","description":"CPU weight for a VM\n"}},"type":"object","required":["affinity","architecture","cores","flags","hotplugged","limit","numa","sockets","type","units"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:index/getVm2Rng:getVm2Rng":{"properties":{"maxBytes":{"type":"integer","description":"Maximum bytes of entropy allowed to get injected into the guest every period.\n"},"period":{"type":"integer","description":"Period in milliseconds to limit entropy injection to the guest.\n"},"source":{"type":"string","description":"The entropy source for the RNG device.\n"}},"type":"object","required":["maxBytes","period","source"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:index/getVm2Timeouts:getVm2Timeouts":{"properties":{"read":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"}},"type":"object"},"proxmoxve:index/getVm2Vga:getVm2Vga":{"properties":{"clipboard":{"type":"string","description":"Enable a specific clipboard.\n"},"memory":{"type":"integer","description":"The VGA memory in megabytes (4-512 MB). Has no effect with serial display.\n"},"type":{"type":"string","description":"The VGA type.\n"}},"type":"object","required":["clipboard","memory","type"],"language":{"nodejs":{"requiredInputs":[]}}}},"provider":{"description":"The provider type for the proxmox package. By default, resources use package-wide configuration\nsettings, however an explicit `Provider` instance may be created and passed during resource\nconstruction to achieve fine-grained programmatic control over provider settings. See the\n[documentation](https://www.pulumi.com/docs/reference/programming-model/#providers) for more information.\n","properties":{"apiToken":{"type":"string","description":"The API token for the Proxmox VE API.","secret":true},"authTicket":{"type":"string","description":"The pre-authenticated Ticket for the Proxmox VE API.","secret":true},"csrfPreventionToken":{"type":"string","description":"The pre-authenticated CSRF Prevention Token for the Proxmox VE API.","secret":true},"endpoint":{"type":"string","description":"The endpoint for the Proxmox VE API."},"insecure":{"type":"boolean","description":"Whether to skip the TLS verification step."},"minTls":{"type":"string","description":"The minimum required TLS version for API calls.Supported values: `1.0|1.1|1.2|1.3`. Defaults to `1.3`."},"otp":{"type":"string","description":"The one-time password for the Proxmox VE API.","deprecationMessage":"The \u003cspan pulumi-lang-nodejs=\"`otp`\" pulumi-lang-dotnet=\"`Otp`\" pulumi-lang-go=\"`otp`\" pulumi-lang-python=\"`otp`\" pulumi-lang-yaml=\"`otp`\" pulumi-lang-java=\"`otp`\"\u003e`otp`\u003c/span\u003e attribute is deprecated and will be removed in a future release. Please use the \u003cspan pulumi-lang-nodejs=\"`apiToken`\" pulumi-lang-dotnet=\"`ApiToken`\" pulumi-lang-go=\"`apiToken`\" pulumi-lang-python=\"`api_token`\" pulumi-lang-yaml=\"`apiToken`\" pulumi-lang-java=\"`apiToken`\"\u003e`api_token`\u003c/span\u003e attribute instead."},"password":{"type":"string","description":"The password for the Proxmox VE API.","secret":true},"randomVmIdEnd":{"type":"integer","description":"The ending number for random VM / Container IDs."},"randomVmIdStart":{"type":"integer","description":"The starting number for random VM / Container IDs."},"randomVmIds":{"type":"boolean","description":"Whether to generate random VM / Container IDs."},"ssh":{"$ref":"#/types/proxmoxve:index/ProviderSsh:ProviderSsh","description":"The SSH configuration for the Proxmox nodes."},"tmpDir":{"type":"string","description":"The alternative temporary directory."},"username":{"type":"string","description":"The username for the Proxmox VE API."}},"inputProperties":{"apiToken":{"type":"string","description":"The API token for the Proxmox VE API.","secret":true},"authTicket":{"type":"string","description":"The pre-authenticated Ticket for the Proxmox VE API.","secret":true},"csrfPreventionToken":{"type":"string","description":"The pre-authenticated CSRF Prevention Token for the Proxmox VE API.","secret":true},"endpoint":{"type":"string","description":"The endpoint for the Proxmox VE API."},"insecure":{"type":"boolean","description":"Whether to skip the TLS verification step."},"minTls":{"type":"string","description":"The minimum required TLS version for API calls.Supported values: `1.0|1.1|1.2|1.3`. Defaults to `1.3`."},"otp":{"type":"string","description":"The one-time password for the Proxmox VE API.","deprecationMessage":"The \u003cspan pulumi-lang-nodejs=\"`otp`\" pulumi-lang-dotnet=\"`Otp`\" pulumi-lang-go=\"`otp`\" pulumi-lang-python=\"`otp`\" pulumi-lang-yaml=\"`otp`\" pulumi-lang-java=\"`otp`\"\u003e`otp`\u003c/span\u003e attribute is deprecated and will be removed in a future release. Please use the \u003cspan pulumi-lang-nodejs=\"`apiToken`\" pulumi-lang-dotnet=\"`ApiToken`\" pulumi-lang-go=\"`apiToken`\" pulumi-lang-python=\"`api_token`\" pulumi-lang-yaml=\"`apiToken`\" pulumi-lang-java=\"`apiToken`\"\u003e`api_token`\u003c/span\u003e attribute instead."},"password":{"type":"string","description":"The password for the Proxmox VE API.","secret":true},"randomVmIdEnd":{"type":"integer","description":"The ending number for random VM / Container IDs."},"randomVmIdStart":{"type":"integer","description":"The starting number for random VM / Container IDs."},"randomVmIds":{"type":"boolean","description":"Whether to generate random VM / Container IDs."},"ssh":{"$ref":"#/types/proxmoxve:index/ProviderSsh:ProviderSsh","description":"The SSH configuration for the Proxmox nodes."},"tmpDir":{"type":"string","description":"The alternative temporary directory."},"username":{"type":"string","description":"The username for the Proxmox VE API."}},"methods":{"terraformConfig":"pulumi:providers:proxmoxve/terraformConfig"}},"resources":{"proxmoxve:Acme/certificate:Certificate":{"description":"Manages ACME SSL certificates for Proxmox VE nodes. This resource orders and renews certificates from an ACME Certificate Authority for a specific node.\n\n## Example Usage\n\n### Basic ACME Certificate with HTTP-01 Challenge\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\n// First, create an ACME account\nconst example = new proxmoxve.AcmeAccount(\"example\", {\n    name: \"production\",\n    contact: \"admin@example.com\",\n    directory: \"https://acme-v02.api.letsencrypt.org/directory\",\n    tos: \"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\",\n});\n// Order a certificate for the node\nconst exampleCertificate = new proxmoxve.acme.Certificate(\"example\", {\n    nodeName: \"pve\",\n    account: example.name,\n    domains: [{\n        domain: \"pve.example.com\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# First, create an ACME account\nexample = proxmoxve.AcmeAccount(\"example\",\n    name=\"production\",\n    contact=\"admin@example.com\",\n    directory=\"https://acme-v02.api.letsencrypt.org/directory\",\n    tos=\"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\")\n# Order a certificate for the node\nexample_certificate = proxmoxve.acme.Certificate(\"example\",\n    node_name=\"pve\",\n    account=example.name,\n    domains=[{\n        \"domain\": \"pve.example.com\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // First, create an ACME account\n    var example = new ProxmoxVE.AcmeAccount(\"example\", new()\n    {\n        Name = \"production\",\n        Contact = \"admin@example.com\",\n        Directory = \"https://acme-v02.api.letsencrypt.org/directory\",\n        Tos = \"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\",\n    });\n\n    // Order a certificate for the node\n    var exampleCertificate = new ProxmoxVE.Acme.Certificate(\"example\", new()\n    {\n        NodeName = \"pve\",\n        Account = example.Name,\n        Domains = new[]\n        {\n            new ProxmoxVE.Acme.Inputs.CertificateDomainArgs\n            {\n                Domain = \"pve.example.com\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/acme\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// First, create an ACME account\n\t\texample, err := proxmoxve.NewAcmeAccount(ctx, \"example\", \u0026proxmoxve.AcmeAccountArgs{\n\t\t\tName:      pulumi.String(\"production\"),\n\t\t\tContact:   pulumi.String(\"admin@example.com\"),\n\t\t\tDirectory: pulumi.String(\"https://acme-v02.api.letsencrypt.org/directory\"),\n\t\t\tTos:       pulumi.String(\"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Order a certificate for the node\n\t\t_, err = acme.NewCertificate(ctx, \"example\", \u0026acme.CertificateArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tAccount:  example.Name,\n\t\t\tDomains: acme.CertificateDomainArray{\n\t\t\t\t\u0026acme.CertificateDomainArgs{\n\t\t\t\t\tDomain: pulumi.String(\"pve.example.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.AcmeAccount;\nimport io.muehlbachler.pulumi.proxmoxve.AcmeAccountArgs;\nimport io.muehlbachler.pulumi.proxmoxve.Acme.Certificate;\nimport io.muehlbachler.pulumi.proxmoxve.Acme.CertificateArgs;\nimport com.pulumi.proxmoxve.Acme.inputs.CertificateDomainArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // First, create an ACME account\n        var example = new AcmeAccount(\"example\", AcmeAccountArgs.builder()\n            .name(\"production\")\n            .contact(\"admin@example.com\")\n            .directory(\"https://acme-v02.api.letsencrypt.org/directory\")\n            .tos(\"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\")\n            .build());\n\n        // Order a certificate for the node\n        var exampleCertificate = new Certificate(\"exampleCertificate\", CertificateArgs.builder()\n            .nodeName(\"pve\")\n            .account(example.name())\n            .domains(CertificateDomainArgs.builder()\n                .domain(\"pve.example.com\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # First, create an ACME account\n  example:\n    type: proxmoxve:AcmeAccount\n    properties:\n      name: production\n      contact: admin@example.com\n      directory: https://acme-v02.api.letsencrypt.org/directory\n      tos: https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\n  # Order a certificate for the node\n  exampleCertificate:\n    type: proxmoxve:Acme:Certificate\n    name: example\n    properties:\n      nodeName: pve\n      account: ${example.name}\n      domains:\n        - domain: pve.example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### ACME Certificate with DNS-01 Challenge\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\n// Create an ACME account\nconst example = new proxmoxve.AcmeAccount(\"example\", {\n    name: \"production\",\n    contact: \"admin@example.com\",\n    directory: \"https://acme-v02.api.letsencrypt.org/directory\",\n    tos: \"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\",\n});\n// Configure a DNS plugin (Desec example)\nconst desec = new proxmoxve.AcmeDnsPlugin(\"desec\", {\n    plugin: \"desec\",\n    api: \"desec\",\n    data: {\n        DEDYN_TOKEN: dedynToken,\n    },\n});\n// Order a certificate using the DNS plugin\nconst test = new proxmoxve.acme.Certificate(\"test\", {\n    nodeName: \"pve\",\n    account: example.name,\n    force: false,\n    domains: [{\n        domain: \"pve.example.dedyn.io\",\n        plugin: desec.plugin,\n    }],\n}, {\n    dependsOn: [\n        example,\n        desec,\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# Create an ACME account\nexample = proxmoxve.AcmeAccount(\"example\",\n    name=\"production\",\n    contact=\"admin@example.com\",\n    directory=\"https://acme-v02.api.letsencrypt.org/directory\",\n    tos=\"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\")\n# Configure a DNS plugin (Desec example)\ndesec = proxmoxve.AcmeDnsPlugin(\"desec\",\n    plugin=\"desec\",\n    api=\"desec\",\n    data={\n        \"DEDYN_TOKEN\": dedyn_token,\n    })\n# Order a certificate using the DNS plugin\ntest = proxmoxve.acme.Certificate(\"test\",\n    node_name=\"pve\",\n    account=example.name,\n    force=False,\n    domains=[{\n        \"domain\": \"pve.example.dedyn.io\",\n        \"plugin\": desec.plugin,\n    }],\n    opts = pulumi.ResourceOptions(depends_on=[\n            example,\n            desec,\n        ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Create an ACME account\n    var example = new ProxmoxVE.AcmeAccount(\"example\", new()\n    {\n        Name = \"production\",\n        Contact = \"admin@example.com\",\n        Directory = \"https://acme-v02.api.letsencrypt.org/directory\",\n        Tos = \"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\",\n    });\n\n    // Configure a DNS plugin (Desec example)\n    var desec = new ProxmoxVE.AcmeDnsPlugin(\"desec\", new()\n    {\n        Plugin = \"desec\",\n        Api = \"desec\",\n        Data = \n        {\n            { \"DEDYN_TOKEN\", dedynToken },\n        },\n    });\n\n    // Order a certificate using the DNS plugin\n    var test = new ProxmoxVE.Acme.Certificate(\"test\", new()\n    {\n        NodeName = \"pve\",\n        Account = example.Name,\n        Force = false,\n        Domains = new[]\n        {\n            new ProxmoxVE.Acme.Inputs.CertificateDomainArgs\n            {\n                Domain = \"pve.example.dedyn.io\",\n                Plugin = desec.Plugin,\n            },\n        },\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            example,\n            desec,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/acme\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Create an ACME account\n\t\texample, err := proxmoxve.NewAcmeAccount(ctx, \"example\", \u0026proxmoxve.AcmeAccountArgs{\n\t\t\tName:      pulumi.String(\"production\"),\n\t\t\tContact:   pulumi.String(\"admin@example.com\"),\n\t\t\tDirectory: pulumi.String(\"https://acme-v02.api.letsencrypt.org/directory\"),\n\t\t\tTos:       pulumi.String(\"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Configure a DNS plugin (Desec example)\n\t\tdesec, err := proxmoxve.NewAcmeDnsPlugin(ctx, \"desec\", \u0026proxmoxve.AcmeDnsPluginArgs{\n\t\t\tPlugin: pulumi.String(\"desec\"),\n\t\t\tApi:    pulumi.String(\"desec\"),\n\t\t\tData: pulumi.StringMap{\n\t\t\t\t\"DEDYN_TOKEN\": pulumi.Any(dedynToken),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Order a certificate using the DNS plugin\n\t\t_, err = acme.NewCertificate(ctx, \"test\", \u0026acme.CertificateArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tAccount:  example.Name,\n\t\t\tForce:    pulumi.Bool(false),\n\t\t\tDomains: acme.CertificateDomainArray{\n\t\t\t\t\u0026acme.CertificateDomainArgs{\n\t\t\t\t\tDomain: pulumi.String(\"pve.example.dedyn.io\"),\n\t\t\t\t\tPlugin: desec.Plugin,\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample,\n\t\t\tdesec,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.AcmeAccount;\nimport io.muehlbachler.pulumi.proxmoxve.AcmeAccountArgs;\nimport io.muehlbachler.pulumi.proxmoxve.AcmeDnsPlugin;\nimport io.muehlbachler.pulumi.proxmoxve.AcmeDnsPluginArgs;\nimport io.muehlbachler.pulumi.proxmoxve.Acme.Certificate;\nimport io.muehlbachler.pulumi.proxmoxve.Acme.CertificateArgs;\nimport com.pulumi.proxmoxve.Acme.inputs.CertificateDomainArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Create an ACME account\n        var example = new AcmeAccount(\"example\", AcmeAccountArgs.builder()\n            .name(\"production\")\n            .contact(\"admin@example.com\")\n            .directory(\"https://acme-v02.api.letsencrypt.org/directory\")\n            .tos(\"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\")\n            .build());\n\n        // Configure a DNS plugin (Desec example)\n        var desec = new AcmeDnsPlugin(\"desec\", AcmeDnsPluginArgs.builder()\n            .plugin(\"desec\")\n            .api(\"desec\")\n            .data(Map.of(\"DEDYN_TOKEN\", dedynToken))\n            .build());\n\n        // Order a certificate using the DNS plugin\n        var test = new Certificate(\"test\", CertificateArgs.builder()\n            .nodeName(\"pve\")\n            .account(example.name())\n            .force(false)\n            .domains(CertificateDomainArgs.builder()\n                .domain(\"pve.example.dedyn.io\")\n                .plugin(desec.plugin())\n                .build())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(                \n                    example,\n                    desec)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create an ACME account\n  example:\n    type: proxmoxve:AcmeAccount\n    properties:\n      name: production\n      contact: admin@example.com\n      directory: https://acme-v02.api.letsencrypt.org/directory\n      tos: https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\n  # Configure a DNS plugin (Desec example)\n  desec:\n    type: proxmoxve:AcmeDnsPlugin\n    properties:\n      plugin: desec\n      api: desec\n      data:\n        DEDYN_TOKEN: ${dedynToken}\n  # Order a certificate using the DNS plugin\n  test:\n    type: proxmoxve:Acme:Certificate\n    properties:\n      nodeName: pve\n      account: ${example.name}\n      force: false\n      domains:\n        - domain: pve.example.dedyn.io\n          plugin: ${desec.plugin}\n    options:\n      dependsOn:\n        - ${example}\n        - ${desec}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Force Certificate Renewal\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst exampleForce = new proxmoxve.acme.Certificate(\"example_force\", {\n    nodeName: \"pve\",\n    account: example.name,\n    force: true,\n    domains: [{\n        domain: \"pve.example.com\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample_force = proxmoxve.acme.Certificate(\"example_force\",\n    node_name=\"pve\",\n    account=example[\"name\"],\n    force=True,\n    domains=[{\n        \"domain\": \"pve.example.com\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleForce = new ProxmoxVE.Acme.Certificate(\"example_force\", new()\n    {\n        NodeName = \"pve\",\n        Account = example.Name,\n        Force = true,\n        Domains = new[]\n        {\n            new ProxmoxVE.Acme.Inputs.CertificateDomainArgs\n            {\n                Domain = \"pve.example.com\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/acme\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := acme.NewCertificate(ctx, \"example_force\", \u0026acme.CertificateArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tAccount:  pulumi.Any(example.Name),\n\t\t\tForce:    pulumi.Bool(true),\n\t\t\tDomains: acme.CertificateDomainArray{\n\t\t\t\t\u0026acme.CertificateDomainArgs{\n\t\t\t\t\tDomain: pulumi.String(\"pve.example.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Acme.Certificate;\nimport io.muehlbachler.pulumi.proxmoxve.Acme.CertificateArgs;\nimport com.pulumi.proxmoxve.Acme.inputs.CertificateDomainArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var exampleForce = new Certificate(\"exampleForce\", CertificateArgs.builder()\n            .nodeName(\"pve\")\n            .account(example.name())\n            .force(true)\n            .domains(CertificateDomainArgs.builder()\n                .domain(\"pve.example.com\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleForce:\n    type: proxmoxve:Acme:Certificate\n    name: example_force\n    properties:\n      nodeName: pve\n      account: ${example.name}\n      force: true # This will trigger renewal on every apply\n      domains:\n        - domain: pve.example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Related Resources\n\n- \u003cspan pulumi-lang-nodejs=\"`proxmoxve.AcmeAccount`\" pulumi-lang-dotnet=\"`proxmoxve.AcmeAccount`\" pulumi-lang-go=\"`AcmeAccount`\" pulumi-lang-python=\"`AcmeAccount`\" pulumi-lang-yaml=\"`proxmoxve.AcmeAccount`\" pulumi-lang-java=\"`proxmoxve.AcmeAccount`\"\u003e`proxmoxve.AcmeAccount`\u003c/span\u003e - Manages ACME accounts\n- \u003cspan pulumi-lang-nodejs=\"`proxmoxve.AcmeDnsPlugin`\" pulumi-lang-dotnet=\"`proxmoxve.AcmeDnsPlugin`\" pulumi-lang-go=\"`AcmeDnsPlugin`\" pulumi-lang-python=\"`AcmeDnsPlugin`\" pulumi-lang-yaml=\"`proxmoxve.AcmeDnsPlugin`\" pulumi-lang-java=\"`proxmoxve.AcmeDnsPlugin`\"\u003e`proxmoxve.AcmeDnsPlugin`\u003c/span\u003e - Manages ACME DNS plugins for DNS-01 challenges\n- \u003cspan pulumi-lang-nodejs=\"`proxmoxve.Certifi`\" pulumi-lang-dotnet=\"`proxmoxve.Certifi`\" pulumi-lang-go=\"`Certifi`\" pulumi-lang-python=\"`Certifi`\" pulumi-lang-yaml=\"`proxmoxve.Certifi`\" pulumi-lang-java=\"`proxmoxve.Certifi`\"\u003e`proxmoxve.Certifi`\u003c/span\u003e - Manages custom SSL/TLS certificates (non-ACME)\n\n## Import\n\nACME certificates can be imported using the node name:\n\n#!/usr/bin/env sh\n\nACME certificates can be imported using the node name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:Acme/certificate:Certificate example pve\n```\n\n","properties":{"account":{"type":"string","description":"The ACME account name to use for ordering the certificate."},"certificate":{"type":"string","description":"The PEM-encoded certificate data.","language":{"csharp":{"name":"certificatePem"}}},"domains":{"type":"array","items":{"$ref":"#/types/proxmoxve:Acme/CertificateDomain:CertificateDomain"},"description":"The list of domains to include in the certificate. At least one domain is required."},"fingerprint":{"type":"string","description":"The certificate fingerprint."},"force":{"type":"boolean","description":"Force certificate renewal even if the certificate is not due for renewal yet. Setting this to true will trigger a new certificate order on every apply."},"issuer":{"type":"string","description":"The certificate issuer."},"nodeName":{"type":"string","description":"The name of the Proxmox VE node for which to order/manage the ACME certificate."},"notAfter":{"type":"string","description":"The certificate expiration timestamp."},"notBefore":{"type":"string","description":"The certificate start timestamp."},"subject":{"type":"string","description":"The certificate subject."},"subjectAlternativeNames":{"type":"array","items":{"type":"string"},"description":"The certificate subject alternative names (SANs)."}},"required":["account","certificate","domains","fingerprint","force","issuer","nodeName","notAfter","notBefore","subject","subjectAlternativeNames"],"inputProperties":{"account":{"type":"string","description":"The ACME account name to use for ordering the certificate."},"domains":{"type":"array","items":{"$ref":"#/types/proxmoxve:Acme/CertificateDomain:CertificateDomain"},"description":"The list of domains to include in the certificate. At least one domain is required."},"force":{"type":"boolean","description":"Force certificate renewal even if the certificate is not due for renewal yet. Setting this to true will trigger a new certificate order on every apply."},"nodeName":{"type":"string","description":"The name of the Proxmox VE node for which to order/manage the ACME certificate."}},"requiredInputs":["account","domains","nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering Certificate resources.\n","properties":{"account":{"type":"string","description":"The ACME account name to use for ordering the certificate."},"certificate":{"type":"string","description":"The PEM-encoded certificate data.","language":{"csharp":{"name":"certificatePem"}}},"domains":{"type":"array","items":{"$ref":"#/types/proxmoxve:Acme/CertificateDomain:CertificateDomain"},"description":"The list of domains to include in the certificate. At least one domain is required."},"fingerprint":{"type":"string","description":"The certificate fingerprint."},"force":{"type":"boolean","description":"Force certificate renewal even if the certificate is not due for renewal yet. Setting this to true will trigger a new certificate order on every apply."},"issuer":{"type":"string","description":"The certificate issuer."},"nodeName":{"type":"string","description":"The name of the Proxmox VE node for which to order/manage the ACME certificate."},"notAfter":{"type":"string","description":"The certificate expiration timestamp."},"notBefore":{"type":"string","description":"The certificate start timestamp."},"subject":{"type":"string","description":"The certificate subject."},"subjectAlternativeNames":{"type":"array","items":{"type":"string"},"description":"The certificate subject alternative names (SANs)."}},"type":"object"}},"proxmoxve:Apt/repository:Repository":{"description":"Manages an APT repository of a Proxmox VE node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.apt.Repository(\"example\", {\n    enabled: true,\n    filePath: \"/etc/apt/sources.list\",\n    index: 0,\n    node: \"pve\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.apt.Repository(\"example\",\n    enabled=True,\n    file_path=\"/etc/apt/sources.list\",\n    index=0,\n    node=\"pve\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ProxmoxVE.Apt.Repository(\"example\", new()\n    {\n        Enabled = true,\n        FilePath = \"/etc/apt/sources.list\",\n        Index = 0,\n        Node = \"pve\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/apt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := apt.NewRepository(ctx, \"example\", \u0026apt.RepositoryArgs{\n\t\t\tEnabled:  pulumi.Bool(true),\n\t\t\tFilePath: pulumi.String(\"/etc/apt/sources.list\"),\n\t\t\tIndex:    pulumi.Int(0),\n\t\t\tNode:     pulumi.String(\"pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Apt.Repository;\nimport io.muehlbachler.pulumi.proxmoxve.Apt.RepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Repository(\"example\", RepositoryArgs.builder()\n            .enabled(true)\n            .filePath(\"/etc/apt/sources.list\")\n            .index(0)\n            .node(\"pve\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:Apt:Repository\n    properties:\n      enabled: true\n      filePath: /etc/apt/sources.list\n      index: 0\n      node: pve\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nAn APT repository can be imported using a comma-separated list consisting of the name of the Proxmox VE node,\n\nthe absolute source list file path, and the index in the exact same order, e.g.:\n\n```sh\n$ pulumi import proxmoxve:Apt/repository:Repository example pve,/etc/apt/sources.list,0\n```\n\n","properties":{"comment":{"type":"string","description":"The associated comment.\n"},"components":{"type":"array","items":{"type":"string"},"description":"The list of components.\n"},"enabled":{"type":"boolean","description":"Indicates the activation status.\n"},"filePath":{"type":"string","description":"The absolute path of the source list file that contains this repository.\n"},"fileType":{"type":"string","description":"The format of the defining source list file.\n"},"index":{"type":"integer","description":"The index within the defining source list file.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"},"packageTypes":{"type":"array","items":{"type":"string"},"description":"The list of package types.\n"},"suites":{"type":"array","items":{"type":"string"},"description":"The list of package distributions.\n"},"uris":{"type":"array","items":{"type":"string"},"description":"The list of repository URIs.\n"}},"required":["comment","components","enabled","filePath","fileType","index","node","packageTypes","suites","uris"],"inputProperties":{"enabled":{"type":"boolean","description":"Indicates the activation status.\n"},"filePath":{"type":"string","description":"The absolute path of the source list file that contains this repository.\n"},"index":{"type":"integer","description":"The index within the defining source list file.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"}},"requiredInputs":["filePath","index","node"],"stateInputs":{"description":"Input properties used for looking up and filtering Repository resources.\n","properties":{"comment":{"type":"string","description":"The associated comment.\n"},"components":{"type":"array","items":{"type":"string"},"description":"The list of components.\n"},"enabled":{"type":"boolean","description":"Indicates the activation status.\n"},"filePath":{"type":"string","description":"The absolute path of the source list file that contains this repository.\n"},"fileType":{"type":"string","description":"The format of the defining source list file.\n"},"index":{"type":"integer","description":"The index within the defining source list file.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"},"packageTypes":{"type":"array","items":{"type":"string"},"description":"The list of package types.\n"},"suites":{"type":"array","items":{"type":"string"},"description":"The list of package distributions.\n"},"uris":{"type":"array","items":{"type":"string"},"description":"The list of repository URIs.\n"}},"type":"object"}},"proxmoxve:Apt/standard/repository:Repository":{"description":"Manages an APT standard repository of a Proxmox VE node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.apt.standard.Repository(\"example\", {\n    handle: \"no-subscription\",\n    node: \"pve\",\n});\nconst exampleRepository = new proxmoxve.apt.Repository(\"example\", {\n    enabled: true,\n    filePath: example.filePath,\n    index: example.index,\n    node: example.node,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.apt.standard.Repository(\"example\",\n    handle=\"no-subscription\",\n    node=\"pve\")\nexample_repository = proxmoxve.apt.Repository(\"example\",\n    enabled=True,\n    file_path=example.file_path,\n    index=example.index,\n    node=example.node)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ProxmoxVE.Apt.Standard.Repository(\"example\", new()\n    {\n        Handle = \"no-subscription\",\n        Node = \"pve\",\n    });\n\n    var exampleRepository = new ProxmoxVE.Apt.Repository(\"example\", new()\n    {\n        Enabled = true,\n        FilePath = example.FilePath,\n        Index = example.Index,\n        Node = example.Node,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/apt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := apt.NewRepository(ctx, \"example\", \u0026apt.RepositoryArgs{\n\t\t\tHandle: pulumi.String(\"no-subscription\"),\n\t\t\tNode:   pulumi.String(\"pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apt.NewRepository(ctx, \"example\", \u0026apt.RepositoryArgs{\n\t\t\tEnabled:  pulumi.Bool(true),\n\t\t\tFilePath: example.FilePath,\n\t\t\tIndex:    example.Index,\n\t\t\tNode:     example.Node,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Apt.Repository;\nimport io.muehlbachler.pulumi.proxmoxve.Apt.RepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Repository(\"example\", RepositoryArgs.builder()\n            .handle(\"no-subscription\")\n            .node(\"pve\")\n            .build());\n\n        var exampleRepository = new Repository(\"exampleRepository\", RepositoryArgs.builder()\n            .enabled(true)\n            .filePath(example.filePath())\n            .index(example.index())\n            .node(example.node())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:Apt/standard:Repository\n    properties:\n      handle: no-subscription\n      node: pve\n  exampleRepository:\n    type: proxmoxve:Apt:Repository\n    name: example\n    properties:\n      enabled: true\n      filePath: ${example.filePath}\n      index: ${example.index}\n      node: ${example.node}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nAn APT standard repository can be imported using a comma-separated list consisting of the name of the Proxmox VE node,\n\nand the standard repository handle in the exact same order, e.g.:\n\n```sh\n$ pulumi import proxmoxve:Apt/standard/repository:Repository example pve,no-subscription\n```\n\n","properties":{"description":{"type":"string","description":"The description of the APT standard repository.\n"},"filePath":{"type":"string","description":"The absolute path of the source list file that contains this standard repository.\n"},"handle":{"type":"string","description":"The handle of the APT standard repository. Must be `ceph-squid-enterprise` | `ceph-squid-no-subscription` | `ceph-squid-test` | \u003cspan pulumi-lang-nodejs=\"`enterprise`\" pulumi-lang-dotnet=\"`Enterprise`\" pulumi-lang-go=\"`enterprise`\" pulumi-lang-python=\"`enterprise`\" pulumi-lang-yaml=\"`enterprise`\" pulumi-lang-java=\"`enterprise`\"\u003e`enterprise`\u003c/span\u003e | `no-subscription` | \u003cspan pulumi-lang-nodejs=\"`test`\" pulumi-lang-dotnet=\"`Test`\" pulumi-lang-go=\"`test`\" pulumi-lang-python=\"`test`\" pulumi-lang-yaml=\"`test`\" pulumi-lang-java=\"`test`\"\u003e`test`\u003c/span\u003e.\n"},"index":{"type":"integer","description":"The index within the defining source list file.\n"},"name":{"type":"string","description":"The name of the APT standard repository.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"},"status":{"type":"integer","description":"Indicates the activation status.\n"}},"required":["description","filePath","handle","index","name","node","status"],"inputProperties":{"handle":{"type":"string","description":"The handle of the APT standard repository. Must be `ceph-squid-enterprise` | `ceph-squid-no-subscription` | `ceph-squid-test` | \u003cspan pulumi-lang-nodejs=\"`enterprise`\" pulumi-lang-dotnet=\"`Enterprise`\" pulumi-lang-go=\"`enterprise`\" pulumi-lang-python=\"`enterprise`\" pulumi-lang-yaml=\"`enterprise`\" pulumi-lang-java=\"`enterprise`\"\u003e`enterprise`\u003c/span\u003e | `no-subscription` | \u003cspan pulumi-lang-nodejs=\"`test`\" pulumi-lang-dotnet=\"`Test`\" pulumi-lang-go=\"`test`\" pulumi-lang-python=\"`test`\" pulumi-lang-yaml=\"`test`\" pulumi-lang-java=\"`test`\"\u003e`test`\u003c/span\u003e.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"}},"requiredInputs":["handle","node"],"stateInputs":{"description":"Input properties used for looking up and filtering Repository resources.\n","properties":{"description":{"type":"string","description":"The description of the APT standard repository.\n"},"filePath":{"type":"string","description":"The absolute path of the source list file that contains this standard repository.\n"},"handle":{"type":"string","description":"The handle of the APT standard repository. Must be `ceph-squid-enterprise` | `ceph-squid-no-subscription` | `ceph-squid-test` | \u003cspan pulumi-lang-nodejs=\"`enterprise`\" pulumi-lang-dotnet=\"`Enterprise`\" pulumi-lang-go=\"`enterprise`\" pulumi-lang-python=\"`enterprise`\" pulumi-lang-yaml=\"`enterprise`\" pulumi-lang-java=\"`enterprise`\"\u003e`enterprise`\u003c/span\u003e | `no-subscription` | \u003cspan pulumi-lang-nodejs=\"`test`\" pulumi-lang-dotnet=\"`Test`\" pulumi-lang-go=\"`test`\" pulumi-lang-python=\"`test`\" pulumi-lang-yaml=\"`test`\" pulumi-lang-java=\"`test`\"\u003e`test`\u003c/span\u003e.\n"},"index":{"type":"integer","description":"The index within the defining source list file.\n"},"name":{"type":"string","description":"The name of the APT standard repository.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"},"status":{"type":"integer","description":"Indicates the activation status.\n"}},"type":"object"}},"proxmoxve:CT/container:Container":{"description":"Manages a container.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\nimport * as random from \"@pulumi/random\";\nimport * as std from \"@pulumi/std\";\nimport * as tls from \"@pulumi/tls\";\n\nexport = async () =\u003e {\n    const ubuntu2504LxcImg = new proxmoxve.download.File(\"ubuntu_2504_lxc_img\", {\n        contentType: \"vztmpl\",\n        datastoreId: \"local\",\n        nodeName: \"first-node\",\n        url: \"https://mirrors.servercentral.com/ubuntu-cloud-images/releases/25.04/release/ubuntu-25.04-server-cloudimg-amd64-root.tar.xz\",\n    });\n    const ubuntuContainerPassword = new random.RandomPassword(\"ubuntu_container_password\", {\n        length: 16,\n        overrideSpecial: \"_%@\",\n        special: true,\n    });\n    const ubuntuContainerKey = new tls.PrivateKey(\"ubuntu_container_key\", {\n        algorithm: \"RSA\",\n        rsaBits: 2048,\n    });\n    const ubuntuContainer = new proxmoxve.ct.Container(\"ubuntu_container\", {\n        description: \"Managed by Pulumi\",\n        nodeName: \"first-node\",\n        vmId: 1234,\n        unprivileged: true,\n        features: {\n            nesting: true,\n        },\n        initialization: {\n            hostname: \"terraform-provider-proxmox-ubuntu-container\",\n            ipConfigs: [{\n                ipv4: {\n                    address: \"dhcp\",\n                },\n            }],\n            userAccount: {\n                keys: [std.trimspaceOutput({\n                    input: ubuntuContainerKey.publicKeyOpenssh,\n                }).apply(invoke =\u003e invoke.result)],\n                password: ubuntuContainerPassword.result,\n            },\n        },\n        networkInterfaces: [{\n            name: \"veth0\",\n        }],\n        disk: {\n            datastoreId: \"local-lvm\",\n            size: 4,\n        },\n        operatingSystem: {\n            templateFileId: ubuntu2504LxcImg.id,\n            type: \"ubuntu\",\n        },\n        mountPoints: [\n            {\n                volume: \"/mnt/bindmounts/shared\",\n                path: \"/mnt/shared\",\n            },\n            {\n                volume: \"local-lvm\",\n                size: \"10G\",\n                path: \"/mnt/volume\",\n            },\n            {\n                volume: \"local-lvm:subvol-108-disk-101\",\n                size: \"10G\",\n                path: \"/mnt/data\",\n            },\n        ],\n        startup: {\n            order: 3,\n            upDelay: 60,\n            downDelay: 60,\n        },\n    });\n    return {\n        ubuntuContainerPassword: ubuntuContainerPassword.result,\n        ubuntuContainerPrivateKey: ubuntuContainerKey.privateKeyPem,\n        ubuntuContainerPublicKey: ubuntuContainerKey.publicKeyOpenssh,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\nimport pulumi_random as random\nimport pulumi_std as std\nimport pulumi_tls as tls\n\nubuntu2504_lxc_img = proxmoxve.download.File(\"ubuntu_2504_lxc_img\",\n    content_type=\"vztmpl\",\n    datastore_id=\"local\",\n    node_name=\"first-node\",\n    url=\"https://mirrors.servercentral.com/ubuntu-cloud-images/releases/25.04/release/ubuntu-25.04-server-cloudimg-amd64-root.tar.xz\")\nubuntu_container_password = random.RandomPassword(\"ubuntu_container_password\",\n    length=16,\n    override_special=\"_%@\",\n    special=True)\nubuntu_container_key = tls.PrivateKey(\"ubuntu_container_key\",\n    algorithm=\"RSA\",\n    rsa_bits=2048)\nubuntu_container = proxmoxve.ct.Container(\"ubuntu_container\",\n    description=\"Managed by Pulumi\",\n    node_name=\"first-node\",\n    vm_id=1234,\n    unprivileged=True,\n    features={\n        \"nesting\": True,\n    },\n    initialization={\n        \"hostname\": \"terraform-provider-proxmox-ubuntu-container\",\n        \"ip_configs\": [{\n            \"ipv4\": {\n                \"address\": \"dhcp\",\n            },\n        }],\n        \"user_account\": {\n            \"keys\": [std.trimspace_output(input=ubuntu_container_key.public_key_openssh).apply(lambda invoke: invoke.result)],\n            \"password\": ubuntu_container_password.result,\n        },\n    },\n    network_interfaces=[{\n        \"name\": \"veth0\",\n    }],\n    disk={\n        \"datastore_id\": \"local-lvm\",\n        \"size\": 4,\n    },\n    operating_system={\n        \"template_file_id\": ubuntu2504_lxc_img.id,\n        \"type\": \"ubuntu\",\n    },\n    mount_points=[\n        {\n            \"volume\": \"/mnt/bindmounts/shared\",\n            \"path\": \"/mnt/shared\",\n        },\n        {\n            \"volume\": \"local-lvm\",\n            \"size\": \"10G\",\n            \"path\": \"/mnt/volume\",\n        },\n        {\n            \"volume\": \"local-lvm:subvol-108-disk-101\",\n            \"size\": \"10G\",\n            \"path\": \"/mnt/data\",\n        },\n    ],\n    startup={\n        \"order\": 3,\n        \"up_delay\": 60,\n        \"down_delay\": 60,\n    })\npulumi.export(\"ubuntuContainerPassword\", ubuntu_container_password.result)\npulumi.export(\"ubuntuContainerPrivateKey\", ubuntu_container_key.private_key_pem)\npulumi.export(\"ubuntuContainerPublicKey\", ubuntu_container_key.public_key_openssh)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\nusing Random = Pulumi.Random;\nusing Std = Pulumi.Std;\nusing Tls = Pulumi.Tls;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ubuntu2504LxcImg = new ProxmoxVE.Download.File(\"ubuntu_2504_lxc_img\", new()\n    {\n        ContentType = \"vztmpl\",\n        DatastoreId = \"local\",\n        NodeName = \"first-node\",\n        Url = \"https://mirrors.servercentral.com/ubuntu-cloud-images/releases/25.04/release/ubuntu-25.04-server-cloudimg-amd64-root.tar.xz\",\n    });\n\n    var ubuntuContainerPassword = new Random.RandomPassword(\"ubuntu_container_password\", new()\n    {\n        Length = 16,\n        OverrideSpecial = \"_%@\",\n        Special = true,\n    });\n\n    var ubuntuContainerKey = new Tls.PrivateKey(\"ubuntu_container_key\", new()\n    {\n        Algorithm = \"RSA\",\n        RsaBits = 2048,\n    });\n\n    var ubuntuContainer = new ProxmoxVE.CT.Container(\"ubuntu_container\", new()\n    {\n        Description = \"Managed by Pulumi\",\n        NodeName = \"first-node\",\n        VmId = 1234,\n        Unprivileged = true,\n        Features = new ProxmoxVE.CT.Inputs.ContainerFeaturesArgs\n        {\n            Nesting = true,\n        },\n        Initialization = new ProxmoxVE.CT.Inputs.ContainerInitializationArgs\n        {\n            Hostname = \"terraform-provider-proxmox-ubuntu-container\",\n            IpConfigs = new[]\n            {\n                new ProxmoxVE.CT.Inputs.ContainerInitializationIpConfigArgs\n                {\n                    Ipv4 = new ProxmoxVE.CT.Inputs.ContainerInitializationIpConfigIpv4Args\n                    {\n                        Address = \"dhcp\",\n                    },\n                },\n            },\n            UserAccount = new ProxmoxVE.CT.Inputs.ContainerInitializationUserAccountArgs\n            {\n                Keys = new[]\n                {\n                    Std.Trimspace.Invoke(new()\n                    {\n                        Input = ubuntuContainerKey.PublicKeyOpenssh,\n                    }).Apply(invoke =\u003e invoke.Result),\n                },\n                Password = ubuntuContainerPassword.Result,\n            },\n        },\n        NetworkInterfaces = new[]\n        {\n            new ProxmoxVE.CT.Inputs.ContainerNetworkInterfaceArgs\n            {\n                Name = \"veth0\",\n            },\n        },\n        Disk = new ProxmoxVE.CT.Inputs.ContainerDiskArgs\n        {\n            DatastoreId = \"local-lvm\",\n            Size = 4,\n        },\n        OperatingSystem = new ProxmoxVE.CT.Inputs.ContainerOperatingSystemArgs\n        {\n            TemplateFileId = ubuntu2504LxcImg.Id,\n            Type = \"ubuntu\",\n        },\n        MountPoints = new[]\n        {\n            new ProxmoxVE.CT.Inputs.ContainerMountPointArgs\n            {\n                Volume = \"/mnt/bindmounts/shared\",\n                Path = \"/mnt/shared\",\n            },\n            new ProxmoxVE.CT.Inputs.ContainerMountPointArgs\n            {\n                Volume = \"local-lvm\",\n                Size = \"10G\",\n                Path = \"/mnt/volume\",\n            },\n            new ProxmoxVE.CT.Inputs.ContainerMountPointArgs\n            {\n                Volume = \"local-lvm:subvol-108-disk-101\",\n                Size = \"10G\",\n                Path = \"/mnt/data\",\n            },\n        },\n        Startup = new ProxmoxVE.CT.Inputs.ContainerStartupArgs\n        {\n            Order = 3,\n            UpDelay = 60,\n            DownDelay = 60,\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"ubuntuContainerPassword\"] = ubuntuContainerPassword.Result,\n        [\"ubuntuContainerPrivateKey\"] = ubuntuContainerKey.PrivateKeyPem,\n        [\"ubuntuContainerPublicKey\"] = ubuntuContainerKey.PublicKeyOpenssh,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/ct\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/download\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi-tls/sdk/v5/go/tls\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tubuntu2504LxcImg, err := download.NewFile(ctx, \"ubuntu_2504_lxc_img\", \u0026download.FileArgs{\n\t\t\tContentType: pulumi.String(\"vztmpl\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName:    pulumi.String(\"first-node\"),\n\t\t\tUrl:         pulumi.String(\"https://mirrors.servercentral.com/ubuntu-cloud-images/releases/25.04/release/ubuntu-25.04-server-cloudimg-amd64-root.tar.xz\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tubuntuContainerPassword, err := random.NewRandomPassword(ctx, \"ubuntu_container_password\", \u0026random.RandomPasswordArgs{\n\t\t\tLength:          pulumi.Int(16),\n\t\t\tOverrideSpecial: pulumi.String(\"_%@\"),\n\t\t\tSpecial:         pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tubuntuContainerKey, err := tls.NewPrivateKey(ctx, \"ubuntu_container_key\", \u0026tls.PrivateKeyArgs{\n\t\t\tAlgorithm: pulumi.String(\"RSA\"),\n\t\t\tRsaBits:   pulumi.Int(2048),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = ct.NewContainer(ctx, \"ubuntu_container\", \u0026ct.ContainerArgs{\n\t\t\tDescription:  pulumi.String(\"Managed by Pulumi\"),\n\t\t\tNodeName:     pulumi.String(\"first-node\"),\n\t\t\tVmId:         pulumi.Int(1234),\n\t\t\tUnprivileged: pulumi.Bool(true),\n\t\t\tFeatures: \u0026ct.ContainerFeaturesArgs{\n\t\t\t\tNesting: pulumi.Bool(true),\n\t\t\t},\n\t\t\tInitialization: \u0026ct.ContainerInitializationArgs{\n\t\t\t\tHostname: pulumi.String(\"terraform-provider-proxmox-ubuntu-container\"),\n\t\t\t\tIpConfigs: ct.ContainerInitializationIpConfigArray{\n\t\t\t\t\t\u0026ct.ContainerInitializationIpConfigArgs{\n\t\t\t\t\t\tIpv4: \u0026ct.ContainerInitializationIpConfigIpv4Args{\n\t\t\t\t\t\t\tAddress: pulumi.String(\"dhcp\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tUserAccount: \u0026ct.ContainerInitializationUserAccountArgs{\n\t\t\t\t\tKeys: pulumi.StringArray{\n\t\t\t\t\t\tstd.TrimspaceOutput(ctx, std.TrimspaceOutputArgs{\n\t\t\t\t\t\t\tInput: ubuntuContainerKey.PublicKeyOpenssh,\n\t\t\t\t\t\t}, nil).ApplyT(func(invoke std.TrimspaceResult) (*string, error) {\n\t\t\t\t\t\t\treturn invoke.Result, nil\n\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t},\n\t\t\t\t\tPassword: ubuntuContainerPassword.Result,\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: ct.ContainerNetworkInterfaceArray{\n\t\t\t\t\u0026ct.ContainerNetworkInterfaceArgs{\n\t\t\t\t\tName: pulumi.String(\"veth0\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisk: \u0026ct.ContainerDiskArgs{\n\t\t\t\tDatastoreId: pulumi.String(\"local-lvm\"),\n\t\t\t\tSize:        pulumi.Int(4),\n\t\t\t},\n\t\t\tOperatingSystem: \u0026ct.ContainerOperatingSystemArgs{\n\t\t\t\tTemplateFileId: ubuntu2504LxcImg.ID(),\n\t\t\t\tType:           pulumi.String(\"ubuntu\"),\n\t\t\t},\n\t\t\tMountPoints: ct.ContainerMountPointArray{\n\t\t\t\t\u0026ct.ContainerMountPointArgs{\n\t\t\t\t\tVolume: pulumi.String(\"/mnt/bindmounts/shared\"),\n\t\t\t\t\tPath:   pulumi.String(\"/mnt/shared\"),\n\t\t\t\t},\n\t\t\t\t\u0026ct.ContainerMountPointArgs{\n\t\t\t\t\tVolume: pulumi.String(\"local-lvm\"),\n\t\t\t\t\tSize:   pulumi.String(\"10G\"),\n\t\t\t\t\tPath:   pulumi.String(\"/mnt/volume\"),\n\t\t\t\t},\n\t\t\t\t\u0026ct.ContainerMountPointArgs{\n\t\t\t\t\tVolume: pulumi.String(\"local-lvm:subvol-108-disk-101\"),\n\t\t\t\t\tSize:   pulumi.String(\"10G\"),\n\t\t\t\t\tPath:   pulumi.String(\"/mnt/data\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tStartup: \u0026ct.ContainerStartupArgs{\n\t\t\t\tOrder:     pulumi.Int(3),\n\t\t\t\tUpDelay:   pulumi.Int(60),\n\t\t\t\tDownDelay: pulumi.Int(60),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"ubuntuContainerPassword\", ubuntuContainerPassword.Result)\n\t\tctx.Export(\"ubuntuContainerPrivateKey\", ubuntuContainerKey.PrivateKeyPem)\n\t\tctx.Export(\"ubuntuContainerPublicKey\", ubuntuContainerKey.PublicKeyOpenssh)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Download.File;\nimport io.muehlbachler.pulumi.proxmoxve.Download.FileArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.tls.PrivateKey;\nimport com.pulumi.tls.PrivateKeyArgs;\nimport io.muehlbachler.pulumi.proxmoxve.CT.Container;\nimport io.muehlbachler.pulumi.proxmoxve.CT.ContainerArgs;\nimport com.pulumi.proxmoxve.CT.inputs.ContainerFeaturesArgs;\nimport com.pulumi.proxmoxve.CT.inputs.ContainerInitializationArgs;\nimport com.pulumi.proxmoxve.CT.inputs.ContainerInitializationUserAccountArgs;\nimport com.pulumi.proxmoxve.CT.inputs.ContainerNetworkInterfaceArgs;\nimport com.pulumi.proxmoxve.CT.inputs.ContainerDiskArgs;\nimport com.pulumi.proxmoxve.CT.inputs.ContainerOperatingSystemArgs;\nimport com.pulumi.proxmoxve.CT.inputs.ContainerMountPointArgs;\nimport com.pulumi.proxmoxve.CT.inputs.ContainerStartupArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.TrimspaceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var ubuntu2504LxcImg = new File(\"ubuntu2504LxcImg\", FileArgs.builder()\n            .contentType(\"vztmpl\")\n            .datastoreId(\"local\")\n            .nodeName(\"first-node\")\n            .url(\"https://mirrors.servercentral.com/ubuntu-cloud-images/releases/25.04/release/ubuntu-25.04-server-cloudimg-amd64-root.tar.xz\")\n            .build());\n\n        var ubuntuContainerPassword = new RandomPassword(\"ubuntuContainerPassword\", RandomPasswordArgs.builder()\n            .length(16)\n            .overrideSpecial(\"_%@\")\n            .special(true)\n            .build());\n\n        var ubuntuContainerKey = new PrivateKey(\"ubuntuContainerKey\", PrivateKeyArgs.builder()\n            .algorithm(\"RSA\")\n            .rsaBits(2048)\n            .build());\n\n        var ubuntuContainer = new Container(\"ubuntuContainer\", ContainerArgs.builder()\n            .description(\"Managed by Pulumi\")\n            .nodeName(\"first-node\")\n            .vmId(1234)\n            .unprivileged(true)\n            .features(ContainerFeaturesArgs.builder()\n                .nesting(true)\n                .build())\n            .initialization(ContainerInitializationArgs.builder()\n                .hostname(\"terraform-provider-proxmox-ubuntu-container\")\n                .ipConfigs(ContainerInitializationIpConfigArgs.builder()\n                    .ipv4(ContainerInitializationIpConfigIpv4Args.builder()\n                        .address(\"dhcp\")\n                        .build())\n                    .build())\n                .userAccount(ContainerInitializationUserAccountArgs.builder()\n                    .keys(StdFunctions.trimspace(TrimspaceArgs.builder()\n                        .input(ubuntuContainerKey.publicKeyOpenssh())\n                        .build()).applyValue(_invoke -\u003e _invoke.result()))\n                    .password(ubuntuContainerPassword.result())\n                    .build())\n                .build())\n            .networkInterfaces(ContainerNetworkInterfaceArgs.builder()\n                .name(\"veth0\")\n                .build())\n            .disk(ContainerDiskArgs.builder()\n                .datastoreId(\"local-lvm\")\n                .size(4)\n                .build())\n            .operatingSystem(ContainerOperatingSystemArgs.builder()\n                .templateFileId(ubuntu2504LxcImg.id())\n                .type(\"ubuntu\")\n                .build())\n            .mountPoints(            \n                ContainerMountPointArgs.builder()\n                    .volume(\"/mnt/bindmounts/shared\")\n                    .path(\"/mnt/shared\")\n                    .build(),\n                ContainerMountPointArgs.builder()\n                    .volume(\"local-lvm\")\n                    .size(\"10G\")\n                    .path(\"/mnt/volume\")\n                    .build(),\n                ContainerMountPointArgs.builder()\n                    .volume(\"local-lvm:subvol-108-disk-101\")\n                    .size(\"10G\")\n                    .path(\"/mnt/data\")\n                    .build())\n            .startup(ContainerStartupArgs.builder()\n                .order(3)\n                .upDelay(60)\n                .downDelay(60)\n                .build())\n            .build());\n\n        ctx.export(\"ubuntuContainerPassword\", ubuntuContainerPassword.result());\n        ctx.export(\"ubuntuContainerPrivateKey\", ubuntuContainerKey.privateKeyPem());\n        ctx.export(\"ubuntuContainerPublicKey\", ubuntuContainerKey.publicKeyOpenssh());\n    }\n}\n```\n```yaml\nresources:\n  ubuntuContainer:\n    type: proxmoxve:CT:Container\n    name: ubuntu_container\n    properties:\n      description: Managed by Pulumi\n      nodeName: first-node\n      vmId: 1234 # newer linux distributions require unprivileged user namespaces\n      unprivileged: true\n      features:\n        nesting: true\n      initialization:\n        hostname: terraform-provider-proxmox-ubuntu-container\n        ipConfigs:\n          - ipv4:\n              address: dhcp\n        userAccount:\n          keys:\n            - fn::invoke:\n                function: std:trimspace\n                arguments:\n                  input: ${ubuntuContainerKey.publicKeyOpenssh}\n                return: result\n          password: ${ubuntuContainerPassword.result}\n      networkInterfaces:\n        - name: veth0\n      disk:\n        datastoreId: local-lvm\n        size: 4\n      operatingSystem:\n        templateFileId: ${ubuntu2504LxcImg.id}\n        type: ubuntu\n      mountPoints:\n        - volume: /mnt/bindmounts/shared\n          path: /mnt/shared\n        - volume: local-lvm\n          size: 10G\n          path: /mnt/volume\n        - volume: local-lvm:subvol-108-disk-101\n          size: 10G\n          path: /mnt/data\n      startup:\n        order: '3'\n        upDelay: '60'\n        downDelay: '60'\n  ubuntu2504LxcImg:\n    type: proxmoxve:Download:File\n    name: ubuntu_2504_lxc_img\n    properties:\n      contentType: vztmpl\n      datastoreId: local\n      nodeName: first-node\n      url: https://mirrors.servercentral.com/ubuntu-cloud-images/releases/25.04/release/ubuntu-25.04-server-cloudimg-amd64-root.tar.xz\n  ubuntuContainerPassword:\n    type: random:RandomPassword\n    name: ubuntu_container_password\n    properties:\n      length: 16\n      overrideSpecial: _%@\n      special: true\n  ubuntuContainerKey:\n    type: tls:PrivateKey\n    name: ubuntu_container_key\n    properties:\n      algorithm: RSA\n      rsaBits: 2048\noutputs:\n  ubuntuContainerPassword: ${ubuntuContainerPassword.result}\n  ubuntuContainerPrivateKey: ${ubuntuContainerKey.privateKeyPem}\n  ubuntuContainerPublicKey: ${ubuntuContainerKey.publicKeyOpenssh}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `node_name` and the `vm_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:CT/container:Container ubuntu_container first-node/1234\n```\n\n","properties":{"clone":{"$ref":"#/types/proxmoxve:CT/ContainerClone:ContainerClone","description":"The cloning configuration.\n"},"console":{"$ref":"#/types/proxmoxve:CT/ContainerConsole:ContainerConsole","description":"The console configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:CT/ContainerCpu:ContainerCpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description.\n"},"devicePassthroughs":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerDevicePassthrough:ContainerDevicePassthrough"},"description":"Device to pass through to the container (multiple blocks supported).\n"},"disk":{"$ref":"#/types/proxmoxve:CT/ContainerDisk:ContainerDisk","description":"The disk configuration.\n"},"environmentVariables":{"type":"object","additionalProperties":{"type":"string"},"description":"A map of runtime environment variables for the container init process.\n"},"features":{"$ref":"#/types/proxmoxve:CT/ContainerFeatures:ContainerFeatures","description":"The container feature flags. Changing flags (except nesting) is only allowed for `root@pam` authenticated user.\n"},"hookScriptFileId":{"type":"string","description":"The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).\n"},"initialization":{"$ref":"#/types/proxmoxve:CT/ContainerInitialization:ContainerInitialization","description":"The initialization configuration.\n"},"ipv4":{"type":"object","additionalProperties":{"type":"string"},"description":"The map of IPv4 addresses per network devices. Returns the first address for each network device, if multiple addresses are assigned.\n"},"ipv6":{"type":"object","additionalProperties":{"type":"string"},"description":"The map of IPv6 addresses per network device. Returns the first address for each network device, if multiple addresses are assigned.\n"},"memory":{"$ref":"#/types/proxmoxve:CT/ContainerMemory:ContainerMemory","description":"The memory configuration.\n"},"mountPoints":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerMountPoint:ContainerMountPoint"},"description":"A mount point"},"networkInterfaces":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerNetworkInterface:ContainerNetworkInterface"},"description":"A network interface (multiple blocks\nsupported).\n"},"nodeName":{"type":"string","description":"The name of the node to assign the container to.\n"},"operatingSystem":{"$ref":"#/types/proxmoxve:CT/ContainerOperatingSystem:ContainerOperatingSystem","description":"The Operating System configuration.\n"},"poolId":{"type":"string","description":"The identifier for a pool to assign the container to.\n"},"protection":{"type":"boolean","description":"Whether to set the protection flag of the container (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e). This will prevent the container itself and its disk for remove/update operations.\n"},"startOnBoot":{"type":"boolean","description":"Automatically start container when the host\nsystem boots (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"started":{"type":"boolean","description":"Whether to start the container (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"startup":{"$ref":"#/types/proxmoxve:CT/ContainerStartup:ContainerStartup","description":"Defines startup and shutdown behavior of the container.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags the container tags. This is only meta\ninformation (defaults to `[]`). Note: Proxmox always sorts the container tags and set them to lowercase.\nIf tag contains capital letters, then Proxmox will always report a\ndifference on the resource. You may use the \u003cspan pulumi-lang-nodejs=\"`ignoreChanges`\" pulumi-lang-dotnet=\"`IgnoreChanges`\" pulumi-lang-go=\"`ignoreChanges`\" pulumi-lang-python=\"`ignore_changes`\" pulumi-lang-yaml=\"`ignoreChanges`\" pulumi-lang-java=\"`ignoreChanges`\"\u003e`ignore_changes`\u003c/span\u003e lifecycle\nmeta-argument to ignore changes to this attribute.\n"},"template":{"type":"boolean","description":"Whether to create a template (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"timeoutClone":{"type":"integer","description":"Timeout for cloning a container in seconds (defaults to 1800).\n"},"timeoutCreate":{"type":"integer","description":"Timeout for creating a container in seconds (defaults to 1800).\n"},"timeoutDelete":{"type":"integer","description":"Timeout for deleting a container in seconds (defaults to 60).\n"},"timeoutStart":{"type":"integer","description":"Start container timeout","deprecationMessage":"This field is deprecated and will be removed in a future release. An overall operation timeout (\u003cspan pulumi-lang-nodejs=\"`timeoutCreate`\" pulumi-lang-dotnet=\"`TimeoutCreate`\" pulumi-lang-go=\"`timeoutCreate`\" pulumi-lang-python=\"`timeout_create`\" pulumi-lang-yaml=\"`timeoutCreate`\" pulumi-lang-java=\"`timeoutCreate`\"\u003e`timeout_create`\u003c/span\u003e / \u003cspan pulumi-lang-nodejs=\"`timeoutClone`\" pulumi-lang-dotnet=\"`TimeoutClone`\" pulumi-lang-go=\"`timeoutClone`\" pulumi-lang-python=\"`timeout_clone`\" pulumi-lang-yaml=\"`timeoutClone`\" pulumi-lang-java=\"`timeoutClone`\"\u003e`timeout_clone`\u003c/span\u003e) is used instead."},"timeoutUpdate":{"type":"integer","description":"Timeout for updating a container in seconds (defaults to 1800).\n"},"unprivileged":{"type":"boolean","description":"Whether the container runs as unprivileged on the host (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"vmId":{"type":"integer","description":"The container identifier\n"},"waitForIp":{"$ref":"#/types/proxmoxve:CT/ContainerWaitForIp:ContainerWaitForIp","description":"Configuration for waiting for specific IP address types when the container starts.\n"}},"required":["ipv4","ipv6","nodeName","vmId"],"inputProperties":{"clone":{"$ref":"#/types/proxmoxve:CT/ContainerClone:ContainerClone","description":"The cloning configuration.\n"},"console":{"$ref":"#/types/proxmoxve:CT/ContainerConsole:ContainerConsole","description":"The console configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:CT/ContainerCpu:ContainerCpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description.\n"},"devicePassthroughs":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerDevicePassthrough:ContainerDevicePassthrough"},"description":"Device to pass through to the container (multiple blocks supported).\n"},"disk":{"$ref":"#/types/proxmoxve:CT/ContainerDisk:ContainerDisk","description":"The disk configuration.\n"},"environmentVariables":{"type":"object","additionalProperties":{"type":"string"},"description":"A map of runtime environment variables for the container init process.\n"},"features":{"$ref":"#/types/proxmoxve:CT/ContainerFeatures:ContainerFeatures","description":"The container feature flags. Changing flags (except nesting) is only allowed for `root@pam` authenticated user.\n"},"hookScriptFileId":{"type":"string","description":"The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).\n"},"initialization":{"$ref":"#/types/proxmoxve:CT/ContainerInitialization:ContainerInitialization","description":"The initialization configuration.\n"},"memory":{"$ref":"#/types/proxmoxve:CT/ContainerMemory:ContainerMemory","description":"The memory configuration.\n"},"mountPoints":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerMountPoint:ContainerMountPoint"},"description":"A mount point","willReplaceOnChanges":true},"networkInterfaces":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerNetworkInterface:ContainerNetworkInterface"},"description":"A network interface (multiple blocks\nsupported).\n"},"nodeName":{"type":"string","description":"The name of the node to assign the container to.\n","willReplaceOnChanges":true},"operatingSystem":{"$ref":"#/types/proxmoxve:CT/ContainerOperatingSystem:ContainerOperatingSystem","description":"The Operating System configuration.\n","willReplaceOnChanges":true},"poolId":{"type":"string","description":"The identifier for a pool to assign the container to.\n","willReplaceOnChanges":true},"protection":{"type":"boolean","description":"Whether to set the protection flag of the container (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e). This will prevent the container itself and its disk for remove/update operations.\n"},"startOnBoot":{"type":"boolean","description":"Automatically start container when the host\nsystem boots (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"started":{"type":"boolean","description":"Whether to start the container (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"startup":{"$ref":"#/types/proxmoxve:CT/ContainerStartup:ContainerStartup","description":"Defines startup and shutdown behavior of the container.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags the container tags. This is only meta\ninformation (defaults to `[]`). Note: Proxmox always sorts the container tags and set them to lowercase.\nIf tag contains capital letters, then Proxmox will always report a\ndifference on the resource. You may use the \u003cspan pulumi-lang-nodejs=\"`ignoreChanges`\" pulumi-lang-dotnet=\"`IgnoreChanges`\" pulumi-lang-go=\"`ignoreChanges`\" pulumi-lang-python=\"`ignore_changes`\" pulumi-lang-yaml=\"`ignoreChanges`\" pulumi-lang-java=\"`ignoreChanges`\"\u003e`ignore_changes`\u003c/span\u003e lifecycle\nmeta-argument to ignore changes to this attribute.\n"},"template":{"type":"boolean","description":"Whether to create a template (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n","willReplaceOnChanges":true},"timeoutClone":{"type":"integer","description":"Timeout for cloning a container in seconds (defaults to 1800).\n"},"timeoutCreate":{"type":"integer","description":"Timeout for creating a container in seconds (defaults to 1800).\n"},"timeoutDelete":{"type":"integer","description":"Timeout for deleting a container in seconds (defaults to 60).\n"},"timeoutStart":{"type":"integer","description":"Start container timeout","deprecationMessage":"This field is deprecated and will be removed in a future release. An overall operation timeout (\u003cspan pulumi-lang-nodejs=\"`timeoutCreate`\" pulumi-lang-dotnet=\"`TimeoutCreate`\" pulumi-lang-go=\"`timeoutCreate`\" pulumi-lang-python=\"`timeout_create`\" pulumi-lang-yaml=\"`timeoutCreate`\" pulumi-lang-java=\"`timeoutCreate`\"\u003e`timeout_create`\u003c/span\u003e / \u003cspan pulumi-lang-nodejs=\"`timeoutClone`\" pulumi-lang-dotnet=\"`TimeoutClone`\" pulumi-lang-go=\"`timeoutClone`\" pulumi-lang-python=\"`timeout_clone`\" pulumi-lang-yaml=\"`timeoutClone`\" pulumi-lang-java=\"`timeoutClone`\"\u003e`timeout_clone`\u003c/span\u003e) is used instead."},"timeoutUpdate":{"type":"integer","description":"Timeout for updating a container in seconds (defaults to 1800).\n"},"unprivileged":{"type":"boolean","description":"Whether the container runs as unprivileged on the host (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"The container identifier\n"},"waitForIp":{"$ref":"#/types/proxmoxve:CT/ContainerWaitForIp:ContainerWaitForIp","description":"Configuration for waiting for specific IP address types when the container starts.\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering Container resources.\n","properties":{"clone":{"$ref":"#/types/proxmoxve:CT/ContainerClone:ContainerClone","description":"The cloning configuration.\n"},"console":{"$ref":"#/types/proxmoxve:CT/ContainerConsole:ContainerConsole","description":"The console configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:CT/ContainerCpu:ContainerCpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description.\n"},"devicePassthroughs":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerDevicePassthrough:ContainerDevicePassthrough"},"description":"Device to pass through to the container (multiple blocks supported).\n"},"disk":{"$ref":"#/types/proxmoxve:CT/ContainerDisk:ContainerDisk","description":"The disk configuration.\n"},"environmentVariables":{"type":"object","additionalProperties":{"type":"string"},"description":"A map of runtime environment variables for the container init process.\n"},"features":{"$ref":"#/types/proxmoxve:CT/ContainerFeatures:ContainerFeatures","description":"The container feature flags. Changing flags (except nesting) is only allowed for `root@pam` authenticated user.\n"},"hookScriptFileId":{"type":"string","description":"The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).\n"},"initialization":{"$ref":"#/types/proxmoxve:CT/ContainerInitialization:ContainerInitialization","description":"The initialization configuration.\n"},"ipv4":{"type":"object","additionalProperties":{"type":"string"},"description":"The map of IPv4 addresses per network devices. Returns the first address for each network device, if multiple addresses are assigned.\n"},"ipv6":{"type":"object","additionalProperties":{"type":"string"},"description":"The map of IPv6 addresses per network device. Returns the first address for each network device, if multiple addresses are assigned.\n"},"memory":{"$ref":"#/types/proxmoxve:CT/ContainerMemory:ContainerMemory","description":"The memory configuration.\n"},"mountPoints":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerMountPoint:ContainerMountPoint"},"description":"A mount point","willReplaceOnChanges":true},"networkInterfaces":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerNetworkInterface:ContainerNetworkInterface"},"description":"A network interface (multiple blocks\nsupported).\n"},"nodeName":{"type":"string","description":"The name of the node to assign the container to.\n","willReplaceOnChanges":true},"operatingSystem":{"$ref":"#/types/proxmoxve:CT/ContainerOperatingSystem:ContainerOperatingSystem","description":"The Operating System configuration.\n","willReplaceOnChanges":true},"poolId":{"type":"string","description":"The identifier for a pool to assign the container to.\n","willReplaceOnChanges":true},"protection":{"type":"boolean","description":"Whether to set the protection flag of the container (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e). This will prevent the container itself and its disk for remove/update operations.\n"},"startOnBoot":{"type":"boolean","description":"Automatically start container when the host\nsystem boots (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"started":{"type":"boolean","description":"Whether to start the container (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"startup":{"$ref":"#/types/proxmoxve:CT/ContainerStartup:ContainerStartup","description":"Defines startup and shutdown behavior of the container.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags the container tags. This is only meta\ninformation (defaults to `[]`). Note: Proxmox always sorts the container tags and set them to lowercase.\nIf tag contains capital letters, then Proxmox will always report a\ndifference on the resource. You may use the \u003cspan pulumi-lang-nodejs=\"`ignoreChanges`\" pulumi-lang-dotnet=\"`IgnoreChanges`\" pulumi-lang-go=\"`ignoreChanges`\" pulumi-lang-python=\"`ignore_changes`\" pulumi-lang-yaml=\"`ignoreChanges`\" pulumi-lang-java=\"`ignoreChanges`\"\u003e`ignore_changes`\u003c/span\u003e lifecycle\nmeta-argument to ignore changes to this attribute.\n"},"template":{"type":"boolean","description":"Whether to create a template (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n","willReplaceOnChanges":true},"timeoutClone":{"type":"integer","description":"Timeout for cloning a container in seconds (defaults to 1800).\n"},"timeoutCreate":{"type":"integer","description":"Timeout for creating a container in seconds (defaults to 1800).\n"},"timeoutDelete":{"type":"integer","description":"Timeout for deleting a container in seconds (defaults to 60).\n"},"timeoutStart":{"type":"integer","description":"Start container timeout","deprecationMessage":"This field is deprecated and will be removed in a future release. An overall operation timeout (\u003cspan pulumi-lang-nodejs=\"`timeoutCreate`\" pulumi-lang-dotnet=\"`TimeoutCreate`\" pulumi-lang-go=\"`timeoutCreate`\" pulumi-lang-python=\"`timeout_create`\" pulumi-lang-yaml=\"`timeoutCreate`\" pulumi-lang-java=\"`timeoutCreate`\"\u003e`timeout_create`\u003c/span\u003e / \u003cspan pulumi-lang-nodejs=\"`timeoutClone`\" pulumi-lang-dotnet=\"`TimeoutClone`\" pulumi-lang-go=\"`timeoutClone`\" pulumi-lang-python=\"`timeout_clone`\" pulumi-lang-yaml=\"`timeoutClone`\" pulumi-lang-java=\"`timeoutClone`\"\u003e`timeout_clone`\u003c/span\u003e) is used instead."},"timeoutUpdate":{"type":"integer","description":"Timeout for updating a container in seconds (defaults to 1800).\n"},"unprivileged":{"type":"boolean","description":"Whether the container runs as unprivileged on the host (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"The container identifier\n"},"waitForIp":{"$ref":"#/types/proxmoxve:CT/ContainerWaitForIp:ContainerWaitForIp","description":"Configuration for waiting for specific IP address types when the container starts.\n"}},"type":"object"}},"proxmoxve:Cluster/options:Options":{"description":"Manages Proxmox VE Cluster Datacenter options.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst options = new proxmoxve.cluster.Options(\"options\", {\n    language: \"en\",\n    keyboard: \"pl\",\n    emailFrom: \"ged@gont.earthsea\",\n    bandwidthLimitMigration: 555555,\n    bandwidthLimitDefault: 666666,\n    maxWorkers: 5,\n    migrationCidr: \"10.0.0.0/8\",\n    migrationType: \"secure\",\n    nextId: {\n        lower: 100,\n        upper: 999999999,\n    },\n    notify: {\n        haFencingMode: \"never\",\n        haFencingTarget: \"default-matcher\",\n        packageUpdates: \"always\",\n        packageUpdatesTarget: \"default-matcher\",\n        packageReplication: \"always\",\n        packageReplicationTarget: \"default-matcher\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noptions = proxmoxve.cluster.Options(\"options\",\n    language=\"en\",\n    keyboard=\"pl\",\n    email_from=\"ged@gont.earthsea\",\n    bandwidth_limit_migration=555555,\n    bandwidth_limit_default=666666,\n    max_workers=5,\n    migration_cidr=\"10.0.0.0/8\",\n    migration_type=\"secure\",\n    next_id={\n        \"lower\": 100,\n        \"upper\": 999999999,\n    },\n    notify={\n        \"ha_fencing_mode\": \"never\",\n        \"ha_fencing_target\": \"default-matcher\",\n        \"package_updates\": \"always\",\n        \"package_updates_target\": \"default-matcher\",\n        \"package_replication\": \"always\",\n        \"package_replication_target\": \"default-matcher\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var options = new ProxmoxVE.Cluster.Options(\"options\", new()\n    {\n        Language = \"en\",\n        Keyboard = \"pl\",\n        EmailFrom = \"ged@gont.earthsea\",\n        BandwidthLimitMigration = 555555,\n        BandwidthLimitDefault = 666666,\n        MaxWorkers = 5,\n        MigrationCidr = \"10.0.0.0/8\",\n        MigrationType = \"secure\",\n        NextId = new ProxmoxVE.Cluster.Inputs.OptionsNextIdArgs\n        {\n            Lower = 100,\n            Upper = 999999999,\n        },\n        Notify = new ProxmoxVE.Cluster.Inputs.OptionsNotifyArgs\n        {\n            HaFencingMode = \"never\",\n            HaFencingTarget = \"default-matcher\",\n            PackageUpdates = \"always\",\n            PackageUpdatesTarget = \"default-matcher\",\n            PackageReplication = \"always\",\n            PackageReplicationTarget = \"default-matcher\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/cluster\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cluster.NewOptions(ctx, \"options\", \u0026cluster.OptionsArgs{\n\t\t\tLanguage:                pulumi.String(\"en\"),\n\t\t\tKeyboard:                pulumi.String(\"pl\"),\n\t\t\tEmailFrom:               pulumi.String(\"ged@gont.earthsea\"),\n\t\t\tBandwidthLimitMigration: pulumi.Int(555555),\n\t\t\tBandwidthLimitDefault:   pulumi.Int(666666),\n\t\t\tMaxWorkers:              pulumi.Int(5),\n\t\t\tMigrationCidr:           pulumi.String(\"10.0.0.0/8\"),\n\t\t\tMigrationType:           pulumi.String(\"secure\"),\n\t\t\tNextId: \u0026cluster.OptionsNextIdArgs{\n\t\t\t\tLower: pulumi.Int(100),\n\t\t\t\tUpper: pulumi.Int(999999999),\n\t\t\t},\n\t\t\tNotify: \u0026cluster.OptionsNotifyArgs{\n\t\t\t\tHaFencingMode:            pulumi.String(\"never\"),\n\t\t\t\tHaFencingTarget:          pulumi.String(\"default-matcher\"),\n\t\t\t\tPackageUpdates:           pulumi.String(\"always\"),\n\t\t\t\tPackageUpdatesTarget:     pulumi.String(\"default-matcher\"),\n\t\t\t\tPackageReplication:       \"always\",\n\t\t\t\tPackageReplicationTarget: \"default-matcher\",\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Cluster.Options;\nimport io.muehlbachler.pulumi.proxmoxve.Cluster.OptionsArgs;\nimport com.pulumi.proxmoxve.Cluster.inputs.OptionsNextIdArgs;\nimport com.pulumi.proxmoxve.Cluster.inputs.OptionsNotifyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var options = new Options(\"options\", OptionsArgs.builder()\n            .language(\"en\")\n            .keyboard(\"pl\")\n            .emailFrom(\"ged@gont.earthsea\")\n            .bandwidthLimitMigration(555555)\n            .bandwidthLimitDefault(666666)\n            .maxWorkers(5)\n            .migrationCidr(\"10.0.0.0/8\")\n            .migrationType(\"secure\")\n            .nextId(OptionsNextIdArgs.builder()\n                .lower(100)\n                .upper(999999999)\n                .build())\n            .notify(OptionsNotifyArgs.builder()\n                .haFencingMode(\"never\")\n                .haFencingTarget(\"default-matcher\")\n                .packageUpdates(\"always\")\n                .packageUpdatesTarget(\"default-matcher\")\n                .packageReplication(\"always\")\n                .packageReplicationTarget(\"default-matcher\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  options:\n    type: proxmoxve:Cluster:Options\n    properties:\n      language: en\n      keyboard: pl\n      emailFrom: ged@gont.earthsea\n      bandwidthLimitMigration: 555555\n      bandwidthLimitDefault: 666666\n      maxWorkers: 5\n      migrationCidr: 10.0.0.0/8\n      migrationType: secure\n      nextId:\n        lower: 100\n        upper: 9.99999999e+08\n      notify:\n        haFencingMode: never\n        haFencingTarget: default-matcher\n        packageUpdates: always\n        packageUpdatesTarget: default-matcher\n        packageReplication: always\n        packageReplicationTarget: default-matcher\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nCluster options are global and can be imported using e.g.:\n\n```sh\n$ pulumi import proxmoxve:Cluster/options:Options options cluster\n```\n\n","properties":{"bandwidthLimitClone":{"type":"integer","description":"Clone I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitDefault":{"type":"integer","description":"Default I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitMigration":{"type":"integer","description":"Migration I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitMove":{"type":"integer","description":"Move I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitRestore":{"type":"integer","description":"Restore I/O bandwidth limit in KiB/s.\n"},"console":{"type":"string","description":"Select the default Console viewer. Must be \u003cspan pulumi-lang-nodejs=\"`applet`\" pulumi-lang-dotnet=\"`Applet`\" pulumi-lang-go=\"`applet`\" pulumi-lang-python=\"`applet`\" pulumi-lang-yaml=\"`applet`\" pulumi-lang-java=\"`applet`\"\u003e`applet`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`vv`\" pulumi-lang-dotnet=\"`Vv`\" pulumi-lang-go=\"`vv`\" pulumi-lang-python=\"`vv`\" pulumi-lang-yaml=\"`vv`\" pulumi-lang-java=\"`vv`\"\u003e`vv`\u003c/span\u003e| \u003cspan pulumi-lang-nodejs=\"`html5`\" pulumi-lang-dotnet=\"`Html5`\" pulumi-lang-go=\"`html5`\" pulumi-lang-python=\"`html5`\" pulumi-lang-yaml=\"`html5`\" pulumi-lang-java=\"`html5`\"\u003e`html5`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`xtermjs`\" pulumi-lang-dotnet=\"`Xtermjs`\" pulumi-lang-go=\"`xtermjs`\" pulumi-lang-python=\"`xtermjs`\" pulumi-lang-yaml=\"`xtermjs`\" pulumi-lang-java=\"`xtermjs`\"\u003e`xtermjs`\u003c/span\u003e. You can either use the builtin java applet (VNC; deprecated and maps to html5), an external virt-viewer compatible application (SPICE), an HTML5 based vnc viewer (noVNC), or an HTML5 based console client (xtermjs). If the selected viewer is not available (e.g. SPICE not activated for the VM), the fallback is noVNC.\n"},"crsHa":{"type":"string","description":"Cluster resource scheduling setting for HA. Must be \u003cspan pulumi-lang-nodejs=\"`static`\" pulumi-lang-dotnet=\"`Static`\" pulumi-lang-go=\"`static`\" pulumi-lang-python=\"`static`\" pulumi-lang-yaml=\"`static`\" pulumi-lang-java=\"`static`\"\u003e`static`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`basic`\" pulumi-lang-dotnet=\"`Basic`\" pulumi-lang-go=\"`basic`\" pulumi-lang-python=\"`basic`\" pulumi-lang-yaml=\"`basic`\" pulumi-lang-java=\"`basic`\"\u003e`basic`\u003c/span\u003e (default is \u003cspan pulumi-lang-nodejs=\"`basic`\" pulumi-lang-dotnet=\"`Basic`\" pulumi-lang-go=\"`basic`\" pulumi-lang-python=\"`basic`\" pulumi-lang-yaml=\"`basic`\" pulumi-lang-java=\"`basic`\"\u003e`basic`\u003c/span\u003e).\n"},"crsHaRebalanceOnStart":{"type":"boolean","description":"Cluster resource scheduling setting for HA rebalance on start.\n"},"description":{"type":"string","description":"Datacenter description. Shown in the web-interface datacenter notes panel. This is saved as comment inside the configuration file.\n"},"emailFrom":{"type":"string","description":"email address to send notification from (default is root@$hostname).\n"},"haShutdownPolicy":{"type":"string","description":"Cluster wide HA shutdown policy (). Must be \u003cspan pulumi-lang-nodejs=\"`freeze`\" pulumi-lang-dotnet=\"`Freeze`\" pulumi-lang-go=\"`freeze`\" pulumi-lang-python=\"`freeze`\" pulumi-lang-yaml=\"`freeze`\" pulumi-lang-java=\"`freeze`\"\u003e`freeze`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`failover`\" pulumi-lang-dotnet=\"`Failover`\" pulumi-lang-go=\"`failover`\" pulumi-lang-python=\"`failover`\" pulumi-lang-yaml=\"`failover`\" pulumi-lang-java=\"`failover`\"\u003e`failover`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`migrate`\" pulumi-lang-dotnet=\"`Migrate`\" pulumi-lang-go=\"`migrate`\" pulumi-lang-python=\"`migrate`\" pulumi-lang-yaml=\"`migrate`\" pulumi-lang-java=\"`migrate`\"\u003e`migrate`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`conditional`\" pulumi-lang-dotnet=\"`Conditional`\" pulumi-lang-go=\"`conditional`\" pulumi-lang-python=\"`conditional`\" pulumi-lang-yaml=\"`conditional`\" pulumi-lang-java=\"`conditional`\"\u003e`conditional`\u003c/span\u003e (default is \u003cspan pulumi-lang-nodejs=\"`conditional`\" pulumi-lang-dotnet=\"`Conditional`\" pulumi-lang-go=\"`conditional`\" pulumi-lang-python=\"`conditional`\" pulumi-lang-yaml=\"`conditional`\" pulumi-lang-java=\"`conditional`\"\u003e`conditional`\u003c/span\u003e).\n"},"httpProxy":{"type":"string","description":"Specify external http proxy which is used for downloads (example: `http://username:password@host:port/`).\n"},"keyboard":{"type":"string","description":"Default keyboard layout for vnc server. Must be \u003cspan pulumi-lang-nodejs=\"`de`\" pulumi-lang-dotnet=\"`De`\" pulumi-lang-go=\"`de`\" pulumi-lang-python=\"`de`\" pulumi-lang-yaml=\"`de`\" pulumi-lang-java=\"`de`\"\u003e`de`\u003c/span\u003e | `de-ch` | \u003cspan pulumi-lang-nodejs=\"`da`\" pulumi-lang-dotnet=\"`Da`\" pulumi-lang-go=\"`da`\" pulumi-lang-python=\"`da`\" pulumi-lang-yaml=\"`da`\" pulumi-lang-java=\"`da`\"\u003e`da`\u003c/span\u003e | `en-gb` | `en-us` | \u003cspan pulumi-lang-nodejs=\"`es`\" pulumi-lang-dotnet=\"`Es`\" pulumi-lang-go=\"`es`\" pulumi-lang-python=\"`es`\" pulumi-lang-yaml=\"`es`\" pulumi-lang-java=\"`es`\"\u003e`es`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`fi`\" pulumi-lang-dotnet=\"`Fi`\" pulumi-lang-go=\"`fi`\" pulumi-lang-python=\"`fi`\" pulumi-lang-yaml=\"`fi`\" pulumi-lang-java=\"`fi`\"\u003e`fi`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`fr`\" pulumi-lang-dotnet=\"`Fr`\" pulumi-lang-go=\"`fr`\" pulumi-lang-python=\"`fr`\" pulumi-lang-yaml=\"`fr`\" pulumi-lang-java=\"`fr`\"\u003e`fr`\u003c/span\u003e | `fr-be` | `fr-ca` | `fr-ch` | \u003cspan pulumi-lang-nodejs=\"`hu`\" pulumi-lang-dotnet=\"`Hu`\" pulumi-lang-go=\"`hu`\" pulumi-lang-python=\"`hu`\" pulumi-lang-yaml=\"`hu`\" pulumi-lang-java=\"`hu`\"\u003e`hu`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`is`\" pulumi-lang-dotnet=\"`Is`\" pulumi-lang-go=\"`is`\" pulumi-lang-python=\"`is`\" pulumi-lang-yaml=\"`is`\" pulumi-lang-java=\"`is`\"\u003e`is`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`it`\" pulumi-lang-dotnet=\"`It`\" pulumi-lang-go=\"`it`\" pulumi-lang-python=\"`it`\" pulumi-lang-yaml=\"`it`\" pulumi-lang-java=\"`it`\"\u003e`it`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`ja`\" pulumi-lang-dotnet=\"`Ja`\" pulumi-lang-go=\"`ja`\" pulumi-lang-python=\"`ja`\" pulumi-lang-yaml=\"`ja`\" pulumi-lang-java=\"`ja`\"\u003e`ja`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`lt`\" pulumi-lang-dotnet=\"`Lt`\" pulumi-lang-go=\"`lt`\" pulumi-lang-python=\"`lt`\" pulumi-lang-yaml=\"`lt`\" pulumi-lang-java=\"`lt`\"\u003e`lt`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`mk`\" pulumi-lang-dotnet=\"`Mk`\" pulumi-lang-go=\"`mk`\" pulumi-lang-python=\"`mk`\" pulumi-lang-yaml=\"`mk`\" pulumi-lang-java=\"`mk`\"\u003e`mk`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`nl`\" pulumi-lang-dotnet=\"`Nl`\" pulumi-lang-go=\"`nl`\" pulumi-lang-python=\"`nl`\" pulumi-lang-yaml=\"`nl`\" pulumi-lang-java=\"`nl`\"\u003e`nl`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`no`\" pulumi-lang-dotnet=\"`No`\" pulumi-lang-go=\"`no`\" pulumi-lang-python=\"`no`\" pulumi-lang-yaml=\"`no`\" pulumi-lang-java=\"`no`\"\u003e`no`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`pl`\" pulumi-lang-dotnet=\"`Pl`\" pulumi-lang-go=\"`pl`\" pulumi-lang-python=\"`pl`\" pulumi-lang-yaml=\"`pl`\" pulumi-lang-java=\"`pl`\"\u003e`pl`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`pt`\" pulumi-lang-dotnet=\"`Pt`\" pulumi-lang-go=\"`pt`\" pulumi-lang-python=\"`pt`\" pulumi-lang-yaml=\"`pt`\" pulumi-lang-java=\"`pt`\"\u003e`pt`\u003c/span\u003e | `pt-br` | \u003cspan pulumi-lang-nodejs=\"`sv`\" pulumi-lang-dotnet=\"`Sv`\" pulumi-lang-go=\"`sv`\" pulumi-lang-python=\"`sv`\" pulumi-lang-yaml=\"`sv`\" pulumi-lang-java=\"`sv`\"\u003e`sv`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`sl`\" pulumi-lang-dotnet=\"`Sl`\" pulumi-lang-go=\"`sl`\" pulumi-lang-python=\"`sl`\" pulumi-lang-yaml=\"`sl`\" pulumi-lang-java=\"`sl`\"\u003e`sl`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`tr`\" pulumi-lang-dotnet=\"`Tr`\" pulumi-lang-go=\"`tr`\" pulumi-lang-python=\"`tr`\" pulumi-lang-yaml=\"`tr`\" pulumi-lang-java=\"`tr`\"\u003e`tr`\u003c/span\u003e.\n"},"language":{"type":"string","description":"Default GUI language. Must be \u003cspan pulumi-lang-nodejs=\"`ca`\" pulumi-lang-dotnet=\"`Ca`\" pulumi-lang-go=\"`ca`\" pulumi-lang-python=\"`ca`\" pulumi-lang-yaml=\"`ca`\" pulumi-lang-java=\"`ca`\"\u003e`ca`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`da`\" pulumi-lang-dotnet=\"`Da`\" pulumi-lang-go=\"`da`\" pulumi-lang-python=\"`da`\" pulumi-lang-yaml=\"`da`\" pulumi-lang-java=\"`da`\"\u003e`da`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`de`\" pulumi-lang-dotnet=\"`De`\" pulumi-lang-go=\"`de`\" pulumi-lang-python=\"`de`\" pulumi-lang-yaml=\"`de`\" pulumi-lang-java=\"`de`\"\u003e`de`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`en`\" pulumi-lang-dotnet=\"`En`\" pulumi-lang-go=\"`en`\" pulumi-lang-python=\"`en`\" pulumi-lang-yaml=\"`en`\" pulumi-lang-java=\"`en`\"\u003e`en`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`es`\" pulumi-lang-dotnet=\"`Es`\" pulumi-lang-go=\"`es`\" pulumi-lang-python=\"`es`\" pulumi-lang-yaml=\"`es`\" pulumi-lang-java=\"`es`\"\u003e`es`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`eu`\" pulumi-lang-dotnet=\"`Eu`\" pulumi-lang-go=\"`eu`\" pulumi-lang-python=\"`eu`\" pulumi-lang-yaml=\"`eu`\" pulumi-lang-java=\"`eu`\"\u003e`eu`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`fa`\" pulumi-lang-dotnet=\"`Fa`\" pulumi-lang-go=\"`fa`\" pulumi-lang-python=\"`fa`\" pulumi-lang-yaml=\"`fa`\" pulumi-lang-java=\"`fa`\"\u003e`fa`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`fr`\" pulumi-lang-dotnet=\"`Fr`\" pulumi-lang-go=\"`fr`\" pulumi-lang-python=\"`fr`\" pulumi-lang-yaml=\"`fr`\" pulumi-lang-java=\"`fr`\"\u003e`fr`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`he`\" pulumi-lang-dotnet=\"`He`\" pulumi-lang-go=\"`he`\" pulumi-lang-python=\"`he`\" pulumi-lang-yaml=\"`he`\" pulumi-lang-java=\"`he`\"\u003e`he`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`it`\" pulumi-lang-dotnet=\"`It`\" pulumi-lang-go=\"`it`\" pulumi-lang-python=\"`it`\" pulumi-lang-yaml=\"`it`\" pulumi-lang-java=\"`it`\"\u003e`it`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`ja`\" pulumi-lang-dotnet=\"`Ja`\" pulumi-lang-go=\"`ja`\" pulumi-lang-python=\"`ja`\" pulumi-lang-yaml=\"`ja`\" pulumi-lang-java=\"`ja`\"\u003e`ja`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`nb`\" pulumi-lang-dotnet=\"`Nb`\" pulumi-lang-go=\"`nb`\" pulumi-lang-python=\"`nb`\" pulumi-lang-yaml=\"`nb`\" pulumi-lang-java=\"`nb`\"\u003e`nb`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`nn`\" pulumi-lang-dotnet=\"`Nn`\" pulumi-lang-go=\"`nn`\" pulumi-lang-python=\"`nn`\" pulumi-lang-yaml=\"`nn`\" pulumi-lang-java=\"`nn`\"\u003e`nn`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`pl`\" pulumi-lang-dotnet=\"`Pl`\" pulumi-lang-go=\"`pl`\" pulumi-lang-python=\"`pl`\" pulumi-lang-yaml=\"`pl`\" pulumi-lang-java=\"`pl`\"\u003e`pl`\u003c/span\u003e | `pt_BR` | \u003cspan pulumi-lang-nodejs=\"`ru`\" pulumi-lang-dotnet=\"`Ru`\" pulumi-lang-go=\"`ru`\" pulumi-lang-python=\"`ru`\" pulumi-lang-yaml=\"`ru`\" pulumi-lang-java=\"`ru`\"\u003e`ru`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`sl`\" pulumi-lang-dotnet=\"`Sl`\" pulumi-lang-go=\"`sl`\" pulumi-lang-python=\"`sl`\" pulumi-lang-yaml=\"`sl`\" pulumi-lang-java=\"`sl`\"\u003e`sl`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`sv`\" pulumi-lang-dotnet=\"`Sv`\" pulumi-lang-go=\"`sv`\" pulumi-lang-python=\"`sv`\" pulumi-lang-yaml=\"`sv`\" pulumi-lang-java=\"`sv`\"\u003e`sv`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`tr`\" pulumi-lang-dotnet=\"`Tr`\" pulumi-lang-go=\"`tr`\" pulumi-lang-python=\"`tr`\" pulumi-lang-yaml=\"`tr`\" pulumi-lang-java=\"`tr`\"\u003e`tr`\u003c/span\u003e | `zh_CN` | `zh_TW`.\n"},"macPrefix":{"type":"string","description":"Prefix for autogenerated MAC addresses.\n"},"maxWorkers":{"type":"integer","description":"Defines how many workers (per node) are maximal started on actions like 'stopall VMs' or task from the ha-manager.\n"},"migrationCidr":{"type":"string","description":"Cluster wide migration network CIDR.\n"},"migrationType":{"type":"string","description":"Cluster wide migration type. Must be \u003cspan pulumi-lang-nodejs=\"`secure`\" pulumi-lang-dotnet=\"`Secure`\" pulumi-lang-go=\"`secure`\" pulumi-lang-python=\"`secure`\" pulumi-lang-yaml=\"`secure`\" pulumi-lang-java=\"`secure`\"\u003e`secure`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`insecure`\" pulumi-lang-dotnet=\"`Insecure`\" pulumi-lang-go=\"`insecure`\" pulumi-lang-python=\"`insecure`\" pulumi-lang-yaml=\"`insecure`\" pulumi-lang-java=\"`insecure`\"\u003e`insecure`\u003c/span\u003e (default is \u003cspan pulumi-lang-nodejs=\"`secure`\" pulumi-lang-dotnet=\"`Secure`\" pulumi-lang-go=\"`secure`\" pulumi-lang-python=\"`secure`\" pulumi-lang-yaml=\"`secure`\" pulumi-lang-java=\"`secure`\"\u003e`secure`\u003c/span\u003e).\n"},"nextId":{"$ref":"#/types/proxmoxve:Cluster/OptionsNextId:OptionsNextId","description":"The ranges for the next free VM ID auto-selection pool.\n"},"notify":{"$ref":"#/types/proxmoxve:Cluster/OptionsNotify:OptionsNotify","description":"Cluster-wide notification settings.\n"}},"required":["crsHa","macPrefix"],"inputProperties":{"bandwidthLimitClone":{"type":"integer","description":"Clone I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitDefault":{"type":"integer","description":"Default I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitMigration":{"type":"integer","description":"Migration I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitMove":{"type":"integer","description":"Move I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitRestore":{"type":"integer","description":"Restore I/O bandwidth limit in KiB/s.\n"},"console":{"type":"string","description":"Select the default Console viewer. Must be \u003cspan pulumi-lang-nodejs=\"`applet`\" pulumi-lang-dotnet=\"`Applet`\" pulumi-lang-go=\"`applet`\" pulumi-lang-python=\"`applet`\" pulumi-lang-yaml=\"`applet`\" pulumi-lang-java=\"`applet`\"\u003e`applet`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`vv`\" pulumi-lang-dotnet=\"`Vv`\" pulumi-lang-go=\"`vv`\" pulumi-lang-python=\"`vv`\" pulumi-lang-yaml=\"`vv`\" pulumi-lang-java=\"`vv`\"\u003e`vv`\u003c/span\u003e| \u003cspan pulumi-lang-nodejs=\"`html5`\" pulumi-lang-dotnet=\"`Html5`\" pulumi-lang-go=\"`html5`\" pulumi-lang-python=\"`html5`\" pulumi-lang-yaml=\"`html5`\" pulumi-lang-java=\"`html5`\"\u003e`html5`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`xtermjs`\" pulumi-lang-dotnet=\"`Xtermjs`\" pulumi-lang-go=\"`xtermjs`\" pulumi-lang-python=\"`xtermjs`\" pulumi-lang-yaml=\"`xtermjs`\" pulumi-lang-java=\"`xtermjs`\"\u003e`xtermjs`\u003c/span\u003e. You can either use the builtin java applet (VNC; deprecated and maps to html5), an external virt-viewer compatible application (SPICE), an HTML5 based vnc viewer (noVNC), or an HTML5 based console client (xtermjs). If the selected viewer is not available (e.g. SPICE not activated for the VM), the fallback is noVNC.\n"},"crsHa":{"type":"string","description":"Cluster resource scheduling setting for HA. Must be \u003cspan pulumi-lang-nodejs=\"`static`\" pulumi-lang-dotnet=\"`Static`\" pulumi-lang-go=\"`static`\" pulumi-lang-python=\"`static`\" pulumi-lang-yaml=\"`static`\" pulumi-lang-java=\"`static`\"\u003e`static`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`basic`\" pulumi-lang-dotnet=\"`Basic`\" pulumi-lang-go=\"`basic`\" pulumi-lang-python=\"`basic`\" pulumi-lang-yaml=\"`basic`\" pulumi-lang-java=\"`basic`\"\u003e`basic`\u003c/span\u003e (default is \u003cspan pulumi-lang-nodejs=\"`basic`\" pulumi-lang-dotnet=\"`Basic`\" pulumi-lang-go=\"`basic`\" pulumi-lang-python=\"`basic`\" pulumi-lang-yaml=\"`basic`\" pulumi-lang-java=\"`basic`\"\u003e`basic`\u003c/span\u003e).\n"},"crsHaRebalanceOnStart":{"type":"boolean","description":"Cluster resource scheduling setting for HA rebalance on start.\n"},"description":{"type":"string","description":"Datacenter description. Shown in the web-interface datacenter notes panel. This is saved as comment inside the configuration file.\n"},"emailFrom":{"type":"string","description":"email address to send notification from (default is root@$hostname).\n"},"haShutdownPolicy":{"type":"string","description":"Cluster wide HA shutdown policy (). Must be \u003cspan pulumi-lang-nodejs=\"`freeze`\" pulumi-lang-dotnet=\"`Freeze`\" pulumi-lang-go=\"`freeze`\" pulumi-lang-python=\"`freeze`\" pulumi-lang-yaml=\"`freeze`\" pulumi-lang-java=\"`freeze`\"\u003e`freeze`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`failover`\" pulumi-lang-dotnet=\"`Failover`\" pulumi-lang-go=\"`failover`\" pulumi-lang-python=\"`failover`\" pulumi-lang-yaml=\"`failover`\" pulumi-lang-java=\"`failover`\"\u003e`failover`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`migrate`\" pulumi-lang-dotnet=\"`Migrate`\" pulumi-lang-go=\"`migrate`\" pulumi-lang-python=\"`migrate`\" pulumi-lang-yaml=\"`migrate`\" pulumi-lang-java=\"`migrate`\"\u003e`migrate`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`conditional`\" pulumi-lang-dotnet=\"`Conditional`\" pulumi-lang-go=\"`conditional`\" pulumi-lang-python=\"`conditional`\" pulumi-lang-yaml=\"`conditional`\" pulumi-lang-java=\"`conditional`\"\u003e`conditional`\u003c/span\u003e (default is \u003cspan pulumi-lang-nodejs=\"`conditional`\" pulumi-lang-dotnet=\"`Conditional`\" pulumi-lang-go=\"`conditional`\" pulumi-lang-python=\"`conditional`\" pulumi-lang-yaml=\"`conditional`\" pulumi-lang-java=\"`conditional`\"\u003e`conditional`\u003c/span\u003e).\n"},"httpProxy":{"type":"string","description":"Specify external http proxy which is used for downloads (example: `http://username:password@host:port/`).\n"},"keyboard":{"type":"string","description":"Default keyboard layout for vnc server. Must be \u003cspan pulumi-lang-nodejs=\"`de`\" pulumi-lang-dotnet=\"`De`\" pulumi-lang-go=\"`de`\" pulumi-lang-python=\"`de`\" pulumi-lang-yaml=\"`de`\" pulumi-lang-java=\"`de`\"\u003e`de`\u003c/span\u003e | `de-ch` | \u003cspan pulumi-lang-nodejs=\"`da`\" pulumi-lang-dotnet=\"`Da`\" pulumi-lang-go=\"`da`\" pulumi-lang-python=\"`da`\" pulumi-lang-yaml=\"`da`\" pulumi-lang-java=\"`da`\"\u003e`da`\u003c/span\u003e | `en-gb` | `en-us` | \u003cspan pulumi-lang-nodejs=\"`es`\" pulumi-lang-dotnet=\"`Es`\" pulumi-lang-go=\"`es`\" pulumi-lang-python=\"`es`\" pulumi-lang-yaml=\"`es`\" pulumi-lang-java=\"`es`\"\u003e`es`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`fi`\" pulumi-lang-dotnet=\"`Fi`\" pulumi-lang-go=\"`fi`\" pulumi-lang-python=\"`fi`\" pulumi-lang-yaml=\"`fi`\" pulumi-lang-java=\"`fi`\"\u003e`fi`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`fr`\" pulumi-lang-dotnet=\"`Fr`\" pulumi-lang-go=\"`fr`\" pulumi-lang-python=\"`fr`\" pulumi-lang-yaml=\"`fr`\" pulumi-lang-java=\"`fr`\"\u003e`fr`\u003c/span\u003e | `fr-be` | `fr-ca` | `fr-ch` | \u003cspan pulumi-lang-nodejs=\"`hu`\" pulumi-lang-dotnet=\"`Hu`\" pulumi-lang-go=\"`hu`\" pulumi-lang-python=\"`hu`\" pulumi-lang-yaml=\"`hu`\" pulumi-lang-java=\"`hu`\"\u003e`hu`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`is`\" pulumi-lang-dotnet=\"`Is`\" pulumi-lang-go=\"`is`\" pulumi-lang-python=\"`is`\" pulumi-lang-yaml=\"`is`\" pulumi-lang-java=\"`is`\"\u003e`is`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`it`\" pulumi-lang-dotnet=\"`It`\" pulumi-lang-go=\"`it`\" pulumi-lang-python=\"`it`\" pulumi-lang-yaml=\"`it`\" pulumi-lang-java=\"`it`\"\u003e`it`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`ja`\" pulumi-lang-dotnet=\"`Ja`\" pulumi-lang-go=\"`ja`\" pulumi-lang-python=\"`ja`\" pulumi-lang-yaml=\"`ja`\" pulumi-lang-java=\"`ja`\"\u003e`ja`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`lt`\" pulumi-lang-dotnet=\"`Lt`\" pulumi-lang-go=\"`lt`\" pulumi-lang-python=\"`lt`\" pulumi-lang-yaml=\"`lt`\" pulumi-lang-java=\"`lt`\"\u003e`lt`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`mk`\" pulumi-lang-dotnet=\"`Mk`\" pulumi-lang-go=\"`mk`\" pulumi-lang-python=\"`mk`\" pulumi-lang-yaml=\"`mk`\" pulumi-lang-java=\"`mk`\"\u003e`mk`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`nl`\" pulumi-lang-dotnet=\"`Nl`\" pulumi-lang-go=\"`nl`\" pulumi-lang-python=\"`nl`\" pulumi-lang-yaml=\"`nl`\" pulumi-lang-java=\"`nl`\"\u003e`nl`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`no`\" pulumi-lang-dotnet=\"`No`\" pulumi-lang-go=\"`no`\" pulumi-lang-python=\"`no`\" pulumi-lang-yaml=\"`no`\" pulumi-lang-java=\"`no`\"\u003e`no`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`pl`\" pulumi-lang-dotnet=\"`Pl`\" pulumi-lang-go=\"`pl`\" pulumi-lang-python=\"`pl`\" pulumi-lang-yaml=\"`pl`\" pulumi-lang-java=\"`pl`\"\u003e`pl`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`pt`\" pulumi-lang-dotnet=\"`Pt`\" pulumi-lang-go=\"`pt`\" pulumi-lang-python=\"`pt`\" pulumi-lang-yaml=\"`pt`\" pulumi-lang-java=\"`pt`\"\u003e`pt`\u003c/span\u003e | `pt-br` | \u003cspan pulumi-lang-nodejs=\"`sv`\" pulumi-lang-dotnet=\"`Sv`\" pulumi-lang-go=\"`sv`\" pulumi-lang-python=\"`sv`\" pulumi-lang-yaml=\"`sv`\" pulumi-lang-java=\"`sv`\"\u003e`sv`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`sl`\" pulumi-lang-dotnet=\"`Sl`\" pulumi-lang-go=\"`sl`\" pulumi-lang-python=\"`sl`\" pulumi-lang-yaml=\"`sl`\" pulumi-lang-java=\"`sl`\"\u003e`sl`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`tr`\" pulumi-lang-dotnet=\"`Tr`\" pulumi-lang-go=\"`tr`\" pulumi-lang-python=\"`tr`\" pulumi-lang-yaml=\"`tr`\" pulumi-lang-java=\"`tr`\"\u003e`tr`\u003c/span\u003e.\n"},"language":{"type":"string","description":"Default GUI language. Must be \u003cspan pulumi-lang-nodejs=\"`ca`\" pulumi-lang-dotnet=\"`Ca`\" pulumi-lang-go=\"`ca`\" pulumi-lang-python=\"`ca`\" pulumi-lang-yaml=\"`ca`\" pulumi-lang-java=\"`ca`\"\u003e`ca`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`da`\" pulumi-lang-dotnet=\"`Da`\" pulumi-lang-go=\"`da`\" pulumi-lang-python=\"`da`\" pulumi-lang-yaml=\"`da`\" pulumi-lang-java=\"`da`\"\u003e`da`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`de`\" pulumi-lang-dotnet=\"`De`\" pulumi-lang-go=\"`de`\" pulumi-lang-python=\"`de`\" pulumi-lang-yaml=\"`de`\" pulumi-lang-java=\"`de`\"\u003e`de`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`en`\" pulumi-lang-dotnet=\"`En`\" pulumi-lang-go=\"`en`\" pulumi-lang-python=\"`en`\" pulumi-lang-yaml=\"`en`\" pulumi-lang-java=\"`en`\"\u003e`en`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`es`\" pulumi-lang-dotnet=\"`Es`\" pulumi-lang-go=\"`es`\" pulumi-lang-python=\"`es`\" pulumi-lang-yaml=\"`es`\" pulumi-lang-java=\"`es`\"\u003e`es`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`eu`\" pulumi-lang-dotnet=\"`Eu`\" pulumi-lang-go=\"`eu`\" pulumi-lang-python=\"`eu`\" pulumi-lang-yaml=\"`eu`\" pulumi-lang-java=\"`eu`\"\u003e`eu`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`fa`\" pulumi-lang-dotnet=\"`Fa`\" pulumi-lang-go=\"`fa`\" pulumi-lang-python=\"`fa`\" pulumi-lang-yaml=\"`fa`\" pulumi-lang-java=\"`fa`\"\u003e`fa`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`fr`\" pulumi-lang-dotnet=\"`Fr`\" pulumi-lang-go=\"`fr`\" pulumi-lang-python=\"`fr`\" pulumi-lang-yaml=\"`fr`\" pulumi-lang-java=\"`fr`\"\u003e`fr`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`he`\" pulumi-lang-dotnet=\"`He`\" pulumi-lang-go=\"`he`\" pulumi-lang-python=\"`he`\" pulumi-lang-yaml=\"`he`\" pulumi-lang-java=\"`he`\"\u003e`he`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`it`\" pulumi-lang-dotnet=\"`It`\" pulumi-lang-go=\"`it`\" pulumi-lang-python=\"`it`\" pulumi-lang-yaml=\"`it`\" pulumi-lang-java=\"`it`\"\u003e`it`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`ja`\" pulumi-lang-dotnet=\"`Ja`\" pulumi-lang-go=\"`ja`\" pulumi-lang-python=\"`ja`\" pulumi-lang-yaml=\"`ja`\" pulumi-lang-java=\"`ja`\"\u003e`ja`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`nb`\" pulumi-lang-dotnet=\"`Nb`\" pulumi-lang-go=\"`nb`\" pulumi-lang-python=\"`nb`\" pulumi-lang-yaml=\"`nb`\" pulumi-lang-java=\"`nb`\"\u003e`nb`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`nn`\" pulumi-lang-dotnet=\"`Nn`\" pulumi-lang-go=\"`nn`\" pulumi-lang-python=\"`nn`\" pulumi-lang-yaml=\"`nn`\" pulumi-lang-java=\"`nn`\"\u003e`nn`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`pl`\" pulumi-lang-dotnet=\"`Pl`\" pulumi-lang-go=\"`pl`\" pulumi-lang-python=\"`pl`\" pulumi-lang-yaml=\"`pl`\" pulumi-lang-java=\"`pl`\"\u003e`pl`\u003c/span\u003e | `pt_BR` | \u003cspan pulumi-lang-nodejs=\"`ru`\" pulumi-lang-dotnet=\"`Ru`\" pulumi-lang-go=\"`ru`\" pulumi-lang-python=\"`ru`\" pulumi-lang-yaml=\"`ru`\" pulumi-lang-java=\"`ru`\"\u003e`ru`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`sl`\" pulumi-lang-dotnet=\"`Sl`\" pulumi-lang-go=\"`sl`\" pulumi-lang-python=\"`sl`\" pulumi-lang-yaml=\"`sl`\" pulumi-lang-java=\"`sl`\"\u003e`sl`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`sv`\" pulumi-lang-dotnet=\"`Sv`\" pulumi-lang-go=\"`sv`\" pulumi-lang-python=\"`sv`\" pulumi-lang-yaml=\"`sv`\" pulumi-lang-java=\"`sv`\"\u003e`sv`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`tr`\" pulumi-lang-dotnet=\"`Tr`\" pulumi-lang-go=\"`tr`\" pulumi-lang-python=\"`tr`\" pulumi-lang-yaml=\"`tr`\" pulumi-lang-java=\"`tr`\"\u003e`tr`\u003c/span\u003e | `zh_CN` | `zh_TW`.\n"},"macPrefix":{"type":"string","description":"Prefix for autogenerated MAC addresses.\n"},"maxWorkers":{"type":"integer","description":"Defines how many workers (per node) are maximal started on actions like 'stopall VMs' or task from the ha-manager.\n"},"migrationCidr":{"type":"string","description":"Cluster wide migration network CIDR.\n"},"migrationType":{"type":"string","description":"Cluster wide migration type. Must be \u003cspan pulumi-lang-nodejs=\"`secure`\" pulumi-lang-dotnet=\"`Secure`\" pulumi-lang-go=\"`secure`\" pulumi-lang-python=\"`secure`\" pulumi-lang-yaml=\"`secure`\" pulumi-lang-java=\"`secure`\"\u003e`secure`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`insecure`\" pulumi-lang-dotnet=\"`Insecure`\" pulumi-lang-go=\"`insecure`\" pulumi-lang-python=\"`insecure`\" pulumi-lang-yaml=\"`insecure`\" pulumi-lang-java=\"`insecure`\"\u003e`insecure`\u003c/span\u003e (default is \u003cspan pulumi-lang-nodejs=\"`secure`\" pulumi-lang-dotnet=\"`Secure`\" pulumi-lang-go=\"`secure`\" pulumi-lang-python=\"`secure`\" pulumi-lang-yaml=\"`secure`\" pulumi-lang-java=\"`secure`\"\u003e`secure`\u003c/span\u003e).\n"},"nextId":{"$ref":"#/types/proxmoxve:Cluster/OptionsNextId:OptionsNextId","description":"The ranges for the next free VM ID auto-selection pool.\n"},"notify":{"$ref":"#/types/proxmoxve:Cluster/OptionsNotify:OptionsNotify","description":"Cluster-wide notification settings.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering Options resources.\n","properties":{"bandwidthLimitClone":{"type":"integer","description":"Clone I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitDefault":{"type":"integer","description":"Default I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitMigration":{"type":"integer","description":"Migration I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitMove":{"type":"integer","description":"Move I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitRestore":{"type":"integer","description":"Restore I/O bandwidth limit in KiB/s.\n"},"console":{"type":"string","description":"Select the default Console viewer. Must be \u003cspan pulumi-lang-nodejs=\"`applet`\" pulumi-lang-dotnet=\"`Applet`\" pulumi-lang-go=\"`applet`\" pulumi-lang-python=\"`applet`\" pulumi-lang-yaml=\"`applet`\" pulumi-lang-java=\"`applet`\"\u003e`applet`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`vv`\" pulumi-lang-dotnet=\"`Vv`\" pulumi-lang-go=\"`vv`\" pulumi-lang-python=\"`vv`\" pulumi-lang-yaml=\"`vv`\" pulumi-lang-java=\"`vv`\"\u003e`vv`\u003c/span\u003e| \u003cspan pulumi-lang-nodejs=\"`html5`\" pulumi-lang-dotnet=\"`Html5`\" pulumi-lang-go=\"`html5`\" pulumi-lang-python=\"`html5`\" pulumi-lang-yaml=\"`html5`\" pulumi-lang-java=\"`html5`\"\u003e`html5`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`xtermjs`\" pulumi-lang-dotnet=\"`Xtermjs`\" pulumi-lang-go=\"`xtermjs`\" pulumi-lang-python=\"`xtermjs`\" pulumi-lang-yaml=\"`xtermjs`\" pulumi-lang-java=\"`xtermjs`\"\u003e`xtermjs`\u003c/span\u003e. You can either use the builtin java applet (VNC; deprecated and maps to html5), an external virt-viewer compatible application (SPICE), an HTML5 based vnc viewer (noVNC), or an HTML5 based console client (xtermjs). If the selected viewer is not available (e.g. SPICE not activated for the VM), the fallback is noVNC.\n"},"crsHa":{"type":"string","description":"Cluster resource scheduling setting for HA. Must be \u003cspan pulumi-lang-nodejs=\"`static`\" pulumi-lang-dotnet=\"`Static`\" pulumi-lang-go=\"`static`\" pulumi-lang-python=\"`static`\" pulumi-lang-yaml=\"`static`\" pulumi-lang-java=\"`static`\"\u003e`static`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`basic`\" pulumi-lang-dotnet=\"`Basic`\" pulumi-lang-go=\"`basic`\" pulumi-lang-python=\"`basic`\" pulumi-lang-yaml=\"`basic`\" pulumi-lang-java=\"`basic`\"\u003e`basic`\u003c/span\u003e (default is \u003cspan pulumi-lang-nodejs=\"`basic`\" pulumi-lang-dotnet=\"`Basic`\" pulumi-lang-go=\"`basic`\" pulumi-lang-python=\"`basic`\" pulumi-lang-yaml=\"`basic`\" pulumi-lang-java=\"`basic`\"\u003e`basic`\u003c/span\u003e).\n"},"crsHaRebalanceOnStart":{"type":"boolean","description":"Cluster resource scheduling setting for HA rebalance on start.\n"},"description":{"type":"string","description":"Datacenter description. Shown in the web-interface datacenter notes panel. This is saved as comment inside the configuration file.\n"},"emailFrom":{"type":"string","description":"email address to send notification from (default is root@$hostname).\n"},"haShutdownPolicy":{"type":"string","description":"Cluster wide HA shutdown policy (). Must be \u003cspan pulumi-lang-nodejs=\"`freeze`\" pulumi-lang-dotnet=\"`Freeze`\" pulumi-lang-go=\"`freeze`\" pulumi-lang-python=\"`freeze`\" pulumi-lang-yaml=\"`freeze`\" pulumi-lang-java=\"`freeze`\"\u003e`freeze`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`failover`\" pulumi-lang-dotnet=\"`Failover`\" pulumi-lang-go=\"`failover`\" pulumi-lang-python=\"`failover`\" pulumi-lang-yaml=\"`failover`\" pulumi-lang-java=\"`failover`\"\u003e`failover`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`migrate`\" pulumi-lang-dotnet=\"`Migrate`\" pulumi-lang-go=\"`migrate`\" pulumi-lang-python=\"`migrate`\" pulumi-lang-yaml=\"`migrate`\" pulumi-lang-java=\"`migrate`\"\u003e`migrate`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`conditional`\" pulumi-lang-dotnet=\"`Conditional`\" pulumi-lang-go=\"`conditional`\" pulumi-lang-python=\"`conditional`\" pulumi-lang-yaml=\"`conditional`\" pulumi-lang-java=\"`conditional`\"\u003e`conditional`\u003c/span\u003e (default is \u003cspan pulumi-lang-nodejs=\"`conditional`\" pulumi-lang-dotnet=\"`Conditional`\" pulumi-lang-go=\"`conditional`\" pulumi-lang-python=\"`conditional`\" pulumi-lang-yaml=\"`conditional`\" pulumi-lang-java=\"`conditional`\"\u003e`conditional`\u003c/span\u003e).\n"},"httpProxy":{"type":"string","description":"Specify external http proxy which is used for downloads (example: `http://username:password@host:port/`).\n"},"keyboard":{"type":"string","description":"Default keyboard layout for vnc server. Must be \u003cspan pulumi-lang-nodejs=\"`de`\" pulumi-lang-dotnet=\"`De`\" pulumi-lang-go=\"`de`\" pulumi-lang-python=\"`de`\" pulumi-lang-yaml=\"`de`\" pulumi-lang-java=\"`de`\"\u003e`de`\u003c/span\u003e | `de-ch` | \u003cspan pulumi-lang-nodejs=\"`da`\" pulumi-lang-dotnet=\"`Da`\" pulumi-lang-go=\"`da`\" pulumi-lang-python=\"`da`\" pulumi-lang-yaml=\"`da`\" pulumi-lang-java=\"`da`\"\u003e`da`\u003c/span\u003e | `en-gb` | `en-us` | \u003cspan pulumi-lang-nodejs=\"`es`\" pulumi-lang-dotnet=\"`Es`\" pulumi-lang-go=\"`es`\" pulumi-lang-python=\"`es`\" pulumi-lang-yaml=\"`es`\" pulumi-lang-java=\"`es`\"\u003e`es`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`fi`\" pulumi-lang-dotnet=\"`Fi`\" pulumi-lang-go=\"`fi`\" pulumi-lang-python=\"`fi`\" pulumi-lang-yaml=\"`fi`\" pulumi-lang-java=\"`fi`\"\u003e`fi`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`fr`\" pulumi-lang-dotnet=\"`Fr`\" pulumi-lang-go=\"`fr`\" pulumi-lang-python=\"`fr`\" pulumi-lang-yaml=\"`fr`\" pulumi-lang-java=\"`fr`\"\u003e`fr`\u003c/span\u003e | `fr-be` | `fr-ca` | `fr-ch` | \u003cspan pulumi-lang-nodejs=\"`hu`\" pulumi-lang-dotnet=\"`Hu`\" pulumi-lang-go=\"`hu`\" pulumi-lang-python=\"`hu`\" pulumi-lang-yaml=\"`hu`\" pulumi-lang-java=\"`hu`\"\u003e`hu`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`is`\" pulumi-lang-dotnet=\"`Is`\" pulumi-lang-go=\"`is`\" pulumi-lang-python=\"`is`\" pulumi-lang-yaml=\"`is`\" pulumi-lang-java=\"`is`\"\u003e`is`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`it`\" pulumi-lang-dotnet=\"`It`\" pulumi-lang-go=\"`it`\" pulumi-lang-python=\"`it`\" pulumi-lang-yaml=\"`it`\" pulumi-lang-java=\"`it`\"\u003e`it`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`ja`\" pulumi-lang-dotnet=\"`Ja`\" pulumi-lang-go=\"`ja`\" pulumi-lang-python=\"`ja`\" pulumi-lang-yaml=\"`ja`\" pulumi-lang-java=\"`ja`\"\u003e`ja`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`lt`\" pulumi-lang-dotnet=\"`Lt`\" pulumi-lang-go=\"`lt`\" pulumi-lang-python=\"`lt`\" pulumi-lang-yaml=\"`lt`\" pulumi-lang-java=\"`lt`\"\u003e`lt`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`mk`\" pulumi-lang-dotnet=\"`Mk`\" pulumi-lang-go=\"`mk`\" pulumi-lang-python=\"`mk`\" pulumi-lang-yaml=\"`mk`\" pulumi-lang-java=\"`mk`\"\u003e`mk`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`nl`\" pulumi-lang-dotnet=\"`Nl`\" pulumi-lang-go=\"`nl`\" pulumi-lang-python=\"`nl`\" pulumi-lang-yaml=\"`nl`\" pulumi-lang-java=\"`nl`\"\u003e`nl`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`no`\" pulumi-lang-dotnet=\"`No`\" pulumi-lang-go=\"`no`\" pulumi-lang-python=\"`no`\" pulumi-lang-yaml=\"`no`\" pulumi-lang-java=\"`no`\"\u003e`no`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`pl`\" pulumi-lang-dotnet=\"`Pl`\" pulumi-lang-go=\"`pl`\" pulumi-lang-python=\"`pl`\" pulumi-lang-yaml=\"`pl`\" pulumi-lang-java=\"`pl`\"\u003e`pl`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`pt`\" pulumi-lang-dotnet=\"`Pt`\" pulumi-lang-go=\"`pt`\" pulumi-lang-python=\"`pt`\" pulumi-lang-yaml=\"`pt`\" pulumi-lang-java=\"`pt`\"\u003e`pt`\u003c/span\u003e | `pt-br` | \u003cspan pulumi-lang-nodejs=\"`sv`\" pulumi-lang-dotnet=\"`Sv`\" pulumi-lang-go=\"`sv`\" pulumi-lang-python=\"`sv`\" pulumi-lang-yaml=\"`sv`\" pulumi-lang-java=\"`sv`\"\u003e`sv`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`sl`\" pulumi-lang-dotnet=\"`Sl`\" pulumi-lang-go=\"`sl`\" pulumi-lang-python=\"`sl`\" pulumi-lang-yaml=\"`sl`\" pulumi-lang-java=\"`sl`\"\u003e`sl`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`tr`\" pulumi-lang-dotnet=\"`Tr`\" pulumi-lang-go=\"`tr`\" pulumi-lang-python=\"`tr`\" pulumi-lang-yaml=\"`tr`\" pulumi-lang-java=\"`tr`\"\u003e`tr`\u003c/span\u003e.\n"},"language":{"type":"string","description":"Default GUI language. Must be \u003cspan pulumi-lang-nodejs=\"`ca`\" pulumi-lang-dotnet=\"`Ca`\" pulumi-lang-go=\"`ca`\" pulumi-lang-python=\"`ca`\" pulumi-lang-yaml=\"`ca`\" pulumi-lang-java=\"`ca`\"\u003e`ca`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`da`\" pulumi-lang-dotnet=\"`Da`\" pulumi-lang-go=\"`da`\" pulumi-lang-python=\"`da`\" pulumi-lang-yaml=\"`da`\" pulumi-lang-java=\"`da`\"\u003e`da`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`de`\" pulumi-lang-dotnet=\"`De`\" pulumi-lang-go=\"`de`\" pulumi-lang-python=\"`de`\" pulumi-lang-yaml=\"`de`\" pulumi-lang-java=\"`de`\"\u003e`de`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`en`\" pulumi-lang-dotnet=\"`En`\" pulumi-lang-go=\"`en`\" pulumi-lang-python=\"`en`\" pulumi-lang-yaml=\"`en`\" pulumi-lang-java=\"`en`\"\u003e`en`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`es`\" pulumi-lang-dotnet=\"`Es`\" pulumi-lang-go=\"`es`\" pulumi-lang-python=\"`es`\" pulumi-lang-yaml=\"`es`\" pulumi-lang-java=\"`es`\"\u003e`es`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`eu`\" pulumi-lang-dotnet=\"`Eu`\" pulumi-lang-go=\"`eu`\" pulumi-lang-python=\"`eu`\" pulumi-lang-yaml=\"`eu`\" pulumi-lang-java=\"`eu`\"\u003e`eu`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`fa`\" pulumi-lang-dotnet=\"`Fa`\" pulumi-lang-go=\"`fa`\" pulumi-lang-python=\"`fa`\" pulumi-lang-yaml=\"`fa`\" pulumi-lang-java=\"`fa`\"\u003e`fa`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`fr`\" pulumi-lang-dotnet=\"`Fr`\" pulumi-lang-go=\"`fr`\" pulumi-lang-python=\"`fr`\" pulumi-lang-yaml=\"`fr`\" pulumi-lang-java=\"`fr`\"\u003e`fr`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`he`\" pulumi-lang-dotnet=\"`He`\" pulumi-lang-go=\"`he`\" pulumi-lang-python=\"`he`\" pulumi-lang-yaml=\"`he`\" pulumi-lang-java=\"`he`\"\u003e`he`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`it`\" pulumi-lang-dotnet=\"`It`\" pulumi-lang-go=\"`it`\" pulumi-lang-python=\"`it`\" pulumi-lang-yaml=\"`it`\" pulumi-lang-java=\"`it`\"\u003e`it`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`ja`\" pulumi-lang-dotnet=\"`Ja`\" pulumi-lang-go=\"`ja`\" pulumi-lang-python=\"`ja`\" pulumi-lang-yaml=\"`ja`\" pulumi-lang-java=\"`ja`\"\u003e`ja`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`nb`\" pulumi-lang-dotnet=\"`Nb`\" pulumi-lang-go=\"`nb`\" pulumi-lang-python=\"`nb`\" pulumi-lang-yaml=\"`nb`\" pulumi-lang-java=\"`nb`\"\u003e`nb`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`nn`\" pulumi-lang-dotnet=\"`Nn`\" pulumi-lang-go=\"`nn`\" pulumi-lang-python=\"`nn`\" pulumi-lang-yaml=\"`nn`\" pulumi-lang-java=\"`nn`\"\u003e`nn`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`pl`\" pulumi-lang-dotnet=\"`Pl`\" pulumi-lang-go=\"`pl`\" pulumi-lang-python=\"`pl`\" pulumi-lang-yaml=\"`pl`\" pulumi-lang-java=\"`pl`\"\u003e`pl`\u003c/span\u003e | `pt_BR` | \u003cspan pulumi-lang-nodejs=\"`ru`\" pulumi-lang-dotnet=\"`Ru`\" pulumi-lang-go=\"`ru`\" pulumi-lang-python=\"`ru`\" pulumi-lang-yaml=\"`ru`\" pulumi-lang-java=\"`ru`\"\u003e`ru`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`sl`\" pulumi-lang-dotnet=\"`Sl`\" pulumi-lang-go=\"`sl`\" pulumi-lang-python=\"`sl`\" pulumi-lang-yaml=\"`sl`\" pulumi-lang-java=\"`sl`\"\u003e`sl`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`sv`\" pulumi-lang-dotnet=\"`Sv`\" pulumi-lang-go=\"`sv`\" pulumi-lang-python=\"`sv`\" pulumi-lang-yaml=\"`sv`\" pulumi-lang-java=\"`sv`\"\u003e`sv`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`tr`\" pulumi-lang-dotnet=\"`Tr`\" pulumi-lang-go=\"`tr`\" pulumi-lang-python=\"`tr`\" pulumi-lang-yaml=\"`tr`\" pulumi-lang-java=\"`tr`\"\u003e`tr`\u003c/span\u003e | `zh_CN` | `zh_TW`.\n"},"macPrefix":{"type":"string","description":"Prefix for autogenerated MAC addresses.\n"},"maxWorkers":{"type":"integer","description":"Defines how many workers (per node) are maximal started on actions like 'stopall VMs' or task from the ha-manager.\n"},"migrationCidr":{"type":"string","description":"Cluster wide migration network CIDR.\n"},"migrationType":{"type":"string","description":"Cluster wide migration type. Must be \u003cspan pulumi-lang-nodejs=\"`secure`\" pulumi-lang-dotnet=\"`Secure`\" pulumi-lang-go=\"`secure`\" pulumi-lang-python=\"`secure`\" pulumi-lang-yaml=\"`secure`\" pulumi-lang-java=\"`secure`\"\u003e`secure`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`insecure`\" pulumi-lang-dotnet=\"`Insecure`\" pulumi-lang-go=\"`insecure`\" pulumi-lang-python=\"`insecure`\" pulumi-lang-yaml=\"`insecure`\" pulumi-lang-java=\"`insecure`\"\u003e`insecure`\u003c/span\u003e (default is \u003cspan pulumi-lang-nodejs=\"`secure`\" pulumi-lang-dotnet=\"`Secure`\" pulumi-lang-go=\"`secure`\" pulumi-lang-python=\"`secure`\" pulumi-lang-yaml=\"`secure`\" pulumi-lang-java=\"`secure`\"\u003e`secure`\u003c/span\u003e).\n"},"nextId":{"$ref":"#/types/proxmoxve:Cluster/OptionsNextId:OptionsNextId","description":"The ranges for the next free VM ID auto-selection pool.\n"},"notify":{"$ref":"#/types/proxmoxve:Cluster/OptionsNotify:OptionsNotify","description":"Cluster-wide notification settings.\n"}},"type":"object"}},"proxmoxve:Download/file:File":{"description":"Manages files upload using PVE download-url API. It can be fully compatible and faster replacement for image files created using \u003cspan pulumi-lang-nodejs=\"`proxmoxve.Storage.File`\" pulumi-lang-dotnet=\"`proxmoxve.Storage.File`\" pulumi-lang-go=\"`Storage.File`\" pulumi-lang-python=\"`Storage.File`\" pulumi-lang-yaml=\"`proxmoxve.Storage.File`\" pulumi-lang-java=\"`proxmoxve.Storage.File`\"\u003e`proxmoxve.Storage.File`\u003c/span\u003e. Supports images for VMs (ISO and disk images) and LXC (CT Templates).\n\n\u003e Besides the `Datastore.AllocateTemplate` privilege, this resource requires both the `Sys.Audit` and `Sys.Modify` privileges.\u003cbr\u003e\u003cbr\u003e\nFor more details, see the [`download-url`](https://pve.proxmox.com/pve-docs/api-viewer/index.html#/nodes/{node}/storage/{storage}/download-url) API documentation under the \"Required permissions\" section.\n\n\u003e The \u003cspan pulumi-lang-nodejs=\"`import`\" pulumi-lang-dotnet=\"`Import`\" pulumi-lang-go=\"`import`\" pulumi-lang-python=\"`import`\" pulumi-lang-yaml=\"`import`\" pulumi-lang-java=\"`import`\"\u003e`import`\u003c/span\u003e content type is not enabled by default on Proxmox VE storages. To use this resource with \u003cspan pulumi-lang-nodejs=\"`contentType \" pulumi-lang-dotnet=\"`ContentType \" pulumi-lang-go=\"`contentType \" pulumi-lang-python=\"`content_type \" pulumi-lang-yaml=\"`contentType \" pulumi-lang-java=\"`contentType \"\u003e`content_type \u003c/span\u003e= \"import\"`, first add `Import` to the allowed content types on the target storage under 'Datacenter \u003e Storage' in the Proxmox web interface.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst release20231228Debian12BookwormQcow2Img = new proxmoxve.download.File(\"release_20231228_debian_12_bookworm_qcow2_img\", {\n    contentType: \"iso\",\n    datastoreId: \"local\",\n    fileName: \"debian-12-generic-amd64-20231228-1609.img\",\n    nodeName: \"pve\",\n    url: \"https://cloud.debian.org/images/cloud/bookworm/20231228-1609/debian-12-generic-amd64-20231228-1609.qcow2\",\n    checksum: \"d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\",\n    checksumAlgorithm: \"sha512\",\n});\nconst release20231228Debian12BookwormQcow2 = new proxmoxve.download.File(\"release_20231228_debian_12_bookworm_qcow2\", {\n    contentType: \"import\",\n    datastoreId: \"local\",\n    fileName: \"debian-12-generic-amd64-20231228-1609.qcow2\",\n    nodeName: \"pve\",\n    url: \"https://cloud.debian.org/images/cloud/bookworm/20231228-1609/debian-12-generic-amd64-20231228-1609.qcow2\",\n    checksum: \"d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\",\n    checksumAlgorithm: \"sha512\",\n});\nconst latestDebian12BookwormQcow2Img = new proxmoxve.download.File(\"latest_debian_12_bookworm_qcow2_img\", {\n    contentType: \"iso\",\n    datastoreId: \"local\",\n    fileName: \"debian-12-generic-amd64.qcow2.img\",\n    nodeName: \"pve\",\n    url: \"https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2\",\n});\nconst latestDebian12BookwormQcow2 = new proxmoxve.download.File(\"latest_debian_12_bookworm_qcow2\", {\n    contentType: \"import\",\n    datastoreId: \"local\",\n    fileName: \"debian-12-generic-amd64.qcow2\",\n    nodeName: \"pve\",\n    url: \"https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2\",\n});\nconst latestUbuntu22JammyQcow2Img = new proxmoxve.download.File(\"latest_ubuntu_22_jammy_qcow2_img\", {\n    contentType: \"iso\",\n    datastoreId: \"local\",\n    nodeName: \"pve\",\n    url: \"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img\",\n});\nconst latestStaticUbuntu24NobleQcow2Img = new proxmoxve.download.File(\"latest_static_ubuntu_24_noble_qcow2_img\", {\n    contentType: \"iso\",\n    datastoreId: \"local\",\n    nodeName: \"pve\",\n    url: \"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\",\n    overwrite: false,\n});\nconst release20231211Ubuntu22JammyLxcImg = new proxmoxve.download.File(\"release_20231211_ubuntu_22_jammy_lxc_img\", {\n    contentType: \"vztmpl\",\n    datastoreId: \"local\",\n    nodeName: \"pve\",\n    url: \"https://cloud-images.ubuntu.com/releases/22.04/release-20231211/ubuntu-22.04-server-cloudimg-amd64-root.tar.xz\",\n    checksum: \"c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e\",\n    checksumAlgorithm: \"sha256\",\n    uploadTimeout: 4444,\n});\nconst latestUbuntu22JammyLxcImg = new proxmoxve.download.File(\"latest_ubuntu_22_jammy_lxc_img\", {\n    contentType: \"vztmpl\",\n    datastoreId: \"local\",\n    nodeName: \"pve\",\n    url: \"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.tar.gz\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nrelease20231228_debian12_bookworm_qcow2_img = proxmoxve.download.File(\"release_20231228_debian_12_bookworm_qcow2_img\",\n    content_type=\"iso\",\n    datastore_id=\"local\",\n    file_name=\"debian-12-generic-amd64-20231228-1609.img\",\n    node_name=\"pve\",\n    url=\"https://cloud.debian.org/images/cloud/bookworm/20231228-1609/debian-12-generic-amd64-20231228-1609.qcow2\",\n    checksum=\"d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\",\n    checksum_algorithm=\"sha512\")\nrelease20231228_debian12_bookworm_qcow2 = proxmoxve.download.File(\"release_20231228_debian_12_bookworm_qcow2\",\n    content_type=\"import\",\n    datastore_id=\"local\",\n    file_name=\"debian-12-generic-amd64-20231228-1609.qcow2\",\n    node_name=\"pve\",\n    url=\"https://cloud.debian.org/images/cloud/bookworm/20231228-1609/debian-12-generic-amd64-20231228-1609.qcow2\",\n    checksum=\"d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\",\n    checksum_algorithm=\"sha512\")\nlatest_debian12_bookworm_qcow2_img = proxmoxve.download.File(\"latest_debian_12_bookworm_qcow2_img\",\n    content_type=\"iso\",\n    datastore_id=\"local\",\n    file_name=\"debian-12-generic-amd64.qcow2.img\",\n    node_name=\"pve\",\n    url=\"https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2\")\nlatest_debian12_bookworm_qcow2 = proxmoxve.download.File(\"latest_debian_12_bookworm_qcow2\",\n    content_type=\"import\",\n    datastore_id=\"local\",\n    file_name=\"debian-12-generic-amd64.qcow2\",\n    node_name=\"pve\",\n    url=\"https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2\")\nlatest_ubuntu22_jammy_qcow2_img = proxmoxve.download.File(\"latest_ubuntu_22_jammy_qcow2_img\",\n    content_type=\"iso\",\n    datastore_id=\"local\",\n    node_name=\"pve\",\n    url=\"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img\")\nlatest_static_ubuntu24_noble_qcow2_img = proxmoxve.download.File(\"latest_static_ubuntu_24_noble_qcow2_img\",\n    content_type=\"iso\",\n    datastore_id=\"local\",\n    node_name=\"pve\",\n    url=\"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\",\n    overwrite=False)\nrelease20231211_ubuntu22_jammy_lxc_img = proxmoxve.download.File(\"release_20231211_ubuntu_22_jammy_lxc_img\",\n    content_type=\"vztmpl\",\n    datastore_id=\"local\",\n    node_name=\"pve\",\n    url=\"https://cloud-images.ubuntu.com/releases/22.04/release-20231211/ubuntu-22.04-server-cloudimg-amd64-root.tar.xz\",\n    checksum=\"c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e\",\n    checksum_algorithm=\"sha256\",\n    upload_timeout=4444)\nlatest_ubuntu22_jammy_lxc_img = proxmoxve.download.File(\"latest_ubuntu_22_jammy_lxc_img\",\n    content_type=\"vztmpl\",\n    datastore_id=\"local\",\n    node_name=\"pve\",\n    url=\"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.tar.gz\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var release20231228Debian12BookwormQcow2Img = new ProxmoxVE.Download.File(\"release_20231228_debian_12_bookworm_qcow2_img\", new()\n    {\n        ContentType = \"iso\",\n        DatastoreId = \"local\",\n        FileName = \"debian-12-generic-amd64-20231228-1609.img\",\n        NodeName = \"pve\",\n        Url = \"https://cloud.debian.org/images/cloud/bookworm/20231228-1609/debian-12-generic-amd64-20231228-1609.qcow2\",\n        Checksum = \"d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\",\n        ChecksumAlgorithm = \"sha512\",\n    });\n\n    var release20231228Debian12BookwormQcow2 = new ProxmoxVE.Download.File(\"release_20231228_debian_12_bookworm_qcow2\", new()\n    {\n        ContentType = \"import\",\n        DatastoreId = \"local\",\n        FileName = \"debian-12-generic-amd64-20231228-1609.qcow2\",\n        NodeName = \"pve\",\n        Url = \"https://cloud.debian.org/images/cloud/bookworm/20231228-1609/debian-12-generic-amd64-20231228-1609.qcow2\",\n        Checksum = \"d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\",\n        ChecksumAlgorithm = \"sha512\",\n    });\n\n    var latestDebian12BookwormQcow2Img = new ProxmoxVE.Download.File(\"latest_debian_12_bookworm_qcow2_img\", new()\n    {\n        ContentType = \"iso\",\n        DatastoreId = \"local\",\n        FileName = \"debian-12-generic-amd64.qcow2.img\",\n        NodeName = \"pve\",\n        Url = \"https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2\",\n    });\n\n    var latestDebian12BookwormQcow2 = new ProxmoxVE.Download.File(\"latest_debian_12_bookworm_qcow2\", new()\n    {\n        ContentType = \"import\",\n        DatastoreId = \"local\",\n        FileName = \"debian-12-generic-amd64.qcow2\",\n        NodeName = \"pve\",\n        Url = \"https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2\",\n    });\n\n    var latestUbuntu22JammyQcow2Img = new ProxmoxVE.Download.File(\"latest_ubuntu_22_jammy_qcow2_img\", new()\n    {\n        ContentType = \"iso\",\n        DatastoreId = \"local\",\n        NodeName = \"pve\",\n        Url = \"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img\",\n    });\n\n    var latestStaticUbuntu24NobleQcow2Img = new ProxmoxVE.Download.File(\"latest_static_ubuntu_24_noble_qcow2_img\", new()\n    {\n        ContentType = \"iso\",\n        DatastoreId = \"local\",\n        NodeName = \"pve\",\n        Url = \"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\",\n        Overwrite = false,\n    });\n\n    var release20231211Ubuntu22JammyLxcImg = new ProxmoxVE.Download.File(\"release_20231211_ubuntu_22_jammy_lxc_img\", new()\n    {\n        ContentType = \"vztmpl\",\n        DatastoreId = \"local\",\n        NodeName = \"pve\",\n        Url = \"https://cloud-images.ubuntu.com/releases/22.04/release-20231211/ubuntu-22.04-server-cloudimg-amd64-root.tar.xz\",\n        Checksum = \"c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e\",\n        ChecksumAlgorithm = \"sha256\",\n        UploadTimeout = 4444,\n    });\n\n    var latestUbuntu22JammyLxcImg = new ProxmoxVE.Download.File(\"latest_ubuntu_22_jammy_lxc_img\", new()\n    {\n        ContentType = \"vztmpl\",\n        DatastoreId = \"local\",\n        NodeName = \"pve\",\n        Url = \"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.tar.gz\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/download\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := download.NewFile(ctx, \"release_20231228_debian_12_bookworm_qcow2_img\", \u0026download.FileArgs{\n\t\t\tContentType:       pulumi.String(\"iso\"),\n\t\t\tDatastoreId:       pulumi.String(\"local\"),\n\t\t\tFileName:          pulumi.String(\"debian-12-generic-amd64-20231228-1609.img\"),\n\t\t\tNodeName:          pulumi.String(\"pve\"),\n\t\t\tUrl:               pulumi.String(\"https://cloud.debian.org/images/cloud/bookworm/20231228-1609/debian-12-generic-amd64-20231228-1609.qcow2\"),\n\t\t\tChecksum:          pulumi.String(\"d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\"),\n\t\t\tChecksumAlgorithm: pulumi.String(\"sha512\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = download.NewFile(ctx, \"release_20231228_debian_12_bookworm_qcow2\", \u0026download.FileArgs{\n\t\t\tContentType:       pulumi.String(\"import\"),\n\t\t\tDatastoreId:       pulumi.String(\"local\"),\n\t\t\tFileName:          pulumi.String(\"debian-12-generic-amd64-20231228-1609.qcow2\"),\n\t\t\tNodeName:          pulumi.String(\"pve\"),\n\t\t\tUrl:               pulumi.String(\"https://cloud.debian.org/images/cloud/bookworm/20231228-1609/debian-12-generic-amd64-20231228-1609.qcow2\"),\n\t\t\tChecksum:          pulumi.String(\"d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\"),\n\t\t\tChecksumAlgorithm: pulumi.String(\"sha512\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = download.NewFile(ctx, \"latest_debian_12_bookworm_qcow2_img\", \u0026download.FileArgs{\n\t\t\tContentType: pulumi.String(\"iso\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tFileName:    pulumi.String(\"debian-12-generic-amd64.qcow2.img\"),\n\t\t\tNodeName:    pulumi.String(\"pve\"),\n\t\t\tUrl:         pulumi.String(\"https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = download.NewFile(ctx, \"latest_debian_12_bookworm_qcow2\", \u0026download.FileArgs{\n\t\t\tContentType: pulumi.String(\"import\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tFileName:    pulumi.String(\"debian-12-generic-amd64.qcow2\"),\n\t\t\tNodeName:    pulumi.String(\"pve\"),\n\t\t\tUrl:         pulumi.String(\"https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = download.NewFile(ctx, \"latest_ubuntu_22_jammy_qcow2_img\", \u0026download.FileArgs{\n\t\t\tContentType: pulumi.String(\"iso\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName:    pulumi.String(\"pve\"),\n\t\t\tUrl:         pulumi.String(\"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = download.NewFile(ctx, \"latest_static_ubuntu_24_noble_qcow2_img\", \u0026download.FileArgs{\n\t\t\tContentType: pulumi.String(\"iso\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName:    pulumi.String(\"pve\"),\n\t\t\tUrl:         pulumi.String(\"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\"),\n\t\t\tOverwrite:   pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = download.NewFile(ctx, \"release_20231211_ubuntu_22_jammy_lxc_img\", \u0026download.FileArgs{\n\t\t\tContentType:       pulumi.String(\"vztmpl\"),\n\t\t\tDatastoreId:       pulumi.String(\"local\"),\n\t\t\tNodeName:          pulumi.String(\"pve\"),\n\t\t\tUrl:               pulumi.String(\"https://cloud-images.ubuntu.com/releases/22.04/release-20231211/ubuntu-22.04-server-cloudimg-amd64-root.tar.xz\"),\n\t\t\tChecksum:          pulumi.String(\"c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e\"),\n\t\t\tChecksumAlgorithm: pulumi.String(\"sha256\"),\n\t\t\tUploadTimeout:     pulumi.Int(4444),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = download.NewFile(ctx, \"latest_ubuntu_22_jammy_lxc_img\", \u0026download.FileArgs{\n\t\t\tContentType: pulumi.String(\"vztmpl\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName:    pulumi.String(\"pve\"),\n\t\t\tUrl:         pulumi.String(\"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.tar.gz\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Download.File;\nimport io.muehlbachler.pulumi.proxmoxve.Download.FileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var release20231228Debian12BookwormQcow2Img = new File(\"release20231228Debian12BookwormQcow2Img\", FileArgs.builder()\n            .contentType(\"iso\")\n            .datastoreId(\"local\")\n            .fileName(\"debian-12-generic-amd64-20231228-1609.img\")\n            .nodeName(\"pve\")\n            .url(\"https://cloud.debian.org/images/cloud/bookworm/20231228-1609/debian-12-generic-amd64-20231228-1609.qcow2\")\n            .checksum(\"d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\")\n            .checksumAlgorithm(\"sha512\")\n            .build());\n\n        var release20231228Debian12BookwormQcow2 = new File(\"release20231228Debian12BookwormQcow2\", FileArgs.builder()\n            .contentType(\"import\")\n            .datastoreId(\"local\")\n            .fileName(\"debian-12-generic-amd64-20231228-1609.qcow2\")\n            .nodeName(\"pve\")\n            .url(\"https://cloud.debian.org/images/cloud/bookworm/20231228-1609/debian-12-generic-amd64-20231228-1609.qcow2\")\n            .checksum(\"d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\")\n            .checksumAlgorithm(\"sha512\")\n            .build());\n\n        var latestDebian12BookwormQcow2Img = new File(\"latestDebian12BookwormQcow2Img\", FileArgs.builder()\n            .contentType(\"iso\")\n            .datastoreId(\"local\")\n            .fileName(\"debian-12-generic-amd64.qcow2.img\")\n            .nodeName(\"pve\")\n            .url(\"https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2\")\n            .build());\n\n        var latestDebian12BookwormQcow2 = new File(\"latestDebian12BookwormQcow2\", FileArgs.builder()\n            .contentType(\"import\")\n            .datastoreId(\"local\")\n            .fileName(\"debian-12-generic-amd64.qcow2\")\n            .nodeName(\"pve\")\n            .url(\"https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2\")\n            .build());\n\n        var latestUbuntu22JammyQcow2Img = new File(\"latestUbuntu22JammyQcow2Img\", FileArgs.builder()\n            .contentType(\"iso\")\n            .datastoreId(\"local\")\n            .nodeName(\"pve\")\n            .url(\"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img\")\n            .build());\n\n        var latestStaticUbuntu24NobleQcow2Img = new File(\"latestStaticUbuntu24NobleQcow2Img\", FileArgs.builder()\n            .contentType(\"iso\")\n            .datastoreId(\"local\")\n            .nodeName(\"pve\")\n            .url(\"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\")\n            .overwrite(false)\n            .build());\n\n        var release20231211Ubuntu22JammyLxcImg = new File(\"release20231211Ubuntu22JammyLxcImg\", FileArgs.builder()\n            .contentType(\"vztmpl\")\n            .datastoreId(\"local\")\n            .nodeName(\"pve\")\n            .url(\"https://cloud-images.ubuntu.com/releases/22.04/release-20231211/ubuntu-22.04-server-cloudimg-amd64-root.tar.xz\")\n            .checksum(\"c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e\")\n            .checksumAlgorithm(\"sha256\")\n            .uploadTimeout(4444)\n            .build());\n\n        var latestUbuntu22JammyLxcImg = new File(\"latestUbuntu22JammyLxcImg\", FileArgs.builder()\n            .contentType(\"vztmpl\")\n            .datastoreId(\"local\")\n            .nodeName(\"pve\")\n            .url(\"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.tar.gz\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  release20231228Debian12BookwormQcow2Img:\n    type: proxmoxve:Download:File\n    name: release_20231228_debian_12_bookworm_qcow2_img\n    properties:\n      contentType: iso\n      datastoreId: local\n      fileName: debian-12-generic-amd64-20231228-1609.img\n      nodeName: pve\n      url: https://cloud.debian.org/images/cloud/bookworm/20231228-1609/debian-12-generic-amd64-20231228-1609.qcow2\n      checksum: d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\n      checksumAlgorithm: sha512\n  release20231228Debian12BookwormQcow2:\n    type: proxmoxve:Download:File\n    name: release_20231228_debian_12_bookworm_qcow2\n    properties:\n      contentType: import\n      datastoreId: local\n      fileName: debian-12-generic-amd64-20231228-1609.qcow2\n      nodeName: pve\n      url: https://cloud.debian.org/images/cloud/bookworm/20231228-1609/debian-12-generic-amd64-20231228-1609.qcow2\n      checksum: d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\n      checksumAlgorithm: sha512\n  latestDebian12BookwormQcow2Img:\n    type: proxmoxve:Download:File\n    name: latest_debian_12_bookworm_qcow2_img\n    properties:\n      contentType: iso\n      datastoreId: local\n      fileName: debian-12-generic-amd64.qcow2.img\n      nodeName: pve\n      url: https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2\n  latestDebian12BookwormQcow2:\n    type: proxmoxve:Download:File\n    name: latest_debian_12_bookworm_qcow2\n    properties:\n      contentType: import\n      datastoreId: local\n      fileName: debian-12-generic-amd64.qcow2\n      nodeName: pve\n      url: https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2\n  latestUbuntu22JammyQcow2Img:\n    type: proxmoxve:Download:File\n    name: latest_ubuntu_22_jammy_qcow2_img\n    properties:\n      contentType: iso\n      datastoreId: local\n      nodeName: pve\n      url: https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img\n  latestStaticUbuntu24NobleQcow2Img:\n    type: proxmoxve:Download:File\n    name: latest_static_ubuntu_24_noble_qcow2_img\n    properties:\n      contentType: iso\n      datastoreId: local\n      nodeName: pve\n      url: https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\n      overwrite: false\n  release20231211Ubuntu22JammyLxcImg:\n    type: proxmoxve:Download:File\n    name: release_20231211_ubuntu_22_jammy_lxc_img\n    properties:\n      contentType: vztmpl\n      datastoreId: local\n      nodeName: pve\n      url: https://cloud-images.ubuntu.com/releases/22.04/release-20231211/ubuntu-22.04-server-cloudimg-amd64-root.tar.xz\n      checksum: c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e\n      checksumAlgorithm: sha256\n      uploadTimeout: 4444\n  latestUbuntu22JammyLxcImg:\n    type: proxmoxve:Download:File\n    name: latest_ubuntu_22_jammy_lxc_img\n    properties:\n      contentType: vztmpl\n      datastoreId: local\n      nodeName: pve\n      url: https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.tar.gz\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"checksum":{"type":"string","description":"The expected checksum of the file.\n"},"checksumAlgorithm":{"type":"string","description":"The algorithm to calculate the checksum of the file. Must be \u003cspan pulumi-lang-nodejs=\"`md5`\" pulumi-lang-dotnet=\"`Md5`\" pulumi-lang-go=\"`md5`\" pulumi-lang-python=\"`md5`\" pulumi-lang-yaml=\"`md5`\" pulumi-lang-java=\"`md5`\"\u003e`md5`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`sha1`\" pulumi-lang-dotnet=\"`Sha1`\" pulumi-lang-go=\"`sha1`\" pulumi-lang-python=\"`sha1`\" pulumi-lang-yaml=\"`sha1`\" pulumi-lang-java=\"`sha1`\"\u003e`sha1`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`sha224`\" pulumi-lang-dotnet=\"`Sha224`\" pulumi-lang-go=\"`sha224`\" pulumi-lang-python=\"`sha224`\" pulumi-lang-yaml=\"`sha224`\" pulumi-lang-java=\"`sha224`\"\u003e`sha224`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`sha256`\" pulumi-lang-dotnet=\"`Sha256`\" pulumi-lang-go=\"`sha256`\" pulumi-lang-python=\"`sha256`\" pulumi-lang-yaml=\"`sha256`\" pulumi-lang-java=\"`sha256`\"\u003e`sha256`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`sha384`\" pulumi-lang-dotnet=\"`Sha384`\" pulumi-lang-go=\"`sha384`\" pulumi-lang-python=\"`sha384`\" pulumi-lang-yaml=\"`sha384`\" pulumi-lang-java=\"`sha384`\"\u003e`sha384`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`sha512`\" pulumi-lang-dotnet=\"`Sha512`\" pulumi-lang-go=\"`sha512`\" pulumi-lang-python=\"`sha512`\" pulumi-lang-yaml=\"`sha512`\" pulumi-lang-java=\"`sha512`\"\u003e`sha512`\u003c/span\u003e.\n"},"contentType":{"type":"string","description":"The file content type. Must be \u003cspan pulumi-lang-nodejs=\"`iso`\" pulumi-lang-dotnet=\"`Iso`\" pulumi-lang-go=\"`iso`\" pulumi-lang-python=\"`iso`\" pulumi-lang-yaml=\"`iso`\" pulumi-lang-java=\"`iso`\"\u003e`iso`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`import`\" pulumi-lang-dotnet=\"`Import`\" pulumi-lang-go=\"`import`\" pulumi-lang-python=\"`import`\" pulumi-lang-yaml=\"`import`\" pulumi-lang-java=\"`import`\"\u003e`import`\u003c/span\u003e for VM images or \u003cspan pulumi-lang-nodejs=\"`vztmpl`\" pulumi-lang-dotnet=\"`Vztmpl`\" pulumi-lang-go=\"`vztmpl`\" pulumi-lang-python=\"`vztmpl`\" pulumi-lang-yaml=\"`vztmpl`\" pulumi-lang-java=\"`vztmpl`\"\u003e`vztmpl`\u003c/span\u003e for LXC images.\n"},"datastoreId":{"type":"string","description":"The identifier for the target datastore.\n"},"decompressionAlgorithm":{"type":"string","description":"Decompress the downloaded file using the specified compression algorithm. Must be one of \u003cspan pulumi-lang-nodejs=\"`gz`\" pulumi-lang-dotnet=\"`Gz`\" pulumi-lang-go=\"`gz`\" pulumi-lang-python=\"`gz`\" pulumi-lang-yaml=\"`gz`\" pulumi-lang-java=\"`gz`\"\u003e`gz`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`lzo`\" pulumi-lang-dotnet=\"`Lzo`\" pulumi-lang-go=\"`lzo`\" pulumi-lang-python=\"`lzo`\" pulumi-lang-yaml=\"`lzo`\" pulumi-lang-java=\"`lzo`\"\u003e`lzo`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`zst`\" pulumi-lang-dotnet=\"`Zst`\" pulumi-lang-go=\"`zst`\" pulumi-lang-python=\"`zst`\" pulumi-lang-yaml=\"`zst`\" pulumi-lang-java=\"`zst`\"\u003e`zst`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`bz2`\" pulumi-lang-dotnet=\"`Bz2`\" pulumi-lang-go=\"`bz2`\" pulumi-lang-python=\"`bz2`\" pulumi-lang-yaml=\"`bz2`\" pulumi-lang-java=\"`bz2`\"\u003e`bz2`\u003c/span\u003e.\n"},"fileName":{"type":"string","description":"The file name. If not provided, it is calculated using \u003cspan pulumi-lang-nodejs=\"`url`\" pulumi-lang-dotnet=\"`Url`\" pulumi-lang-go=\"`url`\" pulumi-lang-python=\"`url`\" pulumi-lang-yaml=\"`url`\" pulumi-lang-java=\"`url`\"\u003e`url`\u003c/span\u003e. PVE will raise 'wrong file extension' error for some popular extensions file `.raw` or `.qcow2` on PVE versions prior to 8.4. Workaround is to use e.g. `.img` instead.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"overwrite":{"type":"boolean"},"overwriteUnmanaged":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and a file with the same name already exists in the datastore, it will be deleted and the new file will be downloaded. If \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e and the file already exists, an error will be returned.\n"},"size":{"type":"integer","description":"The file size in PVE.\n"},"uploadTimeout":{"type":"integer","description":"The file download timeout seconds. Default is 600 (10min).\n"},"url":{"type":"string","description":"The URL to download the file from. Must match regex: `https?://.*`.\n"},"verify":{"type":"boolean","description":"By default \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e. If \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, no SSL/TLS certificates will be verified.\n"}},"required":["contentType","datastoreId","fileName","nodeName","overwrite","overwriteUnmanaged","size","uploadTimeout","url","verify"],"inputProperties":{"checksum":{"type":"string","description":"The expected checksum of the file.\n"},"checksumAlgorithm":{"type":"string","description":"The algorithm to calculate the checksum of the file. Must be \u003cspan pulumi-lang-nodejs=\"`md5`\" pulumi-lang-dotnet=\"`Md5`\" pulumi-lang-go=\"`md5`\" pulumi-lang-python=\"`md5`\" pulumi-lang-yaml=\"`md5`\" pulumi-lang-java=\"`md5`\"\u003e`md5`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`sha1`\" pulumi-lang-dotnet=\"`Sha1`\" pulumi-lang-go=\"`sha1`\" pulumi-lang-python=\"`sha1`\" pulumi-lang-yaml=\"`sha1`\" pulumi-lang-java=\"`sha1`\"\u003e`sha1`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`sha224`\" pulumi-lang-dotnet=\"`Sha224`\" pulumi-lang-go=\"`sha224`\" pulumi-lang-python=\"`sha224`\" pulumi-lang-yaml=\"`sha224`\" pulumi-lang-java=\"`sha224`\"\u003e`sha224`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`sha256`\" pulumi-lang-dotnet=\"`Sha256`\" pulumi-lang-go=\"`sha256`\" pulumi-lang-python=\"`sha256`\" pulumi-lang-yaml=\"`sha256`\" pulumi-lang-java=\"`sha256`\"\u003e`sha256`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`sha384`\" pulumi-lang-dotnet=\"`Sha384`\" pulumi-lang-go=\"`sha384`\" pulumi-lang-python=\"`sha384`\" pulumi-lang-yaml=\"`sha384`\" pulumi-lang-java=\"`sha384`\"\u003e`sha384`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`sha512`\" pulumi-lang-dotnet=\"`Sha512`\" pulumi-lang-go=\"`sha512`\" pulumi-lang-python=\"`sha512`\" pulumi-lang-yaml=\"`sha512`\" pulumi-lang-java=\"`sha512`\"\u003e`sha512`\u003c/span\u003e.\n"},"contentType":{"type":"string","description":"The file content type. Must be \u003cspan pulumi-lang-nodejs=\"`iso`\" pulumi-lang-dotnet=\"`Iso`\" pulumi-lang-go=\"`iso`\" pulumi-lang-python=\"`iso`\" pulumi-lang-yaml=\"`iso`\" pulumi-lang-java=\"`iso`\"\u003e`iso`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`import`\" pulumi-lang-dotnet=\"`Import`\" pulumi-lang-go=\"`import`\" pulumi-lang-python=\"`import`\" pulumi-lang-yaml=\"`import`\" pulumi-lang-java=\"`import`\"\u003e`import`\u003c/span\u003e for VM images or \u003cspan pulumi-lang-nodejs=\"`vztmpl`\" pulumi-lang-dotnet=\"`Vztmpl`\" pulumi-lang-go=\"`vztmpl`\" pulumi-lang-python=\"`vztmpl`\" pulumi-lang-yaml=\"`vztmpl`\" pulumi-lang-java=\"`vztmpl`\"\u003e`vztmpl`\u003c/span\u003e for LXC images.\n"},"datastoreId":{"type":"string","description":"The identifier for the target datastore.\n"},"decompressionAlgorithm":{"type":"string","description":"Decompress the downloaded file using the specified compression algorithm. Must be one of \u003cspan pulumi-lang-nodejs=\"`gz`\" pulumi-lang-dotnet=\"`Gz`\" pulumi-lang-go=\"`gz`\" pulumi-lang-python=\"`gz`\" pulumi-lang-yaml=\"`gz`\" pulumi-lang-java=\"`gz`\"\u003e`gz`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`lzo`\" pulumi-lang-dotnet=\"`Lzo`\" pulumi-lang-go=\"`lzo`\" pulumi-lang-python=\"`lzo`\" pulumi-lang-yaml=\"`lzo`\" pulumi-lang-java=\"`lzo`\"\u003e`lzo`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`zst`\" pulumi-lang-dotnet=\"`Zst`\" pulumi-lang-go=\"`zst`\" pulumi-lang-python=\"`zst`\" pulumi-lang-yaml=\"`zst`\" pulumi-lang-java=\"`zst`\"\u003e`zst`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`bz2`\" pulumi-lang-dotnet=\"`Bz2`\" pulumi-lang-go=\"`bz2`\" pulumi-lang-python=\"`bz2`\" pulumi-lang-yaml=\"`bz2`\" pulumi-lang-java=\"`bz2`\"\u003e`bz2`\u003c/span\u003e.\n"},"fileName":{"type":"string","description":"The file name. If not provided, it is calculated using \u003cspan pulumi-lang-nodejs=\"`url`\" pulumi-lang-dotnet=\"`Url`\" pulumi-lang-go=\"`url`\" pulumi-lang-python=\"`url`\" pulumi-lang-yaml=\"`url`\" pulumi-lang-java=\"`url`\"\u003e`url`\u003c/span\u003e. PVE will raise 'wrong file extension' error for some popular extensions file `.raw` or `.qcow2` on PVE versions prior to 8.4. Workaround is to use e.g. `.img` instead.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"overwrite":{"type":"boolean"},"overwriteUnmanaged":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and a file with the same name already exists in the datastore, it will be deleted and the new file will be downloaded. If \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e and the file already exists, an error will be returned.\n"},"uploadTimeout":{"type":"integer","description":"The file download timeout seconds. Default is 600 (10min).\n"},"url":{"type":"string","description":"The URL to download the file from. Must match regex: `https?://.*`.\n"},"verify":{"type":"boolean","description":"By default \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e. If \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, no SSL/TLS certificates will be verified.\n"}},"requiredInputs":["contentType","datastoreId","nodeName","url"],"stateInputs":{"description":"Input properties used for looking up and filtering File resources.\n","properties":{"checksum":{"type":"string","description":"The expected checksum of the file.\n"},"checksumAlgorithm":{"type":"string","description":"The algorithm to calculate the checksum of the file. Must be \u003cspan pulumi-lang-nodejs=\"`md5`\" pulumi-lang-dotnet=\"`Md5`\" pulumi-lang-go=\"`md5`\" pulumi-lang-python=\"`md5`\" pulumi-lang-yaml=\"`md5`\" pulumi-lang-java=\"`md5`\"\u003e`md5`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`sha1`\" pulumi-lang-dotnet=\"`Sha1`\" pulumi-lang-go=\"`sha1`\" pulumi-lang-python=\"`sha1`\" pulumi-lang-yaml=\"`sha1`\" pulumi-lang-java=\"`sha1`\"\u003e`sha1`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`sha224`\" pulumi-lang-dotnet=\"`Sha224`\" pulumi-lang-go=\"`sha224`\" pulumi-lang-python=\"`sha224`\" pulumi-lang-yaml=\"`sha224`\" pulumi-lang-java=\"`sha224`\"\u003e`sha224`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`sha256`\" pulumi-lang-dotnet=\"`Sha256`\" pulumi-lang-go=\"`sha256`\" pulumi-lang-python=\"`sha256`\" pulumi-lang-yaml=\"`sha256`\" pulumi-lang-java=\"`sha256`\"\u003e`sha256`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`sha384`\" pulumi-lang-dotnet=\"`Sha384`\" pulumi-lang-go=\"`sha384`\" pulumi-lang-python=\"`sha384`\" pulumi-lang-yaml=\"`sha384`\" pulumi-lang-java=\"`sha384`\"\u003e`sha384`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`sha512`\" pulumi-lang-dotnet=\"`Sha512`\" pulumi-lang-go=\"`sha512`\" pulumi-lang-python=\"`sha512`\" pulumi-lang-yaml=\"`sha512`\" pulumi-lang-java=\"`sha512`\"\u003e`sha512`\u003c/span\u003e.\n"},"contentType":{"type":"string","description":"The file content type. Must be \u003cspan pulumi-lang-nodejs=\"`iso`\" pulumi-lang-dotnet=\"`Iso`\" pulumi-lang-go=\"`iso`\" pulumi-lang-python=\"`iso`\" pulumi-lang-yaml=\"`iso`\" pulumi-lang-java=\"`iso`\"\u003e`iso`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`import`\" pulumi-lang-dotnet=\"`Import`\" pulumi-lang-go=\"`import`\" pulumi-lang-python=\"`import`\" pulumi-lang-yaml=\"`import`\" pulumi-lang-java=\"`import`\"\u003e`import`\u003c/span\u003e for VM images or \u003cspan pulumi-lang-nodejs=\"`vztmpl`\" pulumi-lang-dotnet=\"`Vztmpl`\" pulumi-lang-go=\"`vztmpl`\" pulumi-lang-python=\"`vztmpl`\" pulumi-lang-yaml=\"`vztmpl`\" pulumi-lang-java=\"`vztmpl`\"\u003e`vztmpl`\u003c/span\u003e for LXC images.\n"},"datastoreId":{"type":"string","description":"The identifier for the target datastore.\n"},"decompressionAlgorithm":{"type":"string","description":"Decompress the downloaded file using the specified compression algorithm. Must be one of \u003cspan pulumi-lang-nodejs=\"`gz`\" pulumi-lang-dotnet=\"`Gz`\" pulumi-lang-go=\"`gz`\" pulumi-lang-python=\"`gz`\" pulumi-lang-yaml=\"`gz`\" pulumi-lang-java=\"`gz`\"\u003e`gz`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`lzo`\" pulumi-lang-dotnet=\"`Lzo`\" pulumi-lang-go=\"`lzo`\" pulumi-lang-python=\"`lzo`\" pulumi-lang-yaml=\"`lzo`\" pulumi-lang-java=\"`lzo`\"\u003e`lzo`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`zst`\" pulumi-lang-dotnet=\"`Zst`\" pulumi-lang-go=\"`zst`\" pulumi-lang-python=\"`zst`\" pulumi-lang-yaml=\"`zst`\" pulumi-lang-java=\"`zst`\"\u003e`zst`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`bz2`\" pulumi-lang-dotnet=\"`Bz2`\" pulumi-lang-go=\"`bz2`\" pulumi-lang-python=\"`bz2`\" pulumi-lang-yaml=\"`bz2`\" pulumi-lang-java=\"`bz2`\"\u003e`bz2`\u003c/span\u003e.\n"},"fileName":{"type":"string","description":"The file name. If not provided, it is calculated using \u003cspan pulumi-lang-nodejs=\"`url`\" pulumi-lang-dotnet=\"`Url`\" pulumi-lang-go=\"`url`\" pulumi-lang-python=\"`url`\" pulumi-lang-yaml=\"`url`\" pulumi-lang-java=\"`url`\"\u003e`url`\u003c/span\u003e. PVE will raise 'wrong file extension' error for some popular extensions file `.raw` or `.qcow2` on PVE versions prior to 8.4. Workaround is to use e.g. `.img` instead.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"overwrite":{"type":"boolean"},"overwriteUnmanaged":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and a file with the same name already exists in the datastore, it will be deleted and the new file will be downloaded. If \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e and the file already exists, an error will be returned.\n"},"size":{"type":"integer","description":"The file size in PVE.\n"},"uploadTimeout":{"type":"integer","description":"The file download timeout seconds. Default is 600 (10min).\n"},"url":{"type":"string","description":"The URL to download the file from. Must match regex: `https?://.*`.\n"},"verify":{"type":"boolean","description":"By default \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e. If \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, no SSL/TLS certificates will be verified.\n"}},"type":"object"}},"proxmoxve:HA/hAGroup:HAGroup":{"description":"Manages a High Availability group in a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.ha.HAGroup(\"example\", {\n    group: \"example\",\n    comment: \"This is a comment.\",\n    nodes: {\n        node1: null,\n        node2: 2,\n        node3: 1,\n    },\n    restricted: true,\n    noFailback: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.ha.HAGroup(\"example\",\n    group=\"example\",\n    comment=\"This is a comment.\",\n    nodes={\n        \"node1\": None,\n        \"node2\": 2,\n        \"node3\": 1,\n    },\n    restricted=True,\n    no_failback=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ProxmoxVE.HA.HAGroup(\"example\", new()\n    {\n        Group = \"example\",\n        Comment = \"This is a comment.\",\n        Nodes = \n        {\n            { \"node1\", null },\n            { \"node2\", 2 },\n            { \"node3\", 1 },\n        },\n        Restricted = true,\n        NoFailback = false,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/ha\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ha.NewHAGroup(ctx, \"example\", \u0026ha.HAGroupArgs{\n\t\t\tGroup:   pulumi.String(\"example\"),\n\t\t\tComment: pulumi.String(\"This is a comment.\"),\n\t\t\tNodes: pulumi.IntMap{\n\t\t\t\t\"node1\": nil,\n\t\t\t\t\"node2\": pulumi.Int(2),\n\t\t\t\t\"node3\": pulumi.Int(1),\n\t\t\t},\n\t\t\tRestricted: pulumi.Bool(true),\n\t\t\tNoFailback: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.HA.HAGroup;\nimport io.muehlbachler.pulumi.proxmoxve.HA.HAGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new HAGroup(\"example\", HAGroupArgs.builder()\n            .group(\"example\")\n            .comment(\"This is a comment.\")\n            .nodes(Map.ofEntries(\n                Map.entry(\"node1\", null),\n                Map.entry(\"node2\", 2),\n                Map.entry(\"node3\", 1)\n            ))\n            .restricted(true)\n            .noFailback(false)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:HA:HAGroup\n    properties:\n      group: example\n      comment: This is a comment.\n      nodes:\n        node1: null\n        node2: 2\n        node3: 1\n      restricted: true\n      noFailback: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nHA groups can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:HA/hAGroup:HAGroup example example\n```\n\n","properties":{"comment":{"type":"string","description":"The comment associated with this group\n"},"group":{"type":"string","description":"The identifier of the High Availability group to manage.\n"},"noFailback":{"type":"boolean","description":"A flag that indicates that failing back to a higher priority node is disabled for this HA group. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"nodes":{"type":"object","additionalProperties":{"type":"integer"},"description":"The member nodes for this group. They are provided as a map, where the keys are the node names and the values represent their priority: integers for known priorities or \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e for unset priorities.\n"},"restricted":{"type":"boolean","description":"A flag that indicates that other nodes may not be used to run resources associated to this HA group. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"}},"required":["group","noFailback","nodes","restricted"],"inputProperties":{"comment":{"type":"string","description":"The comment associated with this group\n"},"group":{"type":"string","description":"The identifier of the High Availability group to manage.\n"},"noFailback":{"type":"boolean","description":"A flag that indicates that failing back to a higher priority node is disabled for this HA group. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"nodes":{"type":"object","additionalProperties":{"type":"integer"},"description":"The member nodes for this group. They are provided as a map, where the keys are the node names and the values represent their priority: integers for known priorities or \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e for unset priorities.\n"},"restricted":{"type":"boolean","description":"A flag that indicates that other nodes may not be used to run resources associated to this HA group. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"}},"requiredInputs":["group","nodes"],"stateInputs":{"description":"Input properties used for looking up and filtering HAGroup resources.\n","properties":{"comment":{"type":"string","description":"The comment associated with this group\n"},"group":{"type":"string","description":"The identifier of the High Availability group to manage.\n"},"noFailback":{"type":"boolean","description":"A flag that indicates that failing back to a higher priority node is disabled for this HA group. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"nodes":{"type":"object","additionalProperties":{"type":"integer"},"description":"The member nodes for this group. They are provided as a map, where the keys are the node names and the values represent their priority: integers for known priorities or \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e for unset priorities.\n"},"restricted":{"type":"boolean","description":"A flag that indicates that other nodes may not be used to run resources associated to this HA group. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"}},"type":"object"}},"proxmoxve:HA/hAResource:HAResource":{"description":"Manages Proxmox HA resources.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.ha.HAResource(\"example\", {\n    resourceId: \"vm:123\",\n    state: \"started\",\n    group: \"example\",\n    comment: \"Managed by Pulumi\",\n}, {\n    dependsOn: [exampleProxmoxVirtualEnvironmentHagroup],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.ha.HAResource(\"example\",\n    resource_id=\"vm:123\",\n    state=\"started\",\n    group=\"example\",\n    comment=\"Managed by Pulumi\",\n    opts = pulumi.ResourceOptions(depends_on=[example_proxmox_virtual_environment_hagroup]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ProxmoxVE.HA.HAResource(\"example\", new()\n    {\n        ResourceId = \"vm:123\",\n        State = \"started\",\n        Group = \"example\",\n        Comment = \"Managed by Pulumi\",\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            exampleProxmoxVirtualEnvironmentHagroup,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/ha\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := ha.NewHAResource(ctx, \"example\", \u0026ha.HAResourceArgs{\n\t\t\tResourceId: pulumi.String(\"vm:123\"),\n\t\t\tState:      pulumi.String(\"started\"),\n\t\t\tGroup:      pulumi.String(\"example\"),\n\t\t\tComment:    pulumi.String(\"Managed by Pulumi\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texampleProxmoxVirtualEnvironmentHagroup,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.HA.HAResource;\nimport io.muehlbachler.pulumi.proxmoxve.HA.HAResourceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new HAResource(\"example\", HAResourceArgs.builder()\n            .resourceId(\"vm:123\")\n            .state(\"started\")\n            .group(\"example\")\n            .comment(\"Managed by Pulumi\")\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(exampleProxmoxVirtualEnvironmentHagroup)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:HA:HAResource\n    properties:\n      resourceId: vm:123\n      state: started\n      group: example\n      comment: Managed by Pulumi\n    options:\n      dependsOn:\n        - ${exampleProxmoxVirtualEnvironmentHagroup}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nHA resources can be imported using their identifiers, e.g.:\n\n```sh\n$ pulumi import proxmoxve:HA/hAResource:HAResource example vm:123\n```\n\n","properties":{"comment":{"type":"string","description":"The comment associated with this resource.\n"},"group":{"type":"string","description":"The identifier of the High Availability group this resource is a member of.\n"},"maxRelocate":{"type":"integer","description":"The maximal number of relocation attempts.\n"},"maxRestart":{"type":"integer","description":"The maximal number of restart attempts.\n"},"resourceId":{"type":"string","description":"The Proxmox HA resource identifier\n"},"state":{"type":"string","description":"The desired state of the resource.\n"},"type":{"type":"string","description":"The type of HA resources to create. If unset, it will be deduced from the \u003cspan pulumi-lang-nodejs=\"`resourceId`\" pulumi-lang-dotnet=\"`ResourceId`\" pulumi-lang-go=\"`resourceId`\" pulumi-lang-python=\"`resource_id`\" pulumi-lang-yaml=\"`resourceId`\" pulumi-lang-java=\"`resourceId`\"\u003e`resource_id`\u003c/span\u003e.\n"}},"required":["resourceId","state","type"],"inputProperties":{"comment":{"type":"string","description":"The comment associated with this resource.\n"},"group":{"type":"string","description":"The identifier of the High Availability group this resource is a member of.\n"},"maxRelocate":{"type":"integer","description":"The maximal number of relocation attempts.\n"},"maxRestart":{"type":"integer","description":"The maximal number of restart attempts.\n"},"resourceId":{"type":"string","description":"The Proxmox HA resource identifier\n"},"state":{"type":"string","description":"The desired state of the resource.\n"},"type":{"type":"string","description":"The type of HA resources to create. If unset, it will be deduced from the \u003cspan pulumi-lang-nodejs=\"`resourceId`\" pulumi-lang-dotnet=\"`ResourceId`\" pulumi-lang-go=\"`resourceId`\" pulumi-lang-python=\"`resource_id`\" pulumi-lang-yaml=\"`resourceId`\" pulumi-lang-java=\"`resourceId`\"\u003e`resource_id`\u003c/span\u003e.\n"}},"requiredInputs":["resourceId"],"stateInputs":{"description":"Input properties used for looking up and filtering HAResource resources.\n","properties":{"comment":{"type":"string","description":"The comment associated with this resource.\n"},"group":{"type":"string","description":"The identifier of the High Availability group this resource is a member of.\n"},"maxRelocate":{"type":"integer","description":"The maximal number of relocation attempts.\n"},"maxRestart":{"type":"integer","description":"The maximal number of restart attempts.\n"},"resourceId":{"type":"string","description":"The Proxmox HA resource identifier\n"},"state":{"type":"string","description":"The desired state of the resource.\n"},"type":{"type":"string","description":"The type of HA resources to create. If unset, it will be deduced from the \u003cspan pulumi-lang-nodejs=\"`resourceId`\" pulumi-lang-dotnet=\"`ResourceId`\" pulumi-lang-go=\"`resourceId`\" pulumi-lang-python=\"`resource_id`\" pulumi-lang-yaml=\"`resourceId`\" pulumi-lang-java=\"`resourceId`\"\u003e`resource_id`\u003c/span\u003e.\n"}},"type":"object"}},"proxmoxve:Hardware/mapping/dir:Dir":{"description":"Manages a directory mapping in a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.hardware.mapping.Dir(\"example\", {\n    comment: \"This is a comment\",\n    name: \"example\",\n    maps: [{\n        node: \"pve\",\n        path: \"/mnt/data\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.hardware.mapping.Dir(\"example\",\n    comment=\"This is a comment\",\n    name=\"example\",\n    maps=[{\n        \"node\": \"pve\",\n        \"path\": \"/mnt/data\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ProxmoxVE.Hardware.Mapping.Dir(\"example\", new()\n    {\n        Comment = \"This is a comment\",\n        Name = \"example\",\n        Maps = new[]\n        {\n            new ProxmoxVE.Hardware.Mapping.Inputs.DirMapArgs\n            {\n                Node = \"pve\",\n                Path = \"/mnt/data\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/hardware\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hardware.NewDir(ctx, \"example\", \u0026hardware.DirArgs{\n\t\t\tComment: pulumi.String(\"This is a comment\"),\n\t\t\tName:    pulumi.String(\"example\"),\n\t\t\tMaps: mapping.DirMapTypeArray{\n\t\t\t\t\u0026mapping.DirMapTypeArgs{\n\t\t\t\t\tNode: pulumi.String(\"pve\"),\n\t\t\t\t\tPath: pulumi.String(\"/mnt/data\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Hardware.Dir;\nimport io.muehlbachler.pulumi.proxmoxve.Hardware.DirArgs;\nimport com.pulumi.proxmoxve.Hardware.inputs.DirMapArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Dir(\"example\", DirArgs.builder()\n            .comment(\"This is a comment\")\n            .name(\"example\")\n            .maps(DirMapArgs.builder()\n                .node(\"pve\")\n                .path(\"/mnt/data\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:Hardware/mapping:Dir\n    properties:\n      comment: This is a comment\n      name: example\n      maps:\n        - node: pve\n          path: /mnt/data\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nA directory mapping can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:Hardware/mapping/dir:Dir example example\n```\n\n","properties":{"comment":{"type":"string","description":"The comment of this directory mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/DirMap:DirMap"},"description":"The actual map of devices for the hardware mapping.\n"},"name":{"type":"string","description":"The name of this directory mapping.\n"}},"required":["maps","name"],"inputProperties":{"comment":{"type":"string","description":"The comment of this directory mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/DirMap:DirMap"},"description":"The actual map of devices for the hardware mapping.\n"},"name":{"type":"string","description":"The name of this directory mapping.\n"}},"requiredInputs":["maps"],"stateInputs":{"description":"Input properties used for looking up and filtering Dir resources.\n","properties":{"comment":{"type":"string","description":"The comment of this directory mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/DirMap:DirMap"},"description":"The actual map of devices for the hardware mapping.\n"},"name":{"type":"string","description":"The name of this directory mapping.\n"}},"type":"object"}},"proxmoxve:Hardware/mapping/pci:Pci":{"description":"Manages a PCI hardware mapping in a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.hardware.mapping.Pci(\"example\", {\n    comment: \"This is a comment\",\n    name: \"example\",\n    maps: [{\n        comment: \"This is a device specific comment\",\n        id: \"8086:5916\",\n        iommuGroup: 0,\n        node: \"pve\",\n        path: \"0000:00:02.0\",\n        subsystemId: \"8086:2068\",\n    }],\n    mediatedDevices: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.hardware.mapping.Pci(\"example\",\n    comment=\"This is a comment\",\n    name=\"example\",\n    maps=[{\n        \"comment\": \"This is a device specific comment\",\n        \"id\": \"8086:5916\",\n        \"iommu_group\": 0,\n        \"node\": \"pve\",\n        \"path\": \"0000:00:02.0\",\n        \"subsystem_id\": \"8086:2068\",\n    }],\n    mediated_devices=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ProxmoxVE.Hardware.Mapping.Pci(\"example\", new()\n    {\n        Comment = \"This is a comment\",\n        Name = \"example\",\n        Maps = new[]\n        {\n            new ProxmoxVE.Hardware.Mapping.Inputs.PciMapArgs\n            {\n                Comment = \"This is a device specific comment\",\n                Id = \"8086:5916\",\n                IommuGroup = 0,\n                Node = \"pve\",\n                Path = \"0000:00:02.0\",\n                SubsystemId = \"8086:2068\",\n            },\n        },\n        MediatedDevices = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/hardware\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hardware.NewPci(ctx, \"example\", \u0026hardware.PciArgs{\n\t\t\tComment: pulumi.String(\"This is a comment\"),\n\t\t\tName:    pulumi.String(\"example\"),\n\t\t\tMaps: mapping.PciMapTypeArray{\n\t\t\t\t\u0026mapping.PciMapTypeArgs{\n\t\t\t\t\tComment:     pulumi.String(\"This is a device specific comment\"),\n\t\t\t\t\tId:          pulumi.String(\"8086:5916\"),\n\t\t\t\t\tIommuGroup:  pulumi.Int(0),\n\t\t\t\t\tNode:        pulumi.String(\"pve\"),\n\t\t\t\t\tPath:        pulumi.String(\"0000:00:02.0\"),\n\t\t\t\t\tSubsystemId: pulumi.String(\"8086:2068\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMediatedDevices: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Hardware.Pci;\nimport io.muehlbachler.pulumi.proxmoxve.Hardware.PciArgs;\nimport com.pulumi.proxmoxve.Hardware.inputs.PciMapArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Pci(\"example\", PciArgs.builder()\n            .comment(\"This is a comment\")\n            .name(\"example\")\n            .maps(PciMapArgs.builder()\n                .comment(\"This is a device specific comment\")\n                .id(\"8086:5916\")\n                .iommuGroup(0)\n                .node(\"pve\")\n                .path(\"0000:00:02.0\")\n                .subsystemId(\"8086:2068\")\n                .build())\n            .mediatedDevices(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:Hardware/mapping:Pci\n    properties:\n      comment: This is a comment\n      name: example\n      maps:\n        - comment: This is a device specific comment\n          id: 8086:5916\n          iommuGroup: 0\n          node: pve\n          path: 0000:00:02.0\n          subsystemId: 8086:2068\n      mediatedDevices: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nA PCI hardware mapping can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:Hardware/mapping/pci:Pci example example\n```\n\n","properties":{"comment":{"type":"string","description":"The comment of this PCI hardware mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/PciMap:PciMap"},"description":"The actual map of devices for the PCI hardware mapping.\n"},"mediatedDevices":{"type":"boolean","description":"Indicates whether to enable mediated devices.\n"},"name":{"type":"string","description":"The name of this PCI hardware mapping.\n"}},"required":["maps","mediatedDevices","name"],"inputProperties":{"comment":{"type":"string","description":"The comment of this PCI hardware mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/PciMap:PciMap"},"description":"The actual map of devices for the PCI hardware mapping.\n"},"mediatedDevices":{"type":"boolean","description":"Indicates whether to enable mediated devices.\n"},"name":{"type":"string","description":"The name of this PCI hardware mapping.\n"}},"requiredInputs":["maps"],"stateInputs":{"description":"Input properties used for looking up and filtering Pci resources.\n","properties":{"comment":{"type":"string","description":"The comment of this PCI hardware mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/PciMap:PciMap"},"description":"The actual map of devices for the PCI hardware mapping.\n"},"mediatedDevices":{"type":"boolean","description":"Indicates whether to enable mediated devices.\n"},"name":{"type":"string","description":"The name of this PCI hardware mapping.\n"}},"type":"object"}},"proxmoxve:Hardware/mapping/usb:Usb":{"description":"Manages a USB hardware mapping in a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.hardware.mapping.Usb(\"example\", {\n    comment: \"This is a comment\",\n    name: \"example\",\n    maps: [{\n        comment: \"This is a device specific comment\",\n        id: \"8087:0a2b\",\n        node: \"pve\",\n        path: \"1-8.2\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.hardware.mapping.Usb(\"example\",\n    comment=\"This is a comment\",\n    name=\"example\",\n    maps=[{\n        \"comment\": \"This is a device specific comment\",\n        \"id\": \"8087:0a2b\",\n        \"node\": \"pve\",\n        \"path\": \"1-8.2\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ProxmoxVE.Hardware.Mapping.Usb(\"example\", new()\n    {\n        Comment = \"This is a comment\",\n        Name = \"example\",\n        Maps = new[]\n        {\n            new ProxmoxVE.Hardware.Mapping.Inputs.UsbMapArgs\n            {\n                Comment = \"This is a device specific comment\",\n                Id = \"8087:0a2b\",\n                Node = \"pve\",\n                Path = \"1-8.2\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/hardware\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hardware.NewUsb(ctx, \"example\", \u0026hardware.UsbArgs{\n\t\t\tComment: pulumi.String(\"This is a comment\"),\n\t\t\tName:    pulumi.String(\"example\"),\n\t\t\tMaps: mapping.UsbMapTypeArray{\n\t\t\t\t\u0026mapping.UsbMapTypeArgs{\n\t\t\t\t\tComment: pulumi.String(\"This is a device specific comment\"),\n\t\t\t\t\tId:      pulumi.String(\"8087:0a2b\"),\n\t\t\t\t\tNode:    pulumi.String(\"pve\"),\n\t\t\t\t\tPath:    pulumi.String(\"1-8.2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Hardware.Usb;\nimport io.muehlbachler.pulumi.proxmoxve.Hardware.UsbArgs;\nimport com.pulumi.proxmoxve.Hardware.inputs.UsbMapArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Usb(\"example\", UsbArgs.builder()\n            .comment(\"This is a comment\")\n            .name(\"example\")\n            .maps(UsbMapArgs.builder()\n                .comment(\"This is a device specific comment\")\n                .id(\"8087:0a2b\")\n                .node(\"pve\")\n                .path(\"1-8.2\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:Hardware/mapping:Usb\n    properties:\n      comment: This is a comment\n      name: example\n      maps:\n        - comment: This is a device specific comment\n          id: 8087:0a2b\n          node: pve\n          path: 1-8.2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nA USB hardware mapping can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:Hardware/mapping/usb:Usb example example\n```\n\n","properties":{"comment":{"type":"string","description":"The comment of this USB hardware mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/UsbMap:UsbMap"},"description":"The actual map of devices for the hardware mapping.\n"},"name":{"type":"string","description":"The name of this hardware mapping.\n"}},"required":["maps","name"],"inputProperties":{"comment":{"type":"string","description":"The comment of this USB hardware mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/UsbMap:UsbMap"},"description":"The actual map of devices for the hardware mapping.\n"},"name":{"type":"string","description":"The name of this hardware mapping.\n"}},"requiredInputs":["maps"],"stateInputs":{"description":"Input properties used for looking up and filtering Usb resources.\n","properties":{"comment":{"type":"string","description":"The comment of this USB hardware mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/UsbMap:UsbMap"},"description":"The actual map of devices for the hardware mapping.\n"},"name":{"type":"string","description":"The name of this hardware mapping.\n"}},"type":"object"}},"proxmoxve:Metrics/metricsServer:MetricsServer":{"description":"Manages PVE metrics server.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst influxdbServer = new proxmoxve.metrics.MetricsServer(\"influxdb_server\", {\n    name: \"example_influxdb_server\",\n    server: \"192.168.3.2\",\n    port: 8089,\n    type: \"influxdb\",\n});\nconst graphiteServer = new proxmoxve.metrics.MetricsServer(\"graphite_server\", {\n    name: \"example_graphite_server\",\n    server: \"192.168.4.2\",\n    port: 2003,\n    type: \"graphite\",\n});\nconst opentelemetryServer = new proxmoxve.metrics.MetricsServer(\"opentelemetry_server\", {\n    name: \"example_opentelemetry_server\",\n    server: \"192.168.5.2\",\n    port: 4318,\n    type: \"opentelemetry\",\n    opentelemetryProto: \"http\",\n    opentelemetryPath: \"/v1/metrics\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\ninfluxdb_server = proxmoxve.metrics.MetricsServer(\"influxdb_server\",\n    name=\"example_influxdb_server\",\n    server=\"192.168.3.2\",\n    port=8089,\n    type=\"influxdb\")\ngraphite_server = proxmoxve.metrics.MetricsServer(\"graphite_server\",\n    name=\"example_graphite_server\",\n    server=\"192.168.4.2\",\n    port=2003,\n    type=\"graphite\")\nopentelemetry_server = proxmoxve.metrics.MetricsServer(\"opentelemetry_server\",\n    name=\"example_opentelemetry_server\",\n    server=\"192.168.5.2\",\n    port=4318,\n    type=\"opentelemetry\",\n    opentelemetry_proto=\"http\",\n    opentelemetry_path=\"/v1/metrics\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var influxdbServer = new ProxmoxVE.Metrics.MetricsServer(\"influxdb_server\", new()\n    {\n        Name = \"example_influxdb_server\",\n        Server = \"192.168.3.2\",\n        Port = 8089,\n        Type = \"influxdb\",\n    });\n\n    var graphiteServer = new ProxmoxVE.Metrics.MetricsServer(\"graphite_server\", new()\n    {\n        Name = \"example_graphite_server\",\n        Server = \"192.168.4.2\",\n        Port = 2003,\n        Type = \"graphite\",\n    });\n\n    var opentelemetryServer = new ProxmoxVE.Metrics.MetricsServer(\"opentelemetry_server\", new()\n    {\n        Name = \"example_opentelemetry_server\",\n        Server = \"192.168.5.2\",\n        Port = 4318,\n        Type = \"opentelemetry\",\n        OpentelemetryProto = \"http\",\n        OpentelemetryPath = \"/v1/metrics\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/metrics\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := metrics.NewMetricsServer(ctx, \"influxdb_server\", \u0026metrics.MetricsServerArgs{\n\t\t\tName:   pulumi.String(\"example_influxdb_server\"),\n\t\t\tServer: pulumi.String(\"192.168.3.2\"),\n\t\t\tPort:   pulumi.Int(8089),\n\t\t\tType:   pulumi.String(\"influxdb\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = metrics.NewMetricsServer(ctx, \"graphite_server\", \u0026metrics.MetricsServerArgs{\n\t\t\tName:   pulumi.String(\"example_graphite_server\"),\n\t\t\tServer: pulumi.String(\"192.168.4.2\"),\n\t\t\tPort:   pulumi.Int(2003),\n\t\t\tType:   pulumi.String(\"graphite\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = metrics.NewMetricsServer(ctx, \"opentelemetry_server\", \u0026metrics.MetricsServerArgs{\n\t\t\tName:               pulumi.String(\"example_opentelemetry_server\"),\n\t\t\tServer:             pulumi.String(\"192.168.5.2\"),\n\t\t\tPort:               pulumi.Int(4318),\n\t\t\tType:               pulumi.String(\"opentelemetry\"),\n\t\t\tOpentelemetryProto: pulumi.String(\"http\"),\n\t\t\tOpentelemetryPath:  pulumi.String(\"/v1/metrics\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Metrics.MetricsServer;\nimport io.muehlbachler.pulumi.proxmoxve.Metrics.MetricsServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var influxdbServer = new MetricsServer(\"influxdbServer\", MetricsServerArgs.builder()\n            .name(\"example_influxdb_server\")\n            .server(\"192.168.3.2\")\n            .port(8089)\n            .type(\"influxdb\")\n            .build());\n\n        var graphiteServer = new MetricsServer(\"graphiteServer\", MetricsServerArgs.builder()\n            .name(\"example_graphite_server\")\n            .server(\"192.168.4.2\")\n            .port(2003)\n            .type(\"graphite\")\n            .build());\n\n        var opentelemetryServer = new MetricsServer(\"opentelemetryServer\", MetricsServerArgs.builder()\n            .name(\"example_opentelemetry_server\")\n            .server(\"192.168.5.2\")\n            .port(4318)\n            .type(\"opentelemetry\")\n            .opentelemetryProto(\"http\")\n            .opentelemetryPath(\"/v1/metrics\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  influxdbServer:\n    type: proxmoxve:Metrics:MetricsServer\n    name: influxdb_server\n    properties:\n      name: example_influxdb_server\n      server: 192.168.3.2\n      port: 8089\n      type: influxdb\n  graphiteServer:\n    type: proxmoxve:Metrics:MetricsServer\n    name: graphite_server\n    properties:\n      name: example_graphite_server\n      server: 192.168.4.2\n      port: 2003\n      type: graphite\n  opentelemetryServer:\n    type: proxmoxve:Metrics:MetricsServer\n    name: opentelemetry_server\n    properties:\n      name: example_opentelemetry_server\n      server: 192.168.5.2\n      port: 4318\n      type: opentelemetry\n      opentelemetryProto: http\n      opentelemetryPath: /v1/metrics\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\n```sh\n$ pulumi import proxmoxve:Metrics/metricsServer:MetricsServer example example\n```\n\n","properties":{"disable":{"type":"boolean","description":"Set this to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to disable this metric server.\n"},"graphitePath":{"type":"string","description":"Root graphite path (ex: `proxmox.mycluster.mykey`).\n"},"graphiteProto":{"type":"string","description":"Protocol to send graphite data. Choice is between \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\"\u003e`udp`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e. If not set, PVE default is \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\"\u003e`udp`\u003c/span\u003e.\n"},"influxApiPathPrefix":{"type":"string","description":"An API path prefix inserted between `\u003chost\u003e:\u003cport\u003e/` and `/api2/`. Can be useful if the InfluxDB service runs behind a reverse proxy.\n"},"influxBucket":{"type":"string","description":"The InfluxDB bucket/db. Only necessary when using the http v2 api.\n"},"influxDbProto":{"type":"string","description":"Protocol for InfluxDB. Choice is between \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\"\u003e`udp`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e. If not set, PVE default is \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\"\u003e`udp`\u003c/span\u003e.\n"},"influxMaxBodySize":{"type":"integer","description":"InfluxDB max-body-size in bytes. Requests are batched up to this size. If not set, PVE default is \u003cspan pulumi-lang-nodejs=\"`25000000`\" pulumi-lang-dotnet=\"`25000000`\" pulumi-lang-go=\"`25000000`\" pulumi-lang-python=\"`25000000`\" pulumi-lang-yaml=\"`25000000`\" pulumi-lang-java=\"`25000000`\"\u003e`25000000`\u003c/span\u003e.\n"},"influxOrganization":{"type":"string","description":"The InfluxDB organization. Only necessary when using the http v2 api. Has no meaning when using v2 compatibility api.\n"},"influxToken":{"type":"string","description":"The InfluxDB access token. Only necessary when using the http v2 api. If the v2 compatibility api is used, use `user:password` instead.\n","secret":true},"influxVerify":{"type":"boolean","description":"Set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e to disable certificate verification for https endpoints.\n"},"mtu":{"type":"integer","description":"MTU (maximum transmission unit) for metrics transmission over UDP. If not set, PVE default is \u003cspan pulumi-lang-nodejs=\"`1500`\" pulumi-lang-dotnet=\"`1500`\" pulumi-lang-go=\"`1500`\" pulumi-lang-python=\"`1500`\" pulumi-lang-yaml=\"`1500`\" pulumi-lang-java=\"`1500`\"\u003e`1500`\u003c/span\u003e (allowed \u003cspan pulumi-lang-nodejs=\"`512`\" pulumi-lang-dotnet=\"`512`\" pulumi-lang-go=\"`512`\" pulumi-lang-python=\"`512`\" pulumi-lang-yaml=\"`512`\" pulumi-lang-java=\"`512`\"\u003e`512`\u003c/span\u003e - \u003cspan pulumi-lang-nodejs=\"`65536`\" pulumi-lang-dotnet=\"`65536`\" pulumi-lang-go=\"`65536`\" pulumi-lang-python=\"`65536`\" pulumi-lang-yaml=\"`65536`\" pulumi-lang-java=\"`65536`\"\u003e`65536`\u003c/span\u003e).\n"},"name":{"type":"string","description":"Unique name that will be ID of this metric server in PVE.\n"},"opentelemetryPath":{"type":"string","description":"OpenTelemetry endpoint path (e.g., `/v1/metrics`).\n"},"opentelemetryProto":{"type":"string","description":"Protocol for OpenTelemetry. Choice is between \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e. If not set, PVE default is \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e.\n"},"port":{"type":"integer","description":"Server network port.\n"},"server":{"type":"string","description":"Server dns name or IP address.\n"},"timeout":{"type":"integer","description":"TCP socket timeout in seconds. If not set, PVE default is \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e.\n"},"type":{"type":"string","description":"Plugin type. Choice is between \u003cspan pulumi-lang-nodejs=\"`graphite`\" pulumi-lang-dotnet=\"`Graphite`\" pulumi-lang-go=\"`graphite`\" pulumi-lang-python=\"`graphite`\" pulumi-lang-yaml=\"`graphite`\" pulumi-lang-java=\"`graphite`\"\u003e`graphite`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`influxdb`\" pulumi-lang-dotnet=\"`Influxdb`\" pulumi-lang-go=\"`influxdb`\" pulumi-lang-python=\"`influxdb`\" pulumi-lang-yaml=\"`influxdb`\" pulumi-lang-java=\"`influxdb`\"\u003e`influxdb`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`opentelemetry`\" pulumi-lang-dotnet=\"`Opentelemetry`\" pulumi-lang-go=\"`opentelemetry`\" pulumi-lang-python=\"`opentelemetry`\" pulumi-lang-yaml=\"`opentelemetry`\" pulumi-lang-java=\"`opentelemetry`\"\u003e`opentelemetry`\u003c/span\u003e.\n"}},"required":["name","port","server","type"],"inputProperties":{"disable":{"type":"boolean","description":"Set this to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to disable this metric server.\n"},"graphitePath":{"type":"string","description":"Root graphite path (ex: `proxmox.mycluster.mykey`).\n"},"graphiteProto":{"type":"string","description":"Protocol to send graphite data. Choice is between \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\"\u003e`udp`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e. If not set, PVE default is \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\"\u003e`udp`\u003c/span\u003e.\n"},"influxApiPathPrefix":{"type":"string","description":"An API path prefix inserted between `\u003chost\u003e:\u003cport\u003e/` and `/api2/`. Can be useful if the InfluxDB service runs behind a reverse proxy.\n"},"influxBucket":{"type":"string","description":"The InfluxDB bucket/db. Only necessary when using the http v2 api.\n"},"influxDbProto":{"type":"string","description":"Protocol for InfluxDB. Choice is between \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\"\u003e`udp`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e. If not set, PVE default is \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\"\u003e`udp`\u003c/span\u003e.\n"},"influxMaxBodySize":{"type":"integer","description":"InfluxDB max-body-size in bytes. Requests are batched up to this size. If not set, PVE default is \u003cspan pulumi-lang-nodejs=\"`25000000`\" pulumi-lang-dotnet=\"`25000000`\" pulumi-lang-go=\"`25000000`\" pulumi-lang-python=\"`25000000`\" pulumi-lang-yaml=\"`25000000`\" pulumi-lang-java=\"`25000000`\"\u003e`25000000`\u003c/span\u003e.\n"},"influxOrganization":{"type":"string","description":"The InfluxDB organization. Only necessary when using the http v2 api. Has no meaning when using v2 compatibility api.\n"},"influxToken":{"type":"string","description":"The InfluxDB access token. Only necessary when using the http v2 api. If the v2 compatibility api is used, use `user:password` instead.\n","secret":true},"influxVerify":{"type":"boolean","description":"Set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e to disable certificate verification for https endpoints.\n"},"mtu":{"type":"integer","description":"MTU (maximum transmission unit) for metrics transmission over UDP. If not set, PVE default is \u003cspan pulumi-lang-nodejs=\"`1500`\" pulumi-lang-dotnet=\"`1500`\" pulumi-lang-go=\"`1500`\" pulumi-lang-python=\"`1500`\" pulumi-lang-yaml=\"`1500`\" pulumi-lang-java=\"`1500`\"\u003e`1500`\u003c/span\u003e (allowed \u003cspan pulumi-lang-nodejs=\"`512`\" pulumi-lang-dotnet=\"`512`\" pulumi-lang-go=\"`512`\" pulumi-lang-python=\"`512`\" pulumi-lang-yaml=\"`512`\" pulumi-lang-java=\"`512`\"\u003e`512`\u003c/span\u003e - \u003cspan pulumi-lang-nodejs=\"`65536`\" pulumi-lang-dotnet=\"`65536`\" pulumi-lang-go=\"`65536`\" pulumi-lang-python=\"`65536`\" pulumi-lang-yaml=\"`65536`\" pulumi-lang-java=\"`65536`\"\u003e`65536`\u003c/span\u003e).\n"},"name":{"type":"string","description":"Unique name that will be ID of this metric server in PVE.\n"},"opentelemetryPath":{"type":"string","description":"OpenTelemetry endpoint path (e.g., `/v1/metrics`).\n"},"opentelemetryProto":{"type":"string","description":"Protocol for OpenTelemetry. Choice is between \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e. If not set, PVE default is \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e.\n"},"port":{"type":"integer","description":"Server network port.\n"},"server":{"type":"string","description":"Server dns name or IP address.\n"},"timeout":{"type":"integer","description":"TCP socket timeout in seconds. If not set, PVE default is \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e.\n"},"type":{"type":"string","description":"Plugin type. Choice is between \u003cspan pulumi-lang-nodejs=\"`graphite`\" pulumi-lang-dotnet=\"`Graphite`\" pulumi-lang-go=\"`graphite`\" pulumi-lang-python=\"`graphite`\" pulumi-lang-yaml=\"`graphite`\" pulumi-lang-java=\"`graphite`\"\u003e`graphite`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`influxdb`\" pulumi-lang-dotnet=\"`Influxdb`\" pulumi-lang-go=\"`influxdb`\" pulumi-lang-python=\"`influxdb`\" pulumi-lang-yaml=\"`influxdb`\" pulumi-lang-java=\"`influxdb`\"\u003e`influxdb`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`opentelemetry`\" pulumi-lang-dotnet=\"`Opentelemetry`\" pulumi-lang-go=\"`opentelemetry`\" pulumi-lang-python=\"`opentelemetry`\" pulumi-lang-yaml=\"`opentelemetry`\" pulumi-lang-java=\"`opentelemetry`\"\u003e`opentelemetry`\u003c/span\u003e.\n"}},"requiredInputs":["port","server","type"],"stateInputs":{"description":"Input properties used for looking up and filtering MetricsServer resources.\n","properties":{"disable":{"type":"boolean","description":"Set this to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to disable this metric server.\n"},"graphitePath":{"type":"string","description":"Root graphite path (ex: `proxmox.mycluster.mykey`).\n"},"graphiteProto":{"type":"string","description":"Protocol to send graphite data. Choice is between \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\"\u003e`udp`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e. If not set, PVE default is \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\"\u003e`udp`\u003c/span\u003e.\n"},"influxApiPathPrefix":{"type":"string","description":"An API path prefix inserted between `\u003chost\u003e:\u003cport\u003e/` and `/api2/`. Can be useful if the InfluxDB service runs behind a reverse proxy.\n"},"influxBucket":{"type":"string","description":"The InfluxDB bucket/db. Only necessary when using the http v2 api.\n"},"influxDbProto":{"type":"string","description":"Protocol for InfluxDB. Choice is between \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\"\u003e`udp`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e. If not set, PVE default is \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\"\u003e`udp`\u003c/span\u003e.\n"},"influxMaxBodySize":{"type":"integer","description":"InfluxDB max-body-size in bytes. Requests are batched up to this size. If not set, PVE default is \u003cspan pulumi-lang-nodejs=\"`25000000`\" pulumi-lang-dotnet=\"`25000000`\" pulumi-lang-go=\"`25000000`\" pulumi-lang-python=\"`25000000`\" pulumi-lang-yaml=\"`25000000`\" pulumi-lang-java=\"`25000000`\"\u003e`25000000`\u003c/span\u003e.\n"},"influxOrganization":{"type":"string","description":"The InfluxDB organization. Only necessary when using the http v2 api. Has no meaning when using v2 compatibility api.\n"},"influxToken":{"type":"string","description":"The InfluxDB access token. Only necessary when using the http v2 api. If the v2 compatibility api is used, use `user:password` instead.\n","secret":true},"influxVerify":{"type":"boolean","description":"Set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e to disable certificate verification for https endpoints.\n"},"mtu":{"type":"integer","description":"MTU (maximum transmission unit) for metrics transmission over UDP. If not set, PVE default is \u003cspan pulumi-lang-nodejs=\"`1500`\" pulumi-lang-dotnet=\"`1500`\" pulumi-lang-go=\"`1500`\" pulumi-lang-python=\"`1500`\" pulumi-lang-yaml=\"`1500`\" pulumi-lang-java=\"`1500`\"\u003e`1500`\u003c/span\u003e (allowed \u003cspan pulumi-lang-nodejs=\"`512`\" pulumi-lang-dotnet=\"`512`\" pulumi-lang-go=\"`512`\" pulumi-lang-python=\"`512`\" pulumi-lang-yaml=\"`512`\" pulumi-lang-java=\"`512`\"\u003e`512`\u003c/span\u003e - \u003cspan pulumi-lang-nodejs=\"`65536`\" pulumi-lang-dotnet=\"`65536`\" pulumi-lang-go=\"`65536`\" pulumi-lang-python=\"`65536`\" pulumi-lang-yaml=\"`65536`\" pulumi-lang-java=\"`65536`\"\u003e`65536`\u003c/span\u003e).\n"},"name":{"type":"string","description":"Unique name that will be ID of this metric server in PVE.\n"},"opentelemetryPath":{"type":"string","description":"OpenTelemetry endpoint path (e.g., `/v1/metrics`).\n"},"opentelemetryProto":{"type":"string","description":"Protocol for OpenTelemetry. Choice is between \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e. If not set, PVE default is \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e.\n"},"port":{"type":"integer","description":"Server network port.\n"},"server":{"type":"string","description":"Server dns name or IP address.\n"},"timeout":{"type":"integer","description":"TCP socket timeout in seconds. If not set, PVE default is \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e.\n"},"type":{"type":"string","description":"Plugin type. Choice is between \u003cspan pulumi-lang-nodejs=\"`graphite`\" pulumi-lang-dotnet=\"`Graphite`\" pulumi-lang-go=\"`graphite`\" pulumi-lang-python=\"`graphite`\" pulumi-lang-yaml=\"`graphite`\" pulumi-lang-java=\"`graphite`\"\u003e`graphite`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`influxdb`\" pulumi-lang-dotnet=\"`Influxdb`\" pulumi-lang-go=\"`influxdb`\" pulumi-lang-python=\"`influxdb`\" pulumi-lang-yaml=\"`influxdb`\" pulumi-lang-java=\"`influxdb`\"\u003e`influxdb`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`opentelemetry`\" pulumi-lang-dotnet=\"`Opentelemetry`\" pulumi-lang-go=\"`opentelemetry`\" pulumi-lang-python=\"`opentelemetry`\" pulumi-lang-yaml=\"`opentelemetry`\" pulumi-lang-java=\"`opentelemetry`\"\u003e`opentelemetry`\u003c/span\u003e.\n"}},"type":"object"}},"proxmoxve:Network/firewall:Firewall":{"description":"Manages firewall options on the cluster level.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.network.Firewall(\"example\", {\n    enabled: false,\n    ebtables: false,\n    inputPolicy: \"DROP\",\n    outputPolicy: \"ACCEPT\",\n    forwardPolicy: \"ACCEPT\",\n    logRatelimit: {\n        enabled: false,\n        burst: 10,\n        rate: \"5/second\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.network.Firewall(\"example\",\n    enabled=False,\n    ebtables=False,\n    input_policy=\"DROP\",\n    output_policy=\"ACCEPT\",\n    forward_policy=\"ACCEPT\",\n    log_ratelimit={\n        \"enabled\": False,\n        \"burst\": 10,\n        \"rate\": \"5/second\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ProxmoxVE.Network.Firewall(\"example\", new()\n    {\n        Enabled = false,\n        Ebtables = false,\n        InputPolicy = \"DROP\",\n        OutputPolicy = \"ACCEPT\",\n        ForwardPolicy = \"ACCEPT\",\n        LogRatelimit = new ProxmoxVE.Network.Inputs.FirewallLogRatelimitArgs\n        {\n            Enabled = false,\n            Burst = 10,\n            Rate = \"5/second\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := network.NewFirewall(ctx, \"example\", \u0026network.FirewallArgs{\n\t\t\tEnabled:       pulumi.Bool(false),\n\t\t\tEbtables:      pulumi.Bool(false),\n\t\t\tInputPolicy:   pulumi.String(\"DROP\"),\n\t\t\tOutputPolicy:  pulumi.String(\"ACCEPT\"),\n\t\t\tForwardPolicy: pulumi.String(\"ACCEPT\"),\n\t\t\tLogRatelimit: \u0026network.FirewallLogRatelimitArgs{\n\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t\tBurst:   pulumi.Int(10),\n\t\t\t\tRate:    pulumi.String(\"5/second\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Network.Firewall;\nimport io.muehlbachler.pulumi.proxmoxve.Network.FirewallArgs;\nimport com.pulumi.proxmoxve.Network.inputs.FirewallLogRatelimitArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Firewall(\"example\", FirewallArgs.builder()\n            .enabled(false)\n            .ebtables(false)\n            .inputPolicy(\"DROP\")\n            .outputPolicy(\"ACCEPT\")\n            .forwardPolicy(\"ACCEPT\")\n            .logRatelimit(FirewallLogRatelimitArgs.builder()\n                .enabled(false)\n                .burst(10)\n                .rate(\"5/second\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:Network:Firewall\n    properties:\n      enabled: false\n      ebtables: false\n      inputPolicy: DROP\n      outputPolicy: ACCEPT\n      forwardPolicy: ACCEPT\n      logRatelimit:\n        enabled: false\n        burst: 10\n        rate: 5/second\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Important Notes\n\nBe careful not to use this resource multiple times for the same node.\n\n## Import\n\nInstances can be imported without an ID, but you still need to pass one, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Network/firewall:Firewall example example\n```\n\n","properties":{"ebtables":{"type":"boolean","description":"Enable ebtables rules cluster wide.\n"},"enabled":{"type":"boolean","description":"Enable or disable the firewall cluster wide.\n"},"forwardPolicy":{"type":"string","description":"The default forward policy (`ACCEPT`, `DROP`).\n"},"inputPolicy":{"type":"string","description":"The default input policy (`ACCEPT`, `DROP`, `REJECT`).\n"},"logRatelimit":{"$ref":"#/types/proxmoxve:Network/FirewallLogRatelimit:FirewallLogRatelimit","description":"The log rate limit.\n"},"outputPolicy":{"type":"string","description":"The default output policy (`ACCEPT`, `DROP`, `REJECT`).\n"}},"inputProperties":{"ebtables":{"type":"boolean","description":"Enable ebtables rules cluster wide.\n"},"enabled":{"type":"boolean","description":"Enable or disable the firewall cluster wide.\n"},"forwardPolicy":{"type":"string","description":"The default forward policy (`ACCEPT`, `DROP`).\n"},"inputPolicy":{"type":"string","description":"The default input policy (`ACCEPT`, `DROP`, `REJECT`).\n"},"logRatelimit":{"$ref":"#/types/proxmoxve:Network/FirewallLogRatelimit:FirewallLogRatelimit","description":"The log rate limit.\n"},"outputPolicy":{"type":"string","description":"The default output policy (`ACCEPT`, `DROP`, `REJECT`).\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering Firewall resources.\n","properties":{"ebtables":{"type":"boolean","description":"Enable ebtables rules cluster wide.\n"},"enabled":{"type":"boolean","description":"Enable or disable the firewall cluster wide.\n"},"forwardPolicy":{"type":"string","description":"The default forward policy (`ACCEPT`, `DROP`).\n"},"inputPolicy":{"type":"string","description":"The default input policy (`ACCEPT`, `DROP`, `REJECT`).\n"},"logRatelimit":{"$ref":"#/types/proxmoxve:Network/FirewallLogRatelimit:FirewallLogRatelimit","description":"The log rate limit.\n"},"outputPolicy":{"type":"string","description":"The default output policy (`ACCEPT`, `DROP`, `REJECT`).\n"}},"type":"object"}},"proxmoxve:Network/firewallAlias:FirewallAlias":{"description":"Aliases are used to see what devices or group of devices are affected by a rule.\nWe can create aliases to identify an IP address or a network. Aliases can be\ncreated on the cluster level, on VM / Container level.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst localNetwork = new proxmoxve.network.FirewallAlias(\"local_network\", {\n    nodeName: example.nodeName,\n    vmId: example.vmId,\n    name: \"local_network\",\n    cidr: \"192.168.0.0/23\",\n    comment: \"Managed by Pulumi\",\n}, {\n    dependsOn: [example],\n});\nconst ubuntuVm = new proxmoxve.network.FirewallAlias(\"ubuntu_vm\", {\n    name: \"ubuntu\",\n    cidr: \"192.168.0.1\",\n    comment: \"Managed by Pulumi\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nlocal_network = proxmoxve.network.FirewallAlias(\"local_network\",\n    node_name=example[\"nodeName\"],\n    vm_id=example[\"vmId\"],\n    name=\"local_network\",\n    cidr=\"192.168.0.0/23\",\n    comment=\"Managed by Pulumi\",\n    opts = pulumi.ResourceOptions(depends_on=[example]))\nubuntu_vm = proxmoxve.network.FirewallAlias(\"ubuntu_vm\",\n    name=\"ubuntu\",\n    cidr=\"192.168.0.1\",\n    comment=\"Managed by Pulumi\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var localNetwork = new ProxmoxVE.Network.FirewallAlias(\"local_network\", new()\n    {\n        NodeName = example.NodeName,\n        VmId = example.VmId,\n        Name = \"local_network\",\n        Cidr = \"192.168.0.0/23\",\n        Comment = \"Managed by Pulumi\",\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            example,\n        },\n    });\n\n    var ubuntuVm = new ProxmoxVE.Network.FirewallAlias(\"ubuntu_vm\", new()\n    {\n        Name = \"ubuntu\",\n        Cidr = \"192.168.0.1\",\n        Comment = \"Managed by Pulumi\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := network.NewFirewallAlias(ctx, \"local_network\", \u0026network.FirewallAliasArgs{\n\t\t\tNodeName: pulumi.Any(example.NodeName),\n\t\t\tVmId:     pulumi.Any(example.VmId),\n\t\t\tName:     pulumi.String(\"local_network\"),\n\t\t\tCidr:     pulumi.String(\"192.168.0.0/23\"),\n\t\t\tComment:  pulumi.String(\"Managed by Pulumi\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewFirewallAlias(ctx, \"ubuntu_vm\", \u0026network.FirewallAliasArgs{\n\t\t\tName:    pulumi.String(\"ubuntu\"),\n\t\t\tCidr:    pulumi.String(\"192.168.0.1\"),\n\t\t\tComment: pulumi.String(\"Managed by Pulumi\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Network.FirewallAlias;\nimport io.muehlbachler.pulumi.proxmoxve.Network.FirewallAliasArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var localNetwork = new FirewallAlias(\"localNetwork\", FirewallAliasArgs.builder()\n            .nodeName(example.nodeName())\n            .vmId(example.vmId())\n            .name(\"local_network\")\n            .cidr(\"192.168.0.0/23\")\n            .comment(\"Managed by Pulumi\")\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(example)\n                .build());\n\n        var ubuntuVm = new FirewallAlias(\"ubuntuVm\", FirewallAliasArgs.builder()\n            .name(\"ubuntu\")\n            .cidr(\"192.168.0.1\")\n            .comment(\"Managed by Pulumi\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  localNetwork:\n    type: proxmoxve:Network:FirewallAlias\n    name: local_network\n    properties:\n      nodeName: ${example.nodeName}\n      vmId: ${example.vmId}\n      name: local_network\n      cidr: 192.168.0.0/23\n      comment: Managed by Pulumi\n    options:\n      dependsOn:\n        - ${example}\n  ubuntuVm:\n    type: proxmoxve:Network:FirewallAlias\n    name: ubuntu_vm\n    properties:\n      name: ubuntu\n      cidr: 192.168.0.1\n      comment: Managed by Pulumi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"cidr":{"type":"string","description":"Network/IP specification in CIDR format.\n"},"comment":{"type":"string","description":"Alias comment.\n"},"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"name":{"type":"string","description":"Alias name.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level aliases.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level aliases.\n"}},"required":["cidr","name"],"inputProperties":{"cidr":{"type":"string","description":"Network/IP specification in CIDR format.\n"},"comment":{"type":"string","description":"Alias comment.\n"},"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"name":{"type":"string","description":"Alias name.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level aliases.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level aliases.\n"}},"requiredInputs":["cidr"],"stateInputs":{"description":"Input properties used for looking up and filtering FirewallAlias resources.\n","properties":{"cidr":{"type":"string","description":"Network/IP specification in CIDR format.\n"},"comment":{"type":"string","description":"Alias comment.\n"},"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"name":{"type":"string","description":"Alias name.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level aliases.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level aliases.\n"}},"type":"object"}},"proxmoxve:Network/firewallIPSet:FirewallIPSet":{"description":"An IPSet allows us to group multiple IP addresses, IP subnets and aliases. IPSets can be\ncreated on the cluster level, on VM / Container level.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst ipset = new proxmoxve.network.FirewallIPSet(\"ipset\", {\n    nodeName: example.nodeName,\n    vmId: example.vmId,\n    name: \"local_network\",\n    comment: \"Managed by Pulumi\",\n    cidrs: [\n        {\n            name: \"192.168.0.0/23\",\n            comment: \"Local network 1\",\n        },\n        {\n            name: \"192.168.0.1\",\n            comment: \"Server 1\",\n            nomatch: true,\n        },\n        {\n            name: \"192.168.2.1\",\n            comment: \"Server 1\",\n        },\n    ],\n}, {\n    dependsOn: [example],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nipset = proxmoxve.network.FirewallIPSet(\"ipset\",\n    node_name=example[\"nodeName\"],\n    vm_id=example[\"vmId\"],\n    name=\"local_network\",\n    comment=\"Managed by Pulumi\",\n    cidrs=[\n        {\n            \"name\": \"192.168.0.0/23\",\n            \"comment\": \"Local network 1\",\n        },\n        {\n            \"name\": \"192.168.0.1\",\n            \"comment\": \"Server 1\",\n            \"nomatch\": True,\n        },\n        {\n            \"name\": \"192.168.2.1\",\n            \"comment\": \"Server 1\",\n        },\n    ],\n    opts = pulumi.ResourceOptions(depends_on=[example]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ipset = new ProxmoxVE.Network.FirewallIPSet(\"ipset\", new()\n    {\n        NodeName = example.NodeName,\n        VmId = example.VmId,\n        Name = \"local_network\",\n        Comment = \"Managed by Pulumi\",\n        Cidrs = new[]\n        {\n            new ProxmoxVE.Network.Inputs.FirewallIPSetCidrArgs\n            {\n                Name = \"192.168.0.0/23\",\n                Comment = \"Local network 1\",\n            },\n            new ProxmoxVE.Network.Inputs.FirewallIPSetCidrArgs\n            {\n                Name = \"192.168.0.1\",\n                Comment = \"Server 1\",\n                Nomatch = true,\n            },\n            new ProxmoxVE.Network.Inputs.FirewallIPSetCidrArgs\n            {\n                Name = \"192.168.2.1\",\n                Comment = \"Server 1\",\n            },\n        },\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            example,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := network.NewFirewallIPSet(ctx, \"ipset\", \u0026network.FirewallIPSetArgs{\n\t\t\tNodeName: pulumi.Any(example.NodeName),\n\t\t\tVmId:     pulumi.Any(example.VmId),\n\t\t\tName:     pulumi.String(\"local_network\"),\n\t\t\tComment:  pulumi.String(\"Managed by Pulumi\"),\n\t\t\tCidrs: network.FirewallIPSetCidrArray{\n\t\t\t\t\u0026network.FirewallIPSetCidrArgs{\n\t\t\t\t\tName:    pulumi.String(\"192.168.0.0/23\"),\n\t\t\t\t\tComment: pulumi.String(\"Local network 1\"),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallIPSetCidrArgs{\n\t\t\t\t\tName:    pulumi.String(\"192.168.0.1\"),\n\t\t\t\t\tComment: pulumi.String(\"Server 1\"),\n\t\t\t\t\tNomatch: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallIPSetCidrArgs{\n\t\t\t\t\tName:    pulumi.String(\"192.168.2.1\"),\n\t\t\t\t\tComment: pulumi.String(\"Server 1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Network.FirewallIPSet;\nimport io.muehlbachler.pulumi.proxmoxve.Network.FirewallIPSetArgs;\nimport com.pulumi.proxmoxve.Network.inputs.FirewallIPSetCidrArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var ipset = new FirewallIPSet(\"ipset\", FirewallIPSetArgs.builder()\n            .nodeName(example.nodeName())\n            .vmId(example.vmId())\n            .name(\"local_network\")\n            .comment(\"Managed by Pulumi\")\n            .cidrs(            \n                FirewallIPSetCidrArgs.builder()\n                    .name(\"192.168.0.0/23\")\n                    .comment(\"Local network 1\")\n                    .build(),\n                FirewallIPSetCidrArgs.builder()\n                    .name(\"192.168.0.1\")\n                    .comment(\"Server 1\")\n                    .nomatch(true)\n                    .build(),\n                FirewallIPSetCidrArgs.builder()\n                    .name(\"192.168.2.1\")\n                    .comment(\"Server 1\")\n                    .build())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(example)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ipset:\n    type: proxmoxve:Network:FirewallIPSet\n    properties:\n      nodeName: ${example.nodeName}\n      vmId: ${example.vmId}\n      name: local_network\n      comment: Managed by Pulumi\n      cidrs:\n        - name: 192.168.0.0/23\n          comment: Local network 1\n        - name: 192.168.0.1\n          comment: Server 1\n          nomatch: true\n        - name: 192.168.2.1\n          comment: Server 1\n    options:\n      dependsOn:\n        - ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Container IPSet\n\nUse the import ID format: `container/\u003cnode_name\u003e/\u003ccontainer_id\u003e/\u003cipset_name\u003e`\n\nExample uses node name `pve` and container ID `100` and ipset name `local_network`.\n\n**Example:**\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Network/firewallIPSet:FirewallIPSet container_ipset container/pve/100/local_network\n```\n\n","properties":{"cidrs":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallIPSetCidr:FirewallIPSetCidr"},"description":"IP/CIDR block (multiple blocks supported).\n"},"comment":{"type":"string","description":"IPSet comment.\n"},"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level ipsets.\n"},"name":{"type":"string","description":"IPSet name.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level ipsets.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level ipsets.\n"}},"required":["name"],"inputProperties":{"cidrs":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallIPSetCidr:FirewallIPSetCidr"},"description":"IP/CIDR block (multiple blocks supported).\n","willReplaceOnChanges":true},"comment":{"type":"string","description":"IPSet comment.\n"},"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level ipsets.\n"},"name":{"type":"string","description":"IPSet name.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level ipsets.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level ipsets.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering FirewallIPSet resources.\n","properties":{"cidrs":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallIPSetCidr:FirewallIPSetCidr"},"description":"IP/CIDR block (multiple blocks supported).\n","willReplaceOnChanges":true},"comment":{"type":"string","description":"IPSet comment.\n"},"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level ipsets.\n"},"name":{"type":"string","description":"IPSet name.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level ipsets.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level ipsets.\n"}},"type":"object"}},"proxmoxve:Network/firewallOptions:FirewallOptions":{"description":"Manages firewall options on VM / Container level.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.network.FirewallOptions(\"example\", {\n    nodeName: exampleProxmoxVirtualEnvironmentVm.nodeName,\n    vmId: exampleProxmoxVirtualEnvironmentVm.vmId,\n    dhcp: true,\n    enabled: false,\n    ipfilter: true,\n    logLevelIn: \"info\",\n    logLevelOut: \"info\",\n    macfilter: false,\n    ndp: true,\n    inputPolicy: \"ACCEPT\",\n    outputPolicy: \"ACCEPT\",\n    radv: true,\n}, {\n    dependsOn: [exampleProxmoxVirtualEnvironmentVm],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.network.FirewallOptions(\"example\",\n    node_name=example_proxmox_virtual_environment_vm[\"nodeName\"],\n    vm_id=example_proxmox_virtual_environment_vm[\"vmId\"],\n    dhcp=True,\n    enabled=False,\n    ipfilter=True,\n    log_level_in=\"info\",\n    log_level_out=\"info\",\n    macfilter=False,\n    ndp=True,\n    input_policy=\"ACCEPT\",\n    output_policy=\"ACCEPT\",\n    radv=True,\n    opts = pulumi.ResourceOptions(depends_on=[example_proxmox_virtual_environment_vm]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ProxmoxVE.Network.FirewallOptions(\"example\", new()\n    {\n        NodeName = exampleProxmoxVirtualEnvironmentVm.NodeName,\n        VmId = exampleProxmoxVirtualEnvironmentVm.VmId,\n        Dhcp = true,\n        Enabled = false,\n        Ipfilter = true,\n        LogLevelIn = \"info\",\n        LogLevelOut = \"info\",\n        Macfilter = false,\n        Ndp = true,\n        InputPolicy = \"ACCEPT\",\n        OutputPolicy = \"ACCEPT\",\n        Radv = true,\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            exampleProxmoxVirtualEnvironmentVm,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := network.NewFirewallOptions(ctx, \"example\", \u0026network.FirewallOptionsArgs{\n\t\t\tNodeName:     pulumi.Any(exampleProxmoxVirtualEnvironmentVm.NodeName),\n\t\t\tVmId:         pulumi.Any(exampleProxmoxVirtualEnvironmentVm.VmId),\n\t\t\tDhcp:         pulumi.Bool(true),\n\t\t\tEnabled:      pulumi.Bool(false),\n\t\t\tIpfilter:     pulumi.Bool(true),\n\t\t\tLogLevelIn:   pulumi.String(\"info\"),\n\t\t\tLogLevelOut:  pulumi.String(\"info\"),\n\t\t\tMacfilter:    pulumi.Bool(false),\n\t\t\tNdp:          pulumi.Bool(true),\n\t\t\tInputPolicy:  pulumi.String(\"ACCEPT\"),\n\t\t\tOutputPolicy: pulumi.String(\"ACCEPT\"),\n\t\t\tRadv:         pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texampleProxmoxVirtualEnvironmentVm,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Network.FirewallOptions;\nimport io.muehlbachler.pulumi.proxmoxve.Network.FirewallOptionsArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new FirewallOptions(\"example\", FirewallOptionsArgs.builder()\n            .nodeName(exampleProxmoxVirtualEnvironmentVm.nodeName())\n            .vmId(exampleProxmoxVirtualEnvironmentVm.vmId())\n            .dhcp(true)\n            .enabled(false)\n            .ipfilter(true)\n            .logLevelIn(\"info\")\n            .logLevelOut(\"info\")\n            .macfilter(false)\n            .ndp(true)\n            .inputPolicy(\"ACCEPT\")\n            .outputPolicy(\"ACCEPT\")\n            .radv(true)\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(exampleProxmoxVirtualEnvironmentVm)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:Network:FirewallOptions\n    properties:\n      nodeName: ${exampleProxmoxVirtualEnvironmentVm.nodeName}\n      vmId: ${exampleProxmoxVirtualEnvironmentVm.vmId}\n      dhcp: true\n      enabled: false\n      ipfilter: true\n      logLevelIn: info\n      logLevelOut: info\n      macfilter: false\n      ndp: true\n      inputPolicy: ACCEPT\n      outputPolicy: ACCEPT\n      radv: true\n    options:\n      dependsOn:\n        - ${exampleProxmoxVirtualEnvironmentVm}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Container Firewall Options\n\nUse the import ID format: `container/\u003cnode_name\u003e/\u003ccontainer_id\u003e`\n\nExample uses node name `pve` and container ID `100`.\n\n**Example:**\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Network/firewallOptions:FirewallOptions container_firewall_options container/pve/100\n```\n\n","properties":{"containerId":{"type":"integer","description":"Container ID. **Exactly one of \u003cspan pulumi-lang-nodejs=\"`vmId`\" pulumi-lang-dotnet=\"`VmId`\" pulumi-lang-go=\"`vmId`\" pulumi-lang-python=\"`vm_id`\" pulumi-lang-yaml=\"`vmId`\" pulumi-lang-java=\"`vmId`\"\u003e`vm_id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`containerId`\" pulumi-lang-dotnet=\"`ContainerId`\" pulumi-lang-go=\"`containerId`\" pulumi-lang-python=\"`container_id`\" pulumi-lang-yaml=\"`containerId`\" pulumi-lang-java=\"`containerId`\"\u003e`container_id`\u003c/span\u003e must be specified.**\n"},"dhcp":{"type":"boolean","description":"Enable DHCP.\n"},"enabled":{"type":"boolean","description":"Enable or disable the firewall.\n"},"inputPolicy":{"type":"string","description":"The default input\npolicy (`ACCEPT`, `DROP`, `REJECT`).\n"},"ipfilter":{"type":"boolean","description":"Enable default IP filters. This is equivalent to\nadding an empty `ipfilter-net\u003cid\u003e` ipset for every interface. Such ipsets\nimplicitly contain sane default restrictions such as restricting IPv6 link\nlocal addresses to the one derived from the interface's MAC address. For\ncontainers the configured IP addresses will be implicitly added.\n"},"logLevelIn":{"type":"string","description":"Log level for incoming\npackets (\u003cspan pulumi-lang-nodejs=\"`emerg`\" pulumi-lang-dotnet=\"`Emerg`\" pulumi-lang-go=\"`emerg`\" pulumi-lang-python=\"`emerg`\" pulumi-lang-yaml=\"`emerg`\" pulumi-lang-java=\"`emerg`\"\u003e`emerg`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`alert`\" pulumi-lang-dotnet=\"`Alert`\" pulumi-lang-go=\"`alert`\" pulumi-lang-python=\"`alert`\" pulumi-lang-yaml=\"`alert`\" pulumi-lang-java=\"`alert`\"\u003e`alert`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`crit`\" pulumi-lang-dotnet=\"`Crit`\" pulumi-lang-go=\"`crit`\" pulumi-lang-python=\"`crit`\" pulumi-lang-yaml=\"`crit`\" pulumi-lang-java=\"`crit`\"\u003e`crit`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`err`\" pulumi-lang-dotnet=\"`Err`\" pulumi-lang-go=\"`err`\" pulumi-lang-python=\"`err`\" pulumi-lang-yaml=\"`err`\" pulumi-lang-java=\"`err`\"\u003e`err`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`warning`\" pulumi-lang-dotnet=\"`Warning`\" pulumi-lang-go=\"`warning`\" pulumi-lang-python=\"`warning`\" pulumi-lang-yaml=\"`warning`\" pulumi-lang-java=\"`warning`\"\u003e`warning`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`notice`\" pulumi-lang-dotnet=\"`Notice`\" pulumi-lang-go=\"`notice`\" pulumi-lang-python=\"`notice`\" pulumi-lang-yaml=\"`notice`\" pulumi-lang-java=\"`notice`\"\u003e`notice`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e).\n"},"logLevelOut":{"type":"string","description":"Log level for outgoing\npackets (\u003cspan pulumi-lang-nodejs=\"`emerg`\" pulumi-lang-dotnet=\"`Emerg`\" pulumi-lang-go=\"`emerg`\" pulumi-lang-python=\"`emerg`\" pulumi-lang-yaml=\"`emerg`\" pulumi-lang-java=\"`emerg`\"\u003e`emerg`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`alert`\" pulumi-lang-dotnet=\"`Alert`\" pulumi-lang-go=\"`alert`\" pulumi-lang-python=\"`alert`\" pulumi-lang-yaml=\"`alert`\" pulumi-lang-java=\"`alert`\"\u003e`alert`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`crit`\" pulumi-lang-dotnet=\"`Crit`\" pulumi-lang-go=\"`crit`\" pulumi-lang-python=\"`crit`\" pulumi-lang-yaml=\"`crit`\" pulumi-lang-java=\"`crit`\"\u003e`crit`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`err`\" pulumi-lang-dotnet=\"`Err`\" pulumi-lang-go=\"`err`\" pulumi-lang-python=\"`err`\" pulumi-lang-yaml=\"`err`\" pulumi-lang-java=\"`err`\"\u003e`err`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`warning`\" pulumi-lang-dotnet=\"`Warning`\" pulumi-lang-go=\"`warning`\" pulumi-lang-python=\"`warning`\" pulumi-lang-yaml=\"`warning`\" pulumi-lang-java=\"`warning`\"\u003e`warning`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`notice`\" pulumi-lang-dotnet=\"`Notice`\" pulumi-lang-go=\"`notice`\" pulumi-lang-python=\"`notice`\" pulumi-lang-yaml=\"`notice`\" pulumi-lang-java=\"`notice`\"\u003e`notice`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e).\n"},"macfilter":{"type":"boolean","description":"Enable/disable MAC address filter.\n"},"ndp":{"type":"boolean","description":"Enable NDP (Neighbor Discovery Protocol).\n"},"nodeName":{"type":"string","description":"Node name.\n"},"outputPolicy":{"type":"string","description":"The default output\npolicy (`ACCEPT`, `DROP`, `REJECT`).\n"},"radv":{"type":"boolean","description":"Enable Router Advertisement.\n"},"vmId":{"type":"integer","description":"VM ID. **Exactly one of \u003cspan pulumi-lang-nodejs=\"`vmId`\" pulumi-lang-dotnet=\"`VmId`\" pulumi-lang-go=\"`vmId`\" pulumi-lang-python=\"`vm_id`\" pulumi-lang-yaml=\"`vmId`\" pulumi-lang-java=\"`vmId`\"\u003e`vm_id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`containerId`\" pulumi-lang-dotnet=\"`ContainerId`\" pulumi-lang-go=\"`containerId`\" pulumi-lang-python=\"`container_id`\" pulumi-lang-yaml=\"`containerId`\" pulumi-lang-java=\"`containerId`\"\u003e`container_id`\u003c/span\u003e must be specified.**\n"}},"required":["nodeName"],"inputProperties":{"containerId":{"type":"integer","description":"Container ID. **Exactly one of \u003cspan pulumi-lang-nodejs=\"`vmId`\" pulumi-lang-dotnet=\"`VmId`\" pulumi-lang-go=\"`vmId`\" pulumi-lang-python=\"`vm_id`\" pulumi-lang-yaml=\"`vmId`\" pulumi-lang-java=\"`vmId`\"\u003e`vm_id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`containerId`\" pulumi-lang-dotnet=\"`ContainerId`\" pulumi-lang-go=\"`containerId`\" pulumi-lang-python=\"`container_id`\" pulumi-lang-yaml=\"`containerId`\" pulumi-lang-java=\"`containerId`\"\u003e`container_id`\u003c/span\u003e must be specified.**\n"},"dhcp":{"type":"boolean","description":"Enable DHCP.\n"},"enabled":{"type":"boolean","description":"Enable or disable the firewall.\n"},"inputPolicy":{"type":"string","description":"The default input\npolicy (`ACCEPT`, `DROP`, `REJECT`).\n"},"ipfilter":{"type":"boolean","description":"Enable default IP filters. This is equivalent to\nadding an empty `ipfilter-net\u003cid\u003e` ipset for every interface. Such ipsets\nimplicitly contain sane default restrictions such as restricting IPv6 link\nlocal addresses to the one derived from the interface's MAC address. For\ncontainers the configured IP addresses will be implicitly added.\n"},"logLevelIn":{"type":"string","description":"Log level for incoming\npackets (\u003cspan pulumi-lang-nodejs=\"`emerg`\" pulumi-lang-dotnet=\"`Emerg`\" pulumi-lang-go=\"`emerg`\" pulumi-lang-python=\"`emerg`\" pulumi-lang-yaml=\"`emerg`\" pulumi-lang-java=\"`emerg`\"\u003e`emerg`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`alert`\" pulumi-lang-dotnet=\"`Alert`\" pulumi-lang-go=\"`alert`\" pulumi-lang-python=\"`alert`\" pulumi-lang-yaml=\"`alert`\" pulumi-lang-java=\"`alert`\"\u003e`alert`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`crit`\" pulumi-lang-dotnet=\"`Crit`\" pulumi-lang-go=\"`crit`\" pulumi-lang-python=\"`crit`\" pulumi-lang-yaml=\"`crit`\" pulumi-lang-java=\"`crit`\"\u003e`crit`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`err`\" pulumi-lang-dotnet=\"`Err`\" pulumi-lang-go=\"`err`\" pulumi-lang-python=\"`err`\" pulumi-lang-yaml=\"`err`\" pulumi-lang-java=\"`err`\"\u003e`err`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`warning`\" pulumi-lang-dotnet=\"`Warning`\" pulumi-lang-go=\"`warning`\" pulumi-lang-python=\"`warning`\" pulumi-lang-yaml=\"`warning`\" pulumi-lang-java=\"`warning`\"\u003e`warning`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`notice`\" pulumi-lang-dotnet=\"`Notice`\" pulumi-lang-go=\"`notice`\" pulumi-lang-python=\"`notice`\" pulumi-lang-yaml=\"`notice`\" pulumi-lang-java=\"`notice`\"\u003e`notice`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e).\n"},"logLevelOut":{"type":"string","description":"Log level for outgoing\npackets (\u003cspan pulumi-lang-nodejs=\"`emerg`\" pulumi-lang-dotnet=\"`Emerg`\" pulumi-lang-go=\"`emerg`\" pulumi-lang-python=\"`emerg`\" pulumi-lang-yaml=\"`emerg`\" pulumi-lang-java=\"`emerg`\"\u003e`emerg`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`alert`\" pulumi-lang-dotnet=\"`Alert`\" pulumi-lang-go=\"`alert`\" pulumi-lang-python=\"`alert`\" pulumi-lang-yaml=\"`alert`\" pulumi-lang-java=\"`alert`\"\u003e`alert`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`crit`\" pulumi-lang-dotnet=\"`Crit`\" pulumi-lang-go=\"`crit`\" pulumi-lang-python=\"`crit`\" pulumi-lang-yaml=\"`crit`\" pulumi-lang-java=\"`crit`\"\u003e`crit`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`err`\" pulumi-lang-dotnet=\"`Err`\" pulumi-lang-go=\"`err`\" pulumi-lang-python=\"`err`\" pulumi-lang-yaml=\"`err`\" pulumi-lang-java=\"`err`\"\u003e`err`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`warning`\" pulumi-lang-dotnet=\"`Warning`\" pulumi-lang-go=\"`warning`\" pulumi-lang-python=\"`warning`\" pulumi-lang-yaml=\"`warning`\" pulumi-lang-java=\"`warning`\"\u003e`warning`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`notice`\" pulumi-lang-dotnet=\"`Notice`\" pulumi-lang-go=\"`notice`\" pulumi-lang-python=\"`notice`\" pulumi-lang-yaml=\"`notice`\" pulumi-lang-java=\"`notice`\"\u003e`notice`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e).\n"},"macfilter":{"type":"boolean","description":"Enable/disable MAC address filter.\n"},"ndp":{"type":"boolean","description":"Enable NDP (Neighbor Discovery Protocol).\n"},"nodeName":{"type":"string","description":"Node name.\n"},"outputPolicy":{"type":"string","description":"The default output\npolicy (`ACCEPT`, `DROP`, `REJECT`).\n"},"radv":{"type":"boolean","description":"Enable Router Advertisement.\n"},"vmId":{"type":"integer","description":"VM ID. **Exactly one of \u003cspan pulumi-lang-nodejs=\"`vmId`\" pulumi-lang-dotnet=\"`VmId`\" pulumi-lang-go=\"`vmId`\" pulumi-lang-python=\"`vm_id`\" pulumi-lang-yaml=\"`vmId`\" pulumi-lang-java=\"`vmId`\"\u003e`vm_id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`containerId`\" pulumi-lang-dotnet=\"`ContainerId`\" pulumi-lang-go=\"`containerId`\" pulumi-lang-python=\"`container_id`\" pulumi-lang-yaml=\"`containerId`\" pulumi-lang-java=\"`containerId`\"\u003e`container_id`\u003c/span\u003e must be specified.**\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering FirewallOptions resources.\n","properties":{"containerId":{"type":"integer","description":"Container ID. **Exactly one of \u003cspan pulumi-lang-nodejs=\"`vmId`\" pulumi-lang-dotnet=\"`VmId`\" pulumi-lang-go=\"`vmId`\" pulumi-lang-python=\"`vm_id`\" pulumi-lang-yaml=\"`vmId`\" pulumi-lang-java=\"`vmId`\"\u003e`vm_id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`containerId`\" pulumi-lang-dotnet=\"`ContainerId`\" pulumi-lang-go=\"`containerId`\" pulumi-lang-python=\"`container_id`\" pulumi-lang-yaml=\"`containerId`\" pulumi-lang-java=\"`containerId`\"\u003e`container_id`\u003c/span\u003e must be specified.**\n"},"dhcp":{"type":"boolean","description":"Enable DHCP.\n"},"enabled":{"type":"boolean","description":"Enable or disable the firewall.\n"},"inputPolicy":{"type":"string","description":"The default input\npolicy (`ACCEPT`, `DROP`, `REJECT`).\n"},"ipfilter":{"type":"boolean","description":"Enable default IP filters. This is equivalent to\nadding an empty `ipfilter-net\u003cid\u003e` ipset for every interface. Such ipsets\nimplicitly contain sane default restrictions such as restricting IPv6 link\nlocal addresses to the one derived from the interface's MAC address. For\ncontainers the configured IP addresses will be implicitly added.\n"},"logLevelIn":{"type":"string","description":"Log level for incoming\npackets (\u003cspan pulumi-lang-nodejs=\"`emerg`\" pulumi-lang-dotnet=\"`Emerg`\" pulumi-lang-go=\"`emerg`\" pulumi-lang-python=\"`emerg`\" pulumi-lang-yaml=\"`emerg`\" pulumi-lang-java=\"`emerg`\"\u003e`emerg`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`alert`\" pulumi-lang-dotnet=\"`Alert`\" pulumi-lang-go=\"`alert`\" pulumi-lang-python=\"`alert`\" pulumi-lang-yaml=\"`alert`\" pulumi-lang-java=\"`alert`\"\u003e`alert`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`crit`\" pulumi-lang-dotnet=\"`Crit`\" pulumi-lang-go=\"`crit`\" pulumi-lang-python=\"`crit`\" pulumi-lang-yaml=\"`crit`\" pulumi-lang-java=\"`crit`\"\u003e`crit`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`err`\" pulumi-lang-dotnet=\"`Err`\" pulumi-lang-go=\"`err`\" pulumi-lang-python=\"`err`\" pulumi-lang-yaml=\"`err`\" pulumi-lang-java=\"`err`\"\u003e`err`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`warning`\" pulumi-lang-dotnet=\"`Warning`\" pulumi-lang-go=\"`warning`\" pulumi-lang-python=\"`warning`\" pulumi-lang-yaml=\"`warning`\" pulumi-lang-java=\"`warning`\"\u003e`warning`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`notice`\" pulumi-lang-dotnet=\"`Notice`\" pulumi-lang-go=\"`notice`\" pulumi-lang-python=\"`notice`\" pulumi-lang-yaml=\"`notice`\" pulumi-lang-java=\"`notice`\"\u003e`notice`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e).\n"},"logLevelOut":{"type":"string","description":"Log level for outgoing\npackets (\u003cspan pulumi-lang-nodejs=\"`emerg`\" pulumi-lang-dotnet=\"`Emerg`\" pulumi-lang-go=\"`emerg`\" pulumi-lang-python=\"`emerg`\" pulumi-lang-yaml=\"`emerg`\" pulumi-lang-java=\"`emerg`\"\u003e`emerg`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`alert`\" pulumi-lang-dotnet=\"`Alert`\" pulumi-lang-go=\"`alert`\" pulumi-lang-python=\"`alert`\" pulumi-lang-yaml=\"`alert`\" pulumi-lang-java=\"`alert`\"\u003e`alert`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`crit`\" pulumi-lang-dotnet=\"`Crit`\" pulumi-lang-go=\"`crit`\" pulumi-lang-python=\"`crit`\" pulumi-lang-yaml=\"`crit`\" pulumi-lang-java=\"`crit`\"\u003e`crit`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`err`\" pulumi-lang-dotnet=\"`Err`\" pulumi-lang-go=\"`err`\" pulumi-lang-python=\"`err`\" pulumi-lang-yaml=\"`err`\" pulumi-lang-java=\"`err`\"\u003e`err`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`warning`\" pulumi-lang-dotnet=\"`Warning`\" pulumi-lang-go=\"`warning`\" pulumi-lang-python=\"`warning`\" pulumi-lang-yaml=\"`warning`\" pulumi-lang-java=\"`warning`\"\u003e`warning`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`notice`\" pulumi-lang-dotnet=\"`Notice`\" pulumi-lang-go=\"`notice`\" pulumi-lang-python=\"`notice`\" pulumi-lang-yaml=\"`notice`\" pulumi-lang-java=\"`notice`\"\u003e`notice`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e).\n"},"macfilter":{"type":"boolean","description":"Enable/disable MAC address filter.\n"},"ndp":{"type":"boolean","description":"Enable NDP (Neighbor Discovery Protocol).\n"},"nodeName":{"type":"string","description":"Node name.\n"},"outputPolicy":{"type":"string","description":"The default output\npolicy (`ACCEPT`, `DROP`, `REJECT`).\n"},"radv":{"type":"boolean","description":"Enable Router Advertisement.\n"},"vmId":{"type":"integer","description":"VM ID. **Exactly one of \u003cspan pulumi-lang-nodejs=\"`vmId`\" pulumi-lang-dotnet=\"`VmId`\" pulumi-lang-go=\"`vmId`\" pulumi-lang-python=\"`vm_id`\" pulumi-lang-yaml=\"`vmId`\" pulumi-lang-java=\"`vmId`\"\u003e`vm_id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`containerId`\" pulumi-lang-dotnet=\"`ContainerId`\" pulumi-lang-go=\"`containerId`\" pulumi-lang-python=\"`container_id`\" pulumi-lang-yaml=\"`containerId`\" pulumi-lang-java=\"`containerId`\"\u003e`container_id`\u003c/span\u003e must be specified.**\n"}},"type":"object"}},"proxmoxve:Network/firewallRules:FirewallRules":{"description":"Manages cluster-level, node-level or VM/container-level firewall rules.\n\n\u003e Before creating a new \u003cspan pulumi-lang-nodejs=\"`proxmoxve.Network.FirewallRules`\" pulumi-lang-dotnet=\"`proxmoxve.Network.FirewallRules`\" pulumi-lang-go=\"`Network.FirewallRules`\" pulumi-lang-python=\"`Network.FirewallRules`\" pulumi-lang-yaml=\"`proxmoxve.Network.FirewallRules`\" pulumi-lang-java=\"`proxmoxve.Network.FirewallRules`\"\u003e`proxmoxve.Network.FirewallRules`\u003c/span\u003e resource, verify that no rules already exist for the target (cluster, node, VM, or container). If rules are already configured, import them first using the appropriate import command.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst inbound = new proxmoxve.network.FirewallRules(\"inbound\", {\n    nodeName: example.nodeName,\n    vmId: example.vmId,\n    rules: [\n        {\n            type: \"in\",\n            action: \"ACCEPT\",\n            comment: \"Allow HTTP\",\n            dest: \"192.168.1.5\",\n            dport: \"80\",\n            proto: \"tcp\",\n            log: \"info\",\n        },\n        {\n            type: \"in\",\n            action: \"ACCEPT\",\n            comment: \"Allow HTTPS\",\n            dest: \"192.168.1.5\",\n            dport: \"443\",\n            proto: \"tcp\",\n            log: \"info\",\n        },\n        {\n            securityGroup: exampleProxmoxVirtualEnvironmentClusterFirewallSecurityGroup.name,\n            comment: \"From security group\",\n            iface: \"net0\",\n        },\n    ],\n}, {\n    dependsOn: [\n        example,\n        exampleProxmoxVirtualEnvironmentClusterFirewallSecurityGroup,\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\ninbound = proxmoxve.network.FirewallRules(\"inbound\",\n    node_name=example[\"nodeName\"],\n    vm_id=example[\"vmId\"],\n    rules=[\n        {\n            \"type\": \"in\",\n            \"action\": \"ACCEPT\",\n            \"comment\": \"Allow HTTP\",\n            \"dest\": \"192.168.1.5\",\n            \"dport\": \"80\",\n            \"proto\": \"tcp\",\n            \"log\": \"info\",\n        },\n        {\n            \"type\": \"in\",\n            \"action\": \"ACCEPT\",\n            \"comment\": \"Allow HTTPS\",\n            \"dest\": \"192.168.1.5\",\n            \"dport\": \"443\",\n            \"proto\": \"tcp\",\n            \"log\": \"info\",\n        },\n        {\n            \"security_group\": example_proxmox_virtual_environment_cluster_firewall_security_group[\"name\"],\n            \"comment\": \"From security group\",\n            \"iface\": \"net0\",\n        },\n    ],\n    opts = pulumi.ResourceOptions(depends_on=[\n            example,\n            example_proxmox_virtual_environment_cluster_firewall_security_group,\n        ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var inbound = new ProxmoxVE.Network.FirewallRules(\"inbound\", new()\n    {\n        NodeName = example.NodeName,\n        VmId = example.VmId,\n        Rules = new[]\n        {\n            new ProxmoxVE.Network.Inputs.FirewallRulesRuleArgs\n            {\n                Type = \"in\",\n                Action = \"ACCEPT\",\n                Comment = \"Allow HTTP\",\n                Dest = \"192.168.1.5\",\n                Dport = \"80\",\n                Proto = \"tcp\",\n                Log = \"info\",\n            },\n            new ProxmoxVE.Network.Inputs.FirewallRulesRuleArgs\n            {\n                Type = \"in\",\n                Action = \"ACCEPT\",\n                Comment = \"Allow HTTPS\",\n                Dest = \"192.168.1.5\",\n                Dport = \"443\",\n                Proto = \"tcp\",\n                Log = \"info\",\n            },\n            new ProxmoxVE.Network.Inputs.FirewallRulesRuleArgs\n            {\n                SecurityGroup = exampleProxmoxVirtualEnvironmentClusterFirewallSecurityGroup.Name,\n                Comment = \"From security group\",\n                Iface = \"net0\",\n            },\n        },\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            example,\n            exampleProxmoxVirtualEnvironmentClusterFirewallSecurityGroup,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := network.NewFirewallRules(ctx, \"inbound\", \u0026network.FirewallRulesArgs{\n\t\t\tNodeName: pulumi.Any(example.NodeName),\n\t\t\tVmId:     pulumi.Any(example.VmId),\n\t\t\tRules: network.FirewallRulesRuleArray{\n\t\t\t\t\u0026network.FirewallRulesRuleArgs{\n\t\t\t\t\tType:    pulumi.String(\"in\"),\n\t\t\t\t\tAction:  pulumi.String(\"ACCEPT\"),\n\t\t\t\t\tComment: pulumi.String(\"Allow HTTP\"),\n\t\t\t\t\tDest:    pulumi.String(\"192.168.1.5\"),\n\t\t\t\t\tDport:   pulumi.String(\"80\"),\n\t\t\t\t\tProto:   pulumi.String(\"tcp\"),\n\t\t\t\t\tLog:     pulumi.String(\"info\"),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallRulesRuleArgs{\n\t\t\t\t\tType:    pulumi.String(\"in\"),\n\t\t\t\t\tAction:  pulumi.String(\"ACCEPT\"),\n\t\t\t\t\tComment: pulumi.String(\"Allow HTTPS\"),\n\t\t\t\t\tDest:    pulumi.String(\"192.168.1.5\"),\n\t\t\t\t\tDport:   pulumi.String(\"443\"),\n\t\t\t\t\tProto:   pulumi.String(\"tcp\"),\n\t\t\t\t\tLog:     pulumi.String(\"info\"),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallRulesRuleArgs{\n\t\t\t\t\tSecurityGroup: pulumi.Any(exampleProxmoxVirtualEnvironmentClusterFirewallSecurityGroup.Name),\n\t\t\t\t\tComment:       pulumi.String(\"From security group\"),\n\t\t\t\t\tIface:         pulumi.String(\"net0\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample,\n\t\t\texampleProxmoxVirtualEnvironmentClusterFirewallSecurityGroup,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Network.FirewallRules;\nimport io.muehlbachler.pulumi.proxmoxve.Network.FirewallRulesArgs;\nimport com.pulumi.proxmoxve.Network.inputs.FirewallRulesRuleArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var inbound = new FirewallRules(\"inbound\", FirewallRulesArgs.builder()\n            .nodeName(example.nodeName())\n            .vmId(example.vmId())\n            .rules(            \n                FirewallRulesRuleArgs.builder()\n                    .type(\"in\")\n                    .action(\"ACCEPT\")\n                    .comment(\"Allow HTTP\")\n                    .dest(\"192.168.1.5\")\n                    .dport(\"80\")\n                    .proto(\"tcp\")\n                    .log(\"info\")\n                    .build(),\n                FirewallRulesRuleArgs.builder()\n                    .type(\"in\")\n                    .action(\"ACCEPT\")\n                    .comment(\"Allow HTTPS\")\n                    .dest(\"192.168.1.5\")\n                    .dport(\"443\")\n                    .proto(\"tcp\")\n                    .log(\"info\")\n                    .build(),\n                FirewallRulesRuleArgs.builder()\n                    .securityGroup(exampleProxmoxVirtualEnvironmentClusterFirewallSecurityGroup.name())\n                    .comment(\"From security group\")\n                    .iface(\"net0\")\n                    .build())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(                \n                    example,\n                    exampleProxmoxVirtualEnvironmentClusterFirewallSecurityGroup)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  inbound:\n    type: proxmoxve:Network:FirewallRules\n    properties:\n      nodeName: ${example.nodeName}\n      vmId: ${example.vmId}\n      rules:\n        - type: in\n          action: ACCEPT\n          comment: Allow HTTP\n          dest: 192.168.1.5\n          dport: '80'\n          proto: tcp\n          log: info\n        - type: in\n          action: ACCEPT\n          comment: Allow HTTPS\n          dest: 192.168.1.5\n          dport: '443'\n          proto: tcp\n          log: info\n        - securityGroup: ${exampleProxmoxVirtualEnvironmentClusterFirewallSecurityGroup.name}\n          comment: From security group\n          iface: net0\n    options:\n      dependsOn:\n        - ${example}\n        - ${exampleProxmoxVirtualEnvironmentClusterFirewallSecurityGroup}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Container Rules\n\nUse the import ID format: `container/\u003cnode_name\u003e/\u003ccontainer_id\u003e`\n\nExample uses node name `pve` and container ID `100`.\n\n**Example:**\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Network/firewallRules:FirewallRules container_rules container/pve/100\n```\n\n","properties":{"containerId":{"type":"integer","description":"Container ID. Leave empty for node/cluster level rules.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level rules.\n"},"rules":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallRulesRule:FirewallRulesRule"},"description":"Firewall rule block (multiple blocks supported).\nThe provider supports two types of the \u003cspan pulumi-lang-nodejs=\"`rule`\" pulumi-lang-dotnet=\"`Rule`\" pulumi-lang-go=\"`rule`\" pulumi-lang-python=\"`rule`\" pulumi-lang-yaml=\"`rule`\" pulumi-lang-java=\"`rule`\"\u003e`rule`\u003c/span\u003e blocks:\n- A rule definition block, which includes the following arguments:\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for node/cluster level rules.\n"}},"inputProperties":{"containerId":{"type":"integer","description":"Container ID. Leave empty for node/cluster level rules.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level rules.\n"},"rules":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallRulesRule:FirewallRulesRule"},"description":"Firewall rule block (multiple blocks supported).\nThe provider supports two types of the \u003cspan pulumi-lang-nodejs=\"`rule`\" pulumi-lang-dotnet=\"`Rule`\" pulumi-lang-go=\"`rule`\" pulumi-lang-python=\"`rule`\" pulumi-lang-yaml=\"`rule`\" pulumi-lang-java=\"`rule`\"\u003e`rule`\u003c/span\u003e blocks:\n- A rule definition block, which includes the following arguments:\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for node/cluster level rules.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering FirewallRules resources.\n","properties":{"containerId":{"type":"integer","description":"Container ID. Leave empty for node/cluster level rules.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level rules.\n"},"rules":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallRulesRule:FirewallRulesRule"},"description":"Firewall rule block (multiple blocks supported).\nThe provider supports two types of the \u003cspan pulumi-lang-nodejs=\"`rule`\" pulumi-lang-dotnet=\"`Rule`\" pulumi-lang-go=\"`rule`\" pulumi-lang-python=\"`rule`\" pulumi-lang-yaml=\"`rule`\" pulumi-lang-java=\"`rule`\"\u003e`rule`\u003c/span\u003e blocks:\n- A rule definition block, which includes the following arguments:\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for node/cluster level rules.\n"}},"type":"object"}},"proxmoxve:Network/firewallSecurityGroup:FirewallSecurityGroup":{"description":"A security group is a collection of rules, defined at cluster level, which can\nbe used in all VMs' rules. For example, you can define a group named “webserver”\nwith rules to open the http and https ports.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst webserver = new proxmoxve.network.FirewallSecurityGroup(\"webserver\", {\n    name: \"webserver\",\n    comment: \"Managed by Pulumi\",\n    rules: [\n        {\n            type: \"in\",\n            action: \"ACCEPT\",\n            comment: \"Allow HTTP\",\n            dest: \"192.168.1.5\",\n            dport: \"80\",\n            proto: \"tcp\",\n            log: \"info\",\n        },\n        {\n            type: \"in\",\n            action: \"ACCEPT\",\n            comment: \"Allow HTTPS\",\n            dest: \"192.168.1.5\",\n            dport: \"443\",\n            proto: \"tcp\",\n            log: \"info\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nwebserver = proxmoxve.network.FirewallSecurityGroup(\"webserver\",\n    name=\"webserver\",\n    comment=\"Managed by Pulumi\",\n    rules=[\n        {\n            \"type\": \"in\",\n            \"action\": \"ACCEPT\",\n            \"comment\": \"Allow HTTP\",\n            \"dest\": \"192.168.1.5\",\n            \"dport\": \"80\",\n            \"proto\": \"tcp\",\n            \"log\": \"info\",\n        },\n        {\n            \"type\": \"in\",\n            \"action\": \"ACCEPT\",\n            \"comment\": \"Allow HTTPS\",\n            \"dest\": \"192.168.1.5\",\n            \"dport\": \"443\",\n            \"proto\": \"tcp\",\n            \"log\": \"info\",\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var webserver = new ProxmoxVE.Network.FirewallSecurityGroup(\"webserver\", new()\n    {\n        Name = \"webserver\",\n        Comment = \"Managed by Pulumi\",\n        Rules = new[]\n        {\n            new ProxmoxVE.Network.Inputs.FirewallSecurityGroupRuleArgs\n            {\n                Type = \"in\",\n                Action = \"ACCEPT\",\n                Comment = \"Allow HTTP\",\n                Dest = \"192.168.1.5\",\n                Dport = \"80\",\n                Proto = \"tcp\",\n                Log = \"info\",\n            },\n            new ProxmoxVE.Network.Inputs.FirewallSecurityGroupRuleArgs\n            {\n                Type = \"in\",\n                Action = \"ACCEPT\",\n                Comment = \"Allow HTTPS\",\n                Dest = \"192.168.1.5\",\n                Dport = \"443\",\n                Proto = \"tcp\",\n                Log = \"info\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := network.NewFirewallSecurityGroup(ctx, \"webserver\", \u0026network.FirewallSecurityGroupArgs{\n\t\t\tName:    pulumi.String(\"webserver\"),\n\t\t\tComment: pulumi.String(\"Managed by Pulumi\"),\n\t\t\tRules: network.FirewallSecurityGroupRuleArray{\n\t\t\t\t\u0026network.FirewallSecurityGroupRuleArgs{\n\t\t\t\t\tType:    pulumi.String(\"in\"),\n\t\t\t\t\tAction:  pulumi.String(\"ACCEPT\"),\n\t\t\t\t\tComment: pulumi.String(\"Allow HTTP\"),\n\t\t\t\t\tDest:    pulumi.String(\"192.168.1.5\"),\n\t\t\t\t\tDport:   pulumi.String(\"80\"),\n\t\t\t\t\tProto:   pulumi.String(\"tcp\"),\n\t\t\t\t\tLog:     pulumi.String(\"info\"),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallSecurityGroupRuleArgs{\n\t\t\t\t\tType:    pulumi.String(\"in\"),\n\t\t\t\t\tAction:  pulumi.String(\"ACCEPT\"),\n\t\t\t\t\tComment: pulumi.String(\"Allow HTTPS\"),\n\t\t\t\t\tDest:    pulumi.String(\"192.168.1.5\"),\n\t\t\t\t\tDport:   pulumi.String(\"443\"),\n\t\t\t\t\tProto:   pulumi.String(\"tcp\"),\n\t\t\t\t\tLog:     pulumi.String(\"info\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Network.FirewallSecurityGroup;\nimport io.muehlbachler.pulumi.proxmoxve.Network.FirewallSecurityGroupArgs;\nimport com.pulumi.proxmoxve.Network.inputs.FirewallSecurityGroupRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var webserver = new FirewallSecurityGroup(\"webserver\", FirewallSecurityGroupArgs.builder()\n            .name(\"webserver\")\n            .comment(\"Managed by Pulumi\")\n            .rules(            \n                FirewallSecurityGroupRuleArgs.builder()\n                    .type(\"in\")\n                    .action(\"ACCEPT\")\n                    .comment(\"Allow HTTP\")\n                    .dest(\"192.168.1.5\")\n                    .dport(\"80\")\n                    .proto(\"tcp\")\n                    .log(\"info\")\n                    .build(),\n                FirewallSecurityGroupRuleArgs.builder()\n                    .type(\"in\")\n                    .action(\"ACCEPT\")\n                    .comment(\"Allow HTTPS\")\n                    .dest(\"192.168.1.5\")\n                    .dport(\"443\")\n                    .proto(\"tcp\")\n                    .log(\"info\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  webserver:\n    type: proxmoxve:Network:FirewallSecurityGroup\n    properties:\n      name: webserver\n      comment: Managed by Pulumi\n      rules:\n        - type: in\n          action: ACCEPT\n          comment: Allow HTTP\n          dest: 192.168.1.5\n          dport: '80'\n          proto: tcp\n          log: info\n        - type: in\n          action: ACCEPT\n          comment: Allow HTTPS\n          dest: 192.168.1.5\n          dport: '443'\n          proto: tcp\n          log: info\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `name`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Network/firewallSecurityGroup:FirewallSecurityGroup webserver webserver\n```\n\n","properties":{"comment":{"type":"string","description":"Security group comment.\n"},"containerId":{"type":"integer","description":"The ID of the container to manage the firewall for."},"name":{"type":"string","description":"Security group name.\n"},"nodeName":{"type":"string","description":"The name of the node."},"rules":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallSecurityGroupRule:FirewallSecurityGroupRule"},"description":"Firewall rule block (multiple blocks supported).\n"},"vmId":{"type":"integer","description":"The ID of the VM to manage the firewall for."}},"required":["name"],"inputProperties":{"comment":{"type":"string","description":"Security group comment.\n"},"containerId":{"type":"integer","description":"The ID of the container to manage the firewall for."},"name":{"type":"string","description":"Security group name.\n"},"nodeName":{"type":"string","description":"The name of the node."},"rules":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallSecurityGroupRule:FirewallSecurityGroupRule"},"description":"Firewall rule block (multiple blocks supported).\n"},"vmId":{"type":"integer","description":"The ID of the VM to manage the firewall for."}},"stateInputs":{"description":"Input properties used for looking up and filtering FirewallSecurityGroup resources.\n","properties":{"comment":{"type":"string","description":"Security group comment.\n"},"containerId":{"type":"integer","description":"The ID of the container to manage the firewall for."},"name":{"type":"string","description":"Security group name.\n"},"nodeName":{"type":"string","description":"The name of the node."},"rules":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallSecurityGroupRule:FirewallSecurityGroupRule"},"description":"Firewall rule block (multiple blocks supported).\n"},"vmId":{"type":"integer","description":"The ID of the VM to manage the firewall for."}},"type":"object"}},"proxmoxve:Network/networkBridge:NetworkBridge":{"description":"Manages a Linux Bridge network interface in a Proxmox VE node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst vlan99 = new proxmoxve.network.NetworkVlan(\"vlan99\", {\n    nodeName: \"pve\",\n    name: \"ens18.99\",\n});\nconst vmbr99 = new proxmoxve.network.NetworkBridge(\"vmbr99\", {\n    nodeName: \"pve\",\n    name: \"vmbr99\",\n    address: \"99.99.99.99/16\",\n    comment: \"vmbr99 comment\",\n    ports: [\"ens18.99\"],\n}, {\n    dependsOn: [vlan99],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nvlan99 = proxmoxve.network.NetworkVlan(\"vlan99\",\n    node_name=\"pve\",\n    name=\"ens18.99\")\nvmbr99 = proxmoxve.network.NetworkBridge(\"vmbr99\",\n    node_name=\"pve\",\n    name=\"vmbr99\",\n    address=\"99.99.99.99/16\",\n    comment=\"vmbr99 comment\",\n    ports=[\"ens18.99\"],\n    opts = pulumi.ResourceOptions(depends_on=[vlan99]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var vlan99 = new ProxmoxVE.Network.NetworkVlan(\"vlan99\", new()\n    {\n        NodeName = \"pve\",\n        Name = \"ens18.99\",\n    });\n\n    var vmbr99 = new ProxmoxVE.Network.NetworkBridge(\"vmbr99\", new()\n    {\n        NodeName = \"pve\",\n        Name = \"vmbr99\",\n        Address = \"99.99.99.99/16\",\n        Comment = \"vmbr99 comment\",\n        Ports = new[]\n        {\n            \"ens18.99\",\n        },\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            vlan99,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvlan99, err := network.NewNetworkVlan(ctx, \"vlan99\", \u0026network.NetworkVlanArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tName:     pulumi.String(\"ens18.99\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewNetworkBridge(ctx, \"vmbr99\", \u0026network.NetworkBridgeArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tName:     pulumi.String(\"vmbr99\"),\n\t\t\tAddress:  pulumi.String(\"99.99.99.99/16\"),\n\t\t\tComment:  pulumi.String(\"vmbr99 comment\"),\n\t\t\tPorts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"ens18.99\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvlan99,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Network.NetworkVlan;\nimport io.muehlbachler.pulumi.proxmoxve.Network.NetworkVlanArgs;\nimport io.muehlbachler.pulumi.proxmoxve.Network.NetworkBridge;\nimport io.muehlbachler.pulumi.proxmoxve.Network.NetworkBridgeArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var vlan99 = new NetworkVlan(\"vlan99\", NetworkVlanArgs.builder()\n            .nodeName(\"pve\")\n            .name(\"ens18.99\")\n            .build());\n\n        var vmbr99 = new NetworkBridge(\"vmbr99\", NetworkBridgeArgs.builder()\n            .nodeName(\"pve\")\n            .name(\"vmbr99\")\n            .address(\"99.99.99.99/16\")\n            .comment(\"vmbr99 comment\")\n            .ports(\"ens18.99\")\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(vlan99)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  vmbr99:\n    type: proxmoxve:Network:NetworkBridge\n    properties:\n      nodeName: pve\n      name: vmbr99\n      address: 99.99.99.99/16\n      comment: vmbr99 comment\n      ports:\n        - ens18.99\n    options:\n      dependsOn:\n        - ${vlan99}\n  vlan99:\n    type: proxmoxve:Network:NetworkVlan\n    properties:\n      nodeName: pve\n      name: ens18.99\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\n#Interfaces can be imported using the `node_name:iface` format, e.g.\n\n```sh\n$ pulumi import proxmoxve:Network/networkBridge:NetworkBridge vmbr99 pve:vmbr99\n```\n\n","properties":{"address":{"type":"string","description":"The interface IPv4/CIDR address.\n"},"address6":{"type":"string","description":"The interface IPv6/CIDR address.\n"},"autostart":{"type":"boolean","description":"Automatically start interface on boot (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"comment":{"type":"string","description":"Comment for the interface.\n"},"gateway":{"type":"string","description":"Default gateway address.\n"},"gateway6":{"type":"string","description":"Default IPv6 gateway address.\n"},"mtu":{"type":"integer","description":"The interface MTU.\n"},"name":{"type":"string","description":"The interface name. Commonly vmbr[N], where 0 ≤ N ≤ 4094 (vmbr0 - vmbr4094), but can be any alphanumeric string that starts with a character and is at most 10 characters long.\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"ports":{"type":"array","items":{"type":"string"},"description":"The interface bridge ports.\n"},"vlanAware":{"type":"boolean","description":"Whether the interface bridge is VLAN aware (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"}},"required":["autostart","name","nodeName","vlanAware"],"inputProperties":{"address":{"type":"string","description":"The interface IPv4/CIDR address.\n"},"address6":{"type":"string","description":"The interface IPv6/CIDR address.\n"},"autostart":{"type":"boolean","description":"Automatically start interface on boot (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"comment":{"type":"string","description":"Comment for the interface.\n"},"gateway":{"type":"string","description":"Default gateway address.\n"},"gateway6":{"type":"string","description":"Default IPv6 gateway address.\n"},"mtu":{"type":"integer","description":"The interface MTU.\n"},"name":{"type":"string","description":"The interface name. Commonly vmbr[N], where 0 ≤ N ≤ 4094 (vmbr0 - vmbr4094), but can be any alphanumeric string that starts with a character and is at most 10 characters long.\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"ports":{"type":"array","items":{"type":"string"},"description":"The interface bridge ports.\n"},"vlanAware":{"type":"boolean","description":"Whether the interface bridge is VLAN aware (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering NetworkBridge resources.\n","properties":{"address":{"type":"string","description":"The interface IPv4/CIDR address.\n"},"address6":{"type":"string","description":"The interface IPv6/CIDR address.\n"},"autostart":{"type":"boolean","description":"Automatically start interface on boot (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"comment":{"type":"string","description":"Comment for the interface.\n"},"gateway":{"type":"string","description":"Default gateway address.\n"},"gateway6":{"type":"string","description":"Default IPv6 gateway address.\n"},"mtu":{"type":"integer","description":"The interface MTU.\n"},"name":{"type":"string","description":"The interface name. Commonly vmbr[N], where 0 ≤ N ≤ 4094 (vmbr0 - vmbr4094), but can be any alphanumeric string that starts with a character and is at most 10 characters long.\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"ports":{"type":"array","items":{"type":"string"},"description":"The interface bridge ports.\n"},"vlanAware":{"type":"boolean","description":"Whether the interface bridge is VLAN aware (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"}},"type":"object"}},"proxmoxve:Network/networkVlan:NetworkVlan":{"description":"Manages a Linux VLAN network interface in a Proxmox VE node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\n// using VLAN tag\nconst vlan99 = new proxmoxve.network.NetworkVlan(\"vlan99\", {\n    nodeName: \"pve\",\n    name: \"eno0.99\",\n    comment: \"VLAN 99\",\n});\n// using custom network interface name\nconst vlan98 = new proxmoxve.network.NetworkVlan(\"vlan98\", {\n    nodeName: \"pve\",\n    name: \"vlan_lab\",\n    \"interface\": \"eno0\",\n    vlan: 98,\n    comment: \"VLAN 98\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# using VLAN tag\nvlan99 = proxmoxve.network.NetworkVlan(\"vlan99\",\n    node_name=\"pve\",\n    name=\"eno0.99\",\n    comment=\"VLAN 99\")\n# using custom network interface name\nvlan98 = proxmoxve.network.NetworkVlan(\"vlan98\",\n    node_name=\"pve\",\n    name=\"vlan_lab\",\n    interface=\"eno0\",\n    vlan=98,\n    comment=\"VLAN 98\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // using VLAN tag\n    var vlan99 = new ProxmoxVE.Network.NetworkVlan(\"vlan99\", new()\n    {\n        NodeName = \"pve\",\n        Name = \"eno0.99\",\n        Comment = \"VLAN 99\",\n    });\n\n    // using custom network interface name\n    var vlan98 = new ProxmoxVE.Network.NetworkVlan(\"vlan98\", new()\n    {\n        NodeName = \"pve\",\n        Name = \"vlan_lab\",\n        Interface = \"eno0\",\n        Vlan = 98,\n        Comment = \"VLAN 98\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// using VLAN tag\n\t\t_, err := network.NewNetworkVlan(ctx, \"vlan99\", \u0026network.NetworkVlanArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tName:     pulumi.String(\"eno0.99\"),\n\t\t\tComment:  pulumi.String(\"VLAN 99\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// using custom network interface name\n\t\t_, err = network.NewNetworkVlan(ctx, \"vlan98\", \u0026network.NetworkVlanArgs{\n\t\t\tNodeName:  pulumi.String(\"pve\"),\n\t\t\tName:      pulumi.String(\"vlan_lab\"),\n\t\t\tInterface: pulumi.String(\"eno0\"),\n\t\t\tVlan:      pulumi.Int(98),\n\t\t\tComment:   pulumi.String(\"VLAN 98\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Network.NetworkVlan;\nimport io.muehlbachler.pulumi.proxmoxve.Network.NetworkVlanArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // using VLAN tag\n        var vlan99 = new NetworkVlan(\"vlan99\", NetworkVlanArgs.builder()\n            .nodeName(\"pve\")\n            .name(\"eno0.99\")\n            .comment(\"VLAN 99\")\n            .build());\n\n        // using custom network interface name\n        var vlan98 = new NetworkVlan(\"vlan98\", NetworkVlanArgs.builder()\n            .nodeName(\"pve\")\n            .name(\"vlan_lab\")\n            .interface_(\"eno0\")\n            .vlan(98)\n            .comment(\"VLAN 98\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # using VLAN tag\n  vlan99:\n    type: proxmoxve:Network:NetworkVlan\n    properties:\n      nodeName: pve\n      name: eno0.99\n      comment: VLAN 99\n  # using custom network interface name\n  vlan98:\n    type: proxmoxve:Network:NetworkVlan\n    properties:\n      nodeName: pve\n      name: vlan_lab\n      interface: eno0\n      vlan: 98\n      comment: VLAN 98\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\n#Interfaces can be imported using the `node_name:iface` format, e.g.\n\n```sh\n$ pulumi import proxmoxve:Network/networkVlan:NetworkVlan vlan99 pve:vlan99\n```\n\n","properties":{"address":{"type":"string","description":"The interface IPv4/CIDR address.\n"},"address6":{"type":"string","description":"The interface IPv6/CIDR address.\n"},"autostart":{"type":"boolean","description":"Automatically start interface on boot (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"comment":{"type":"string","description":"Comment for the interface.\n"},"gateway":{"type":"string","description":"Default gateway address.\n"},"gateway6":{"type":"string","description":"Default IPv6 gateway address.\n"},"interface":{"type":"string","description":"The VLAN raw device. See also \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e.\n"},"mtu":{"type":"integer","description":"The interface MTU.\n"},"name":{"type":"string","description":"The interface name. Either add the VLAN tag number to an existing interface name, e.g. `ens18.21` (and do not set \u003cspan pulumi-lang-nodejs=\"`interface`\" pulumi-lang-dotnet=\"`Interface`\" pulumi-lang-go=\"`interface`\" pulumi-lang-python=\"`interface`\" pulumi-lang-yaml=\"`interface`\" pulumi-lang-java=\"`interface`\"\u003e`interface`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`vlan`\" pulumi-lang-dotnet=\"`Vlan`\" pulumi-lang-go=\"`vlan`\" pulumi-lang-python=\"`vlan`\" pulumi-lang-yaml=\"`vlan`\" pulumi-lang-java=\"`vlan`\"\u003e`vlan`\u003c/span\u003e), or use custom name, e.g. \u003cspan pulumi-lang-nodejs=\"`vlanLab`\" pulumi-lang-dotnet=\"`VlanLab`\" pulumi-lang-go=\"`vlanLab`\" pulumi-lang-python=\"`vlan_lab`\" pulumi-lang-yaml=\"`vlanLab`\" pulumi-lang-java=\"`vlanLab`\"\u003e`vlan_lab`\u003c/span\u003e (\u003cspan pulumi-lang-nodejs=\"`interface`\" pulumi-lang-dotnet=\"`Interface`\" pulumi-lang-go=\"`interface`\" pulumi-lang-python=\"`interface`\" pulumi-lang-yaml=\"`interface`\" pulumi-lang-java=\"`interface`\"\u003e`interface`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`vlan`\" pulumi-lang-dotnet=\"`Vlan`\" pulumi-lang-go=\"`vlan`\" pulumi-lang-python=\"`vlan`\" pulumi-lang-yaml=\"`vlan`\" pulumi-lang-java=\"`vlan`\"\u003e`vlan`\u003c/span\u003e are then required).\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"vlan":{"type":"integer","description":"The VLAN tag. See also \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e.\n"}},"required":["autostart","interface","name","nodeName","vlan"],"inputProperties":{"address":{"type":"string","description":"The interface IPv4/CIDR address.\n"},"address6":{"type":"string","description":"The interface IPv6/CIDR address.\n"},"autostart":{"type":"boolean","description":"Automatically start interface on boot (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"comment":{"type":"string","description":"Comment for the interface.\n"},"gateway":{"type":"string","description":"Default gateway address.\n"},"gateway6":{"type":"string","description":"Default IPv6 gateway address.\n"},"interface":{"type":"string","description":"The VLAN raw device. See also \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e.\n"},"mtu":{"type":"integer","description":"The interface MTU.\n"},"name":{"type":"string","description":"The interface name. Either add the VLAN tag number to an existing interface name, e.g. `ens18.21` (and do not set \u003cspan pulumi-lang-nodejs=\"`interface`\" pulumi-lang-dotnet=\"`Interface`\" pulumi-lang-go=\"`interface`\" pulumi-lang-python=\"`interface`\" pulumi-lang-yaml=\"`interface`\" pulumi-lang-java=\"`interface`\"\u003e`interface`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`vlan`\" pulumi-lang-dotnet=\"`Vlan`\" pulumi-lang-go=\"`vlan`\" pulumi-lang-python=\"`vlan`\" pulumi-lang-yaml=\"`vlan`\" pulumi-lang-java=\"`vlan`\"\u003e`vlan`\u003c/span\u003e), or use custom name, e.g. \u003cspan pulumi-lang-nodejs=\"`vlanLab`\" pulumi-lang-dotnet=\"`VlanLab`\" pulumi-lang-go=\"`vlanLab`\" pulumi-lang-python=\"`vlan_lab`\" pulumi-lang-yaml=\"`vlanLab`\" pulumi-lang-java=\"`vlanLab`\"\u003e`vlan_lab`\u003c/span\u003e (\u003cspan pulumi-lang-nodejs=\"`interface`\" pulumi-lang-dotnet=\"`Interface`\" pulumi-lang-go=\"`interface`\" pulumi-lang-python=\"`interface`\" pulumi-lang-yaml=\"`interface`\" pulumi-lang-java=\"`interface`\"\u003e`interface`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`vlan`\" pulumi-lang-dotnet=\"`Vlan`\" pulumi-lang-go=\"`vlan`\" pulumi-lang-python=\"`vlan`\" pulumi-lang-yaml=\"`vlan`\" pulumi-lang-java=\"`vlan`\"\u003e`vlan`\u003c/span\u003e are then required).\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"vlan":{"type":"integer","description":"The VLAN tag. See also \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e.\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering NetworkVlan resources.\n","properties":{"address":{"type":"string","description":"The interface IPv4/CIDR address.\n"},"address6":{"type":"string","description":"The interface IPv6/CIDR address.\n"},"autostart":{"type":"boolean","description":"Automatically start interface on boot (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"comment":{"type":"string","description":"Comment for the interface.\n"},"gateway":{"type":"string","description":"Default gateway address.\n"},"gateway6":{"type":"string","description":"Default IPv6 gateway address.\n"},"interface":{"type":"string","description":"The VLAN raw device. See also \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e.\n"},"mtu":{"type":"integer","description":"The interface MTU.\n"},"name":{"type":"string","description":"The interface name. Either add the VLAN tag number to an existing interface name, e.g. `ens18.21` (and do not set \u003cspan pulumi-lang-nodejs=\"`interface`\" pulumi-lang-dotnet=\"`Interface`\" pulumi-lang-go=\"`interface`\" pulumi-lang-python=\"`interface`\" pulumi-lang-yaml=\"`interface`\" pulumi-lang-java=\"`interface`\"\u003e`interface`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`vlan`\" pulumi-lang-dotnet=\"`Vlan`\" pulumi-lang-go=\"`vlan`\" pulumi-lang-python=\"`vlan`\" pulumi-lang-yaml=\"`vlan`\" pulumi-lang-java=\"`vlan`\"\u003e`vlan`\u003c/span\u003e), or use custom name, e.g. \u003cspan pulumi-lang-nodejs=\"`vlanLab`\" pulumi-lang-dotnet=\"`VlanLab`\" pulumi-lang-go=\"`vlanLab`\" pulumi-lang-python=\"`vlan_lab`\" pulumi-lang-yaml=\"`vlanLab`\" pulumi-lang-java=\"`vlanLab`\"\u003e`vlan_lab`\u003c/span\u003e (\u003cspan pulumi-lang-nodejs=\"`interface`\" pulumi-lang-dotnet=\"`Interface`\" pulumi-lang-go=\"`interface`\" pulumi-lang-python=\"`interface`\" pulumi-lang-yaml=\"`interface`\" pulumi-lang-java=\"`interface`\"\u003e`interface`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`vlan`\" pulumi-lang-dotnet=\"`Vlan`\" pulumi-lang-go=\"`vlan`\" pulumi-lang-python=\"`vlan`\" pulumi-lang-yaml=\"`vlan`\" pulumi-lang-java=\"`vlan`\"\u003e`vlan`\u003c/span\u003e are then required).\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"vlan":{"type":"integer","description":"The VLAN tag. See also \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e.\n"}},"type":"object"}},"proxmoxve:Node/firewall:Firewall":{"description":"Manages Proxmox VE Node Firewall options.\n\n\u003e This resource in fact updates existing node firewall configuration created by PVE on bootstrap. All optional attributes have explicit defaults for deterministic behavior (PVE may change defaults in the future). See [API documentation](https://pve.proxmox.com/pve-docs/api-viewer/index.html#/nodes/{node}/firewall/options).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst node_pve1 = new proxmoxve.node.Firewall(\"node-pve1\", {\n    nodeName: \"pve1\",\n    enabled: false,\n});\nconst pve2 = new proxmoxve.node.Firewall(\"pve2\", {\n    nodeName: \"pve2\",\n    enabled: true,\n    logLevelIn: \"alert\",\n    logLevelOut: \"alert\",\n    logLevelForward: \"alert\",\n    ndp: true,\n    nftables: true,\n    nosmurfs: true,\n    smurfLogLevel: \"alert\",\n    tcpFlagsLogLevel: \"alert\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nnode_pve1 = proxmoxve.node.Firewall(\"node-pve1\",\n    node_name=\"pve1\",\n    enabled=False)\npve2 = proxmoxve.node.Firewall(\"pve2\",\n    node_name=\"pve2\",\n    enabled=True,\n    log_level_in=\"alert\",\n    log_level_out=\"alert\",\n    log_level_forward=\"alert\",\n    ndp=True,\n    nftables=True,\n    nosmurfs=True,\n    smurf_log_level=\"alert\",\n    tcp_flags_log_level=\"alert\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var node_pve1 = new ProxmoxVE.Node.Firewall(\"node-pve1\", new()\n    {\n        NodeName = \"pve1\",\n        Enabled = false,\n    });\n\n    var pve2 = new ProxmoxVE.Node.Firewall(\"pve2\", new()\n    {\n        NodeName = \"pve2\",\n        Enabled = true,\n        LogLevelIn = \"alert\",\n        LogLevelOut = \"alert\",\n        LogLevelForward = \"alert\",\n        Ndp = true,\n        Nftables = true,\n        Nosmurfs = true,\n        SmurfLogLevel = \"alert\",\n        TcpFlagsLogLevel = \"alert\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/node\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := node.NewFirewall(ctx, \"node-pve1\", \u0026node.FirewallArgs{\n\t\t\tNodeName: pulumi.String(\"pve1\"),\n\t\t\tEnabled:  pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = node.NewFirewall(ctx, \"pve2\", \u0026node.FirewallArgs{\n\t\t\tNodeName:         pulumi.String(\"pve2\"),\n\t\t\tEnabled:          pulumi.Bool(true),\n\t\t\tLogLevelIn:       pulumi.String(\"alert\"),\n\t\t\tLogLevelOut:      pulumi.String(\"alert\"),\n\t\t\tLogLevelForward:  pulumi.String(\"alert\"),\n\t\t\tNdp:              pulumi.Bool(true),\n\t\t\tNftables:         pulumi.Bool(true),\n\t\t\tNosmurfs:         pulumi.Bool(true),\n\t\t\tSmurfLogLevel:    pulumi.String(\"alert\"),\n\t\t\tTcpFlagsLogLevel: pulumi.String(\"alert\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Node.Firewall;\nimport io.muehlbachler.pulumi.proxmoxve.Node.FirewallArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var node_pve1 = new Firewall(\"node-pve1\", FirewallArgs.builder()\n            .nodeName(\"pve1\")\n            .enabled(false)\n            .build());\n\n        var pve2 = new Firewall(\"pve2\", FirewallArgs.builder()\n            .nodeName(\"pve2\")\n            .enabled(true)\n            .logLevelIn(\"alert\")\n            .logLevelOut(\"alert\")\n            .logLevelForward(\"alert\")\n            .ndp(true)\n            .nftables(true)\n            .nosmurfs(true)\n            .smurfLogLevel(\"alert\")\n            .tcpFlagsLogLevel(\"alert\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  node-pve1:\n    type: proxmoxve:Node:Firewall\n    properties:\n      nodeName: pve1\n      enabled: false\n  pve2:\n    type: proxmoxve:Node:Firewall\n    properties:\n      nodeName: pve2\n      enabled: true\n      logLevelIn: alert\n      logLevelOut: alert\n      logLevelForward: alert\n      ndp: true\n      nftables: true\n      nosmurfs: true\n      smurfLogLevel: alert\n      tcpFlagsLogLevel: alert\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n```sh\n$ pulumi import proxmoxve:Node/firewall:Firewall node-pve1 pve1\n```\n\n","properties":{"enabled":{"type":"boolean","description":"Enable host firewall rules (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"logLevelForward":{"type":"string","description":"Log level for forwarded traffic. Must be one of: \u003cspan pulumi-lang-nodejs=\"`emerg`\" pulumi-lang-dotnet=\"`Emerg`\" pulumi-lang-go=\"`emerg`\" pulumi-lang-python=\"`emerg`\" pulumi-lang-yaml=\"`emerg`\" pulumi-lang-java=\"`emerg`\"\u003e`emerg`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`alert`\" pulumi-lang-dotnet=\"`Alert`\" pulumi-lang-go=\"`alert`\" pulumi-lang-python=\"`alert`\" pulumi-lang-yaml=\"`alert`\" pulumi-lang-java=\"`alert`\"\u003e`alert`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`crit`\" pulumi-lang-dotnet=\"`Crit`\" pulumi-lang-go=\"`crit`\" pulumi-lang-python=\"`crit`\" pulumi-lang-yaml=\"`crit`\" pulumi-lang-java=\"`crit`\"\u003e`crit`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`err`\" pulumi-lang-dotnet=\"`Err`\" pulumi-lang-go=\"`err`\" pulumi-lang-python=\"`err`\" pulumi-lang-yaml=\"`err`\" pulumi-lang-java=\"`err`\"\u003e`err`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`warning`\" pulumi-lang-dotnet=\"`Warning`\" pulumi-lang-go=\"`warning`\" pulumi-lang-python=\"`warning`\" pulumi-lang-yaml=\"`warning`\" pulumi-lang-java=\"`warning`\"\u003e`warning`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`notice`\" pulumi-lang-dotnet=\"`Notice`\" pulumi-lang-go=\"`notice`\" pulumi-lang-python=\"`notice`\" pulumi-lang-yaml=\"`notice`\" pulumi-lang-java=\"`notice`\"\u003e`notice`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e (defaults to \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e).\n"},"logLevelIn":{"type":"string","description":"Log level for incoming traffic. Must be one of: \u003cspan pulumi-lang-nodejs=\"`emerg`\" pulumi-lang-dotnet=\"`Emerg`\" pulumi-lang-go=\"`emerg`\" pulumi-lang-python=\"`emerg`\" pulumi-lang-yaml=\"`emerg`\" pulumi-lang-java=\"`emerg`\"\u003e`emerg`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`alert`\" pulumi-lang-dotnet=\"`Alert`\" pulumi-lang-go=\"`alert`\" pulumi-lang-python=\"`alert`\" pulumi-lang-yaml=\"`alert`\" pulumi-lang-java=\"`alert`\"\u003e`alert`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`crit`\" pulumi-lang-dotnet=\"`Crit`\" pulumi-lang-go=\"`crit`\" pulumi-lang-python=\"`crit`\" pulumi-lang-yaml=\"`crit`\" pulumi-lang-java=\"`crit`\"\u003e`crit`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`err`\" pulumi-lang-dotnet=\"`Err`\" pulumi-lang-go=\"`err`\" pulumi-lang-python=\"`err`\" pulumi-lang-yaml=\"`err`\" pulumi-lang-java=\"`err`\"\u003e`err`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`warning`\" pulumi-lang-dotnet=\"`Warning`\" pulumi-lang-go=\"`warning`\" pulumi-lang-python=\"`warning`\" pulumi-lang-yaml=\"`warning`\" pulumi-lang-java=\"`warning`\"\u003e`warning`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`notice`\" pulumi-lang-dotnet=\"`Notice`\" pulumi-lang-go=\"`notice`\" pulumi-lang-python=\"`notice`\" pulumi-lang-yaml=\"`notice`\" pulumi-lang-java=\"`notice`\"\u003e`notice`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e (defaults to \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e).\n"},"logLevelOut":{"type":"string","description":"Log level for outgoing traffic. Must be one of: \u003cspan pulumi-lang-nodejs=\"`emerg`\" pulumi-lang-dotnet=\"`Emerg`\" pulumi-lang-go=\"`emerg`\" pulumi-lang-python=\"`emerg`\" pulumi-lang-yaml=\"`emerg`\" pulumi-lang-java=\"`emerg`\"\u003e`emerg`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`alert`\" pulumi-lang-dotnet=\"`Alert`\" pulumi-lang-go=\"`alert`\" pulumi-lang-python=\"`alert`\" pulumi-lang-yaml=\"`alert`\" pulumi-lang-java=\"`alert`\"\u003e`alert`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`crit`\" pulumi-lang-dotnet=\"`Crit`\" pulumi-lang-go=\"`crit`\" pulumi-lang-python=\"`crit`\" pulumi-lang-yaml=\"`crit`\" pulumi-lang-java=\"`crit`\"\u003e`crit`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`err`\" pulumi-lang-dotnet=\"`Err`\" pulumi-lang-go=\"`err`\" pulumi-lang-python=\"`err`\" pulumi-lang-yaml=\"`err`\" pulumi-lang-java=\"`err`\"\u003e`err`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`warning`\" pulumi-lang-dotnet=\"`Warning`\" pulumi-lang-go=\"`warning`\" pulumi-lang-python=\"`warning`\" pulumi-lang-yaml=\"`warning`\" pulumi-lang-java=\"`warning`\"\u003e`warning`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`notice`\" pulumi-lang-dotnet=\"`Notice`\" pulumi-lang-go=\"`notice`\" pulumi-lang-python=\"`notice`\" pulumi-lang-yaml=\"`notice`\" pulumi-lang-java=\"`notice`\"\u003e`notice`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e (defaults to \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e).\n"},"ndp":{"type":"boolean","description":"Enable NDP - Neighbor Discovery Protocol (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"nfConntrackMax":{"type":"integer","description":"Maximum number of tracked connections (defaults to \u003cspan pulumi-lang-nodejs=\"`262144`\" pulumi-lang-dotnet=\"`262144`\" pulumi-lang-go=\"`262144`\" pulumi-lang-python=\"`262144`\" pulumi-lang-yaml=\"`262144`\" pulumi-lang-java=\"`262144`\"\u003e`262144`\u003c/span\u003e). Minimum value is \u003cspan pulumi-lang-nodejs=\"`32768`\" pulumi-lang-dotnet=\"`32768`\" pulumi-lang-go=\"`32768`\" pulumi-lang-python=\"`32768`\" pulumi-lang-yaml=\"`32768`\" pulumi-lang-java=\"`32768`\"\u003e`32768`\u003c/span\u003e.\n"},"nfConntrackTcpTimeoutEstablished":{"type":"integer","description":"Conntrack established timeout in seconds (defaults to \u003cspan pulumi-lang-nodejs=\"`432000`\" pulumi-lang-dotnet=\"`432000`\" pulumi-lang-go=\"`432000`\" pulumi-lang-python=\"`432000`\" pulumi-lang-yaml=\"`432000`\" pulumi-lang-java=\"`432000`\"\u003e`432000`\u003c/span\u003e - 5 days). Minimum value is \u003cspan pulumi-lang-nodejs=\"`7875`\" pulumi-lang-dotnet=\"`7875`\" pulumi-lang-go=\"`7875`\" pulumi-lang-python=\"`7875`\" pulumi-lang-yaml=\"`7875`\" pulumi-lang-java=\"`7875`\"\u003e`7875`\u003c/span\u003e.\n"},"nftables":{"type":"boolean","description":"Enable nftables based firewall (tech preview, defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"nodeName":{"type":"string","description":"The cluster node name.\n"},"nosmurfs":{"type":"boolean","description":"Enable SMURFS filter (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"smurfLogLevel":{"type":"string","description":"Log level for SMURFS filter. Must be one of: \u003cspan pulumi-lang-nodejs=\"`emerg`\" pulumi-lang-dotnet=\"`Emerg`\" pulumi-lang-go=\"`emerg`\" pulumi-lang-python=\"`emerg`\" pulumi-lang-yaml=\"`emerg`\" pulumi-lang-java=\"`emerg`\"\u003e`emerg`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`alert`\" pulumi-lang-dotnet=\"`Alert`\" pulumi-lang-go=\"`alert`\" pulumi-lang-python=\"`alert`\" pulumi-lang-yaml=\"`alert`\" pulumi-lang-java=\"`alert`\"\u003e`alert`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`crit`\" pulumi-lang-dotnet=\"`Crit`\" pulumi-lang-go=\"`crit`\" pulumi-lang-python=\"`crit`\" pulumi-lang-yaml=\"`crit`\" pulumi-lang-java=\"`crit`\"\u003e`crit`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`err`\" pulumi-lang-dotnet=\"`Err`\" pulumi-lang-go=\"`err`\" pulumi-lang-python=\"`err`\" pulumi-lang-yaml=\"`err`\" pulumi-lang-java=\"`err`\"\u003e`err`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`warning`\" pulumi-lang-dotnet=\"`Warning`\" pulumi-lang-go=\"`warning`\" pulumi-lang-python=\"`warning`\" pulumi-lang-yaml=\"`warning`\" pulumi-lang-java=\"`warning`\"\u003e`warning`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`notice`\" pulumi-lang-dotnet=\"`Notice`\" pulumi-lang-go=\"`notice`\" pulumi-lang-python=\"`notice`\" pulumi-lang-yaml=\"`notice`\" pulumi-lang-java=\"`notice`\"\u003e`notice`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e (defaults to \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e).\n"},"tcpFlagsLogLevel":{"type":"string","description":"Log level for illegal tcp flags filter. Must be one of: \u003cspan pulumi-lang-nodejs=\"`emerg`\" pulumi-lang-dotnet=\"`Emerg`\" pulumi-lang-go=\"`emerg`\" pulumi-lang-python=\"`emerg`\" pulumi-lang-yaml=\"`emerg`\" pulumi-lang-java=\"`emerg`\"\u003e`emerg`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`alert`\" pulumi-lang-dotnet=\"`Alert`\" pulumi-lang-go=\"`alert`\" pulumi-lang-python=\"`alert`\" pulumi-lang-yaml=\"`alert`\" pulumi-lang-java=\"`alert`\"\u003e`alert`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`crit`\" pulumi-lang-dotnet=\"`Crit`\" pulumi-lang-go=\"`crit`\" pulumi-lang-python=\"`crit`\" pulumi-lang-yaml=\"`crit`\" pulumi-lang-java=\"`crit`\"\u003e`crit`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`err`\" pulumi-lang-dotnet=\"`Err`\" pulumi-lang-go=\"`err`\" pulumi-lang-python=\"`err`\" pulumi-lang-yaml=\"`err`\" pulumi-lang-java=\"`err`\"\u003e`err`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`warning`\" pulumi-lang-dotnet=\"`Warning`\" pulumi-lang-go=\"`warning`\" pulumi-lang-python=\"`warning`\" pulumi-lang-yaml=\"`warning`\" pulumi-lang-java=\"`warning`\"\u003e`warning`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`notice`\" pulumi-lang-dotnet=\"`Notice`\" pulumi-lang-go=\"`notice`\" pulumi-lang-python=\"`notice`\" pulumi-lang-yaml=\"`notice`\" pulumi-lang-java=\"`notice`\"\u003e`notice`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e (defaults to \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e).\n"}},"required":["enabled","logLevelForward","logLevelIn","logLevelOut","ndp","nfConntrackMax","nfConntrackTcpTimeoutEstablished","nftables","nodeName","nosmurfs","smurfLogLevel","tcpFlagsLogLevel"],"inputProperties":{"enabled":{"type":"boolean","description":"Enable host firewall rules (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"logLevelForward":{"type":"string","description":"Log level for forwarded traffic. Must be one of: \u003cspan pulumi-lang-nodejs=\"`emerg`\" pulumi-lang-dotnet=\"`Emerg`\" pulumi-lang-go=\"`emerg`\" pulumi-lang-python=\"`emerg`\" pulumi-lang-yaml=\"`emerg`\" pulumi-lang-java=\"`emerg`\"\u003e`emerg`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`alert`\" pulumi-lang-dotnet=\"`Alert`\" pulumi-lang-go=\"`alert`\" pulumi-lang-python=\"`alert`\" pulumi-lang-yaml=\"`alert`\" pulumi-lang-java=\"`alert`\"\u003e`alert`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`crit`\" pulumi-lang-dotnet=\"`Crit`\" pulumi-lang-go=\"`crit`\" pulumi-lang-python=\"`crit`\" pulumi-lang-yaml=\"`crit`\" pulumi-lang-java=\"`crit`\"\u003e`crit`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`err`\" pulumi-lang-dotnet=\"`Err`\" pulumi-lang-go=\"`err`\" pulumi-lang-python=\"`err`\" pulumi-lang-yaml=\"`err`\" pulumi-lang-java=\"`err`\"\u003e`err`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`warning`\" pulumi-lang-dotnet=\"`Warning`\" pulumi-lang-go=\"`warning`\" pulumi-lang-python=\"`warning`\" pulumi-lang-yaml=\"`warning`\" pulumi-lang-java=\"`warning`\"\u003e`warning`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`notice`\" pulumi-lang-dotnet=\"`Notice`\" pulumi-lang-go=\"`notice`\" pulumi-lang-python=\"`notice`\" pulumi-lang-yaml=\"`notice`\" pulumi-lang-java=\"`notice`\"\u003e`notice`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e (defaults to \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e).\n"},"logLevelIn":{"type":"string","description":"Log level for incoming traffic. Must be one of: \u003cspan pulumi-lang-nodejs=\"`emerg`\" pulumi-lang-dotnet=\"`Emerg`\" pulumi-lang-go=\"`emerg`\" pulumi-lang-python=\"`emerg`\" pulumi-lang-yaml=\"`emerg`\" pulumi-lang-java=\"`emerg`\"\u003e`emerg`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`alert`\" pulumi-lang-dotnet=\"`Alert`\" pulumi-lang-go=\"`alert`\" pulumi-lang-python=\"`alert`\" pulumi-lang-yaml=\"`alert`\" pulumi-lang-java=\"`alert`\"\u003e`alert`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`crit`\" pulumi-lang-dotnet=\"`Crit`\" pulumi-lang-go=\"`crit`\" pulumi-lang-python=\"`crit`\" pulumi-lang-yaml=\"`crit`\" pulumi-lang-java=\"`crit`\"\u003e`crit`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`err`\" pulumi-lang-dotnet=\"`Err`\" pulumi-lang-go=\"`err`\" pulumi-lang-python=\"`err`\" pulumi-lang-yaml=\"`err`\" pulumi-lang-java=\"`err`\"\u003e`err`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`warning`\" pulumi-lang-dotnet=\"`Warning`\" pulumi-lang-go=\"`warning`\" pulumi-lang-python=\"`warning`\" pulumi-lang-yaml=\"`warning`\" pulumi-lang-java=\"`warning`\"\u003e`warning`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`notice`\" pulumi-lang-dotnet=\"`Notice`\" pulumi-lang-go=\"`notice`\" pulumi-lang-python=\"`notice`\" pulumi-lang-yaml=\"`notice`\" pulumi-lang-java=\"`notice`\"\u003e`notice`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e (defaults to \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e).\n"},"logLevelOut":{"type":"string","description":"Log level for outgoing traffic. Must be one of: \u003cspan pulumi-lang-nodejs=\"`emerg`\" pulumi-lang-dotnet=\"`Emerg`\" pulumi-lang-go=\"`emerg`\" pulumi-lang-python=\"`emerg`\" pulumi-lang-yaml=\"`emerg`\" pulumi-lang-java=\"`emerg`\"\u003e`emerg`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`alert`\" pulumi-lang-dotnet=\"`Alert`\" pulumi-lang-go=\"`alert`\" pulumi-lang-python=\"`alert`\" pulumi-lang-yaml=\"`alert`\" pulumi-lang-java=\"`alert`\"\u003e`alert`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`crit`\" pulumi-lang-dotnet=\"`Crit`\" pulumi-lang-go=\"`crit`\" pulumi-lang-python=\"`crit`\" pulumi-lang-yaml=\"`crit`\" pulumi-lang-java=\"`crit`\"\u003e`crit`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`err`\" pulumi-lang-dotnet=\"`Err`\" pulumi-lang-go=\"`err`\" pulumi-lang-python=\"`err`\" pulumi-lang-yaml=\"`err`\" pulumi-lang-java=\"`err`\"\u003e`err`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`warning`\" pulumi-lang-dotnet=\"`Warning`\" pulumi-lang-go=\"`warning`\" pulumi-lang-python=\"`warning`\" pulumi-lang-yaml=\"`warning`\" pulumi-lang-java=\"`warning`\"\u003e`warning`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`notice`\" pulumi-lang-dotnet=\"`Notice`\" pulumi-lang-go=\"`notice`\" pulumi-lang-python=\"`notice`\" pulumi-lang-yaml=\"`notice`\" pulumi-lang-java=\"`notice`\"\u003e`notice`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e (defaults to \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e).\n"},"ndp":{"type":"boolean","description":"Enable NDP - Neighbor Discovery Protocol (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"nfConntrackMax":{"type":"integer","description":"Maximum number of tracked connections (defaults to \u003cspan pulumi-lang-nodejs=\"`262144`\" pulumi-lang-dotnet=\"`262144`\" pulumi-lang-go=\"`262144`\" pulumi-lang-python=\"`262144`\" pulumi-lang-yaml=\"`262144`\" pulumi-lang-java=\"`262144`\"\u003e`262144`\u003c/span\u003e). Minimum value is \u003cspan pulumi-lang-nodejs=\"`32768`\" pulumi-lang-dotnet=\"`32768`\" pulumi-lang-go=\"`32768`\" pulumi-lang-python=\"`32768`\" pulumi-lang-yaml=\"`32768`\" pulumi-lang-java=\"`32768`\"\u003e`32768`\u003c/span\u003e.\n"},"nfConntrackTcpTimeoutEstablished":{"type":"integer","description":"Conntrack established timeout in seconds (defaults to \u003cspan pulumi-lang-nodejs=\"`432000`\" pulumi-lang-dotnet=\"`432000`\" pulumi-lang-go=\"`432000`\" pulumi-lang-python=\"`432000`\" pulumi-lang-yaml=\"`432000`\" pulumi-lang-java=\"`432000`\"\u003e`432000`\u003c/span\u003e - 5 days). Minimum value is \u003cspan pulumi-lang-nodejs=\"`7875`\" pulumi-lang-dotnet=\"`7875`\" pulumi-lang-go=\"`7875`\" pulumi-lang-python=\"`7875`\" pulumi-lang-yaml=\"`7875`\" pulumi-lang-java=\"`7875`\"\u003e`7875`\u003c/span\u003e.\n"},"nftables":{"type":"boolean","description":"Enable nftables based firewall (tech preview, defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"nodeName":{"type":"string","description":"The cluster node name.\n"},"nosmurfs":{"type":"boolean","description":"Enable SMURFS filter (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"smurfLogLevel":{"type":"string","description":"Log level for SMURFS filter. Must be one of: \u003cspan pulumi-lang-nodejs=\"`emerg`\" pulumi-lang-dotnet=\"`Emerg`\" pulumi-lang-go=\"`emerg`\" pulumi-lang-python=\"`emerg`\" pulumi-lang-yaml=\"`emerg`\" pulumi-lang-java=\"`emerg`\"\u003e`emerg`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`alert`\" pulumi-lang-dotnet=\"`Alert`\" pulumi-lang-go=\"`alert`\" pulumi-lang-python=\"`alert`\" pulumi-lang-yaml=\"`alert`\" pulumi-lang-java=\"`alert`\"\u003e`alert`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`crit`\" pulumi-lang-dotnet=\"`Crit`\" pulumi-lang-go=\"`crit`\" pulumi-lang-python=\"`crit`\" pulumi-lang-yaml=\"`crit`\" pulumi-lang-java=\"`crit`\"\u003e`crit`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`err`\" pulumi-lang-dotnet=\"`Err`\" pulumi-lang-go=\"`err`\" pulumi-lang-python=\"`err`\" pulumi-lang-yaml=\"`err`\" pulumi-lang-java=\"`err`\"\u003e`err`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`warning`\" pulumi-lang-dotnet=\"`Warning`\" pulumi-lang-go=\"`warning`\" pulumi-lang-python=\"`warning`\" pulumi-lang-yaml=\"`warning`\" pulumi-lang-java=\"`warning`\"\u003e`warning`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`notice`\" pulumi-lang-dotnet=\"`Notice`\" pulumi-lang-go=\"`notice`\" pulumi-lang-python=\"`notice`\" pulumi-lang-yaml=\"`notice`\" pulumi-lang-java=\"`notice`\"\u003e`notice`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e (defaults to \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e).\n"},"tcpFlagsLogLevel":{"type":"string","description":"Log level for illegal tcp flags filter. Must be one of: \u003cspan pulumi-lang-nodejs=\"`emerg`\" pulumi-lang-dotnet=\"`Emerg`\" pulumi-lang-go=\"`emerg`\" pulumi-lang-python=\"`emerg`\" pulumi-lang-yaml=\"`emerg`\" pulumi-lang-java=\"`emerg`\"\u003e`emerg`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`alert`\" pulumi-lang-dotnet=\"`Alert`\" pulumi-lang-go=\"`alert`\" pulumi-lang-python=\"`alert`\" pulumi-lang-yaml=\"`alert`\" pulumi-lang-java=\"`alert`\"\u003e`alert`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`crit`\" pulumi-lang-dotnet=\"`Crit`\" pulumi-lang-go=\"`crit`\" pulumi-lang-python=\"`crit`\" pulumi-lang-yaml=\"`crit`\" pulumi-lang-java=\"`crit`\"\u003e`crit`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`err`\" pulumi-lang-dotnet=\"`Err`\" pulumi-lang-go=\"`err`\" pulumi-lang-python=\"`err`\" pulumi-lang-yaml=\"`err`\" pulumi-lang-java=\"`err`\"\u003e`err`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`warning`\" pulumi-lang-dotnet=\"`Warning`\" pulumi-lang-go=\"`warning`\" pulumi-lang-python=\"`warning`\" pulumi-lang-yaml=\"`warning`\" pulumi-lang-java=\"`warning`\"\u003e`warning`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`notice`\" pulumi-lang-dotnet=\"`Notice`\" pulumi-lang-go=\"`notice`\" pulumi-lang-python=\"`notice`\" pulumi-lang-yaml=\"`notice`\" pulumi-lang-java=\"`notice`\"\u003e`notice`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e (defaults to \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e).\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering Firewall resources.\n","properties":{"enabled":{"type":"boolean","description":"Enable host firewall rules (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"logLevelForward":{"type":"string","description":"Log level for forwarded traffic. Must be one of: \u003cspan pulumi-lang-nodejs=\"`emerg`\" pulumi-lang-dotnet=\"`Emerg`\" pulumi-lang-go=\"`emerg`\" pulumi-lang-python=\"`emerg`\" pulumi-lang-yaml=\"`emerg`\" pulumi-lang-java=\"`emerg`\"\u003e`emerg`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`alert`\" pulumi-lang-dotnet=\"`Alert`\" pulumi-lang-go=\"`alert`\" pulumi-lang-python=\"`alert`\" pulumi-lang-yaml=\"`alert`\" pulumi-lang-java=\"`alert`\"\u003e`alert`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`crit`\" pulumi-lang-dotnet=\"`Crit`\" pulumi-lang-go=\"`crit`\" pulumi-lang-python=\"`crit`\" pulumi-lang-yaml=\"`crit`\" pulumi-lang-java=\"`crit`\"\u003e`crit`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`err`\" pulumi-lang-dotnet=\"`Err`\" pulumi-lang-go=\"`err`\" pulumi-lang-python=\"`err`\" pulumi-lang-yaml=\"`err`\" pulumi-lang-java=\"`err`\"\u003e`err`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`warning`\" pulumi-lang-dotnet=\"`Warning`\" pulumi-lang-go=\"`warning`\" pulumi-lang-python=\"`warning`\" pulumi-lang-yaml=\"`warning`\" pulumi-lang-java=\"`warning`\"\u003e`warning`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`notice`\" pulumi-lang-dotnet=\"`Notice`\" pulumi-lang-go=\"`notice`\" pulumi-lang-python=\"`notice`\" pulumi-lang-yaml=\"`notice`\" pulumi-lang-java=\"`notice`\"\u003e`notice`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e (defaults to \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e).\n"},"logLevelIn":{"type":"string","description":"Log level for incoming traffic. Must be one of: \u003cspan pulumi-lang-nodejs=\"`emerg`\" pulumi-lang-dotnet=\"`Emerg`\" pulumi-lang-go=\"`emerg`\" pulumi-lang-python=\"`emerg`\" pulumi-lang-yaml=\"`emerg`\" pulumi-lang-java=\"`emerg`\"\u003e`emerg`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`alert`\" pulumi-lang-dotnet=\"`Alert`\" pulumi-lang-go=\"`alert`\" pulumi-lang-python=\"`alert`\" pulumi-lang-yaml=\"`alert`\" pulumi-lang-java=\"`alert`\"\u003e`alert`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`crit`\" pulumi-lang-dotnet=\"`Crit`\" pulumi-lang-go=\"`crit`\" pulumi-lang-python=\"`crit`\" pulumi-lang-yaml=\"`crit`\" pulumi-lang-java=\"`crit`\"\u003e`crit`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`err`\" pulumi-lang-dotnet=\"`Err`\" pulumi-lang-go=\"`err`\" pulumi-lang-python=\"`err`\" pulumi-lang-yaml=\"`err`\" pulumi-lang-java=\"`err`\"\u003e`err`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`warning`\" pulumi-lang-dotnet=\"`Warning`\" pulumi-lang-go=\"`warning`\" pulumi-lang-python=\"`warning`\" pulumi-lang-yaml=\"`warning`\" pulumi-lang-java=\"`warning`\"\u003e`warning`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`notice`\" pulumi-lang-dotnet=\"`Notice`\" pulumi-lang-go=\"`notice`\" pulumi-lang-python=\"`notice`\" pulumi-lang-yaml=\"`notice`\" pulumi-lang-java=\"`notice`\"\u003e`notice`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e (defaults to \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e).\n"},"logLevelOut":{"type":"string","description":"Log level for outgoing traffic. Must be one of: \u003cspan pulumi-lang-nodejs=\"`emerg`\" pulumi-lang-dotnet=\"`Emerg`\" pulumi-lang-go=\"`emerg`\" pulumi-lang-python=\"`emerg`\" pulumi-lang-yaml=\"`emerg`\" pulumi-lang-java=\"`emerg`\"\u003e`emerg`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`alert`\" pulumi-lang-dotnet=\"`Alert`\" pulumi-lang-go=\"`alert`\" pulumi-lang-python=\"`alert`\" pulumi-lang-yaml=\"`alert`\" pulumi-lang-java=\"`alert`\"\u003e`alert`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`crit`\" pulumi-lang-dotnet=\"`Crit`\" pulumi-lang-go=\"`crit`\" pulumi-lang-python=\"`crit`\" pulumi-lang-yaml=\"`crit`\" pulumi-lang-java=\"`crit`\"\u003e`crit`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`err`\" pulumi-lang-dotnet=\"`Err`\" pulumi-lang-go=\"`err`\" pulumi-lang-python=\"`err`\" pulumi-lang-yaml=\"`err`\" pulumi-lang-java=\"`err`\"\u003e`err`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`warning`\" pulumi-lang-dotnet=\"`Warning`\" pulumi-lang-go=\"`warning`\" pulumi-lang-python=\"`warning`\" pulumi-lang-yaml=\"`warning`\" pulumi-lang-java=\"`warning`\"\u003e`warning`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`notice`\" pulumi-lang-dotnet=\"`Notice`\" pulumi-lang-go=\"`notice`\" pulumi-lang-python=\"`notice`\" pulumi-lang-yaml=\"`notice`\" pulumi-lang-java=\"`notice`\"\u003e`notice`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e (defaults to \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e).\n"},"ndp":{"type":"boolean","description":"Enable NDP - Neighbor Discovery Protocol (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"nfConntrackMax":{"type":"integer","description":"Maximum number of tracked connections (defaults to \u003cspan pulumi-lang-nodejs=\"`262144`\" pulumi-lang-dotnet=\"`262144`\" pulumi-lang-go=\"`262144`\" pulumi-lang-python=\"`262144`\" pulumi-lang-yaml=\"`262144`\" pulumi-lang-java=\"`262144`\"\u003e`262144`\u003c/span\u003e). Minimum value is \u003cspan pulumi-lang-nodejs=\"`32768`\" pulumi-lang-dotnet=\"`32768`\" pulumi-lang-go=\"`32768`\" pulumi-lang-python=\"`32768`\" pulumi-lang-yaml=\"`32768`\" pulumi-lang-java=\"`32768`\"\u003e`32768`\u003c/span\u003e.\n"},"nfConntrackTcpTimeoutEstablished":{"type":"integer","description":"Conntrack established timeout in seconds (defaults to \u003cspan pulumi-lang-nodejs=\"`432000`\" pulumi-lang-dotnet=\"`432000`\" pulumi-lang-go=\"`432000`\" pulumi-lang-python=\"`432000`\" pulumi-lang-yaml=\"`432000`\" pulumi-lang-java=\"`432000`\"\u003e`432000`\u003c/span\u003e - 5 days). Minimum value is \u003cspan pulumi-lang-nodejs=\"`7875`\" pulumi-lang-dotnet=\"`7875`\" pulumi-lang-go=\"`7875`\" pulumi-lang-python=\"`7875`\" pulumi-lang-yaml=\"`7875`\" pulumi-lang-java=\"`7875`\"\u003e`7875`\u003c/span\u003e.\n"},"nftables":{"type":"boolean","description":"Enable nftables based firewall (tech preview, defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"nodeName":{"type":"string","description":"The cluster node name.\n"},"nosmurfs":{"type":"boolean","description":"Enable SMURFS filter (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"smurfLogLevel":{"type":"string","description":"Log level for SMURFS filter. Must be one of: \u003cspan pulumi-lang-nodejs=\"`emerg`\" pulumi-lang-dotnet=\"`Emerg`\" pulumi-lang-go=\"`emerg`\" pulumi-lang-python=\"`emerg`\" pulumi-lang-yaml=\"`emerg`\" pulumi-lang-java=\"`emerg`\"\u003e`emerg`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`alert`\" pulumi-lang-dotnet=\"`Alert`\" pulumi-lang-go=\"`alert`\" pulumi-lang-python=\"`alert`\" pulumi-lang-yaml=\"`alert`\" pulumi-lang-java=\"`alert`\"\u003e`alert`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`crit`\" pulumi-lang-dotnet=\"`Crit`\" pulumi-lang-go=\"`crit`\" pulumi-lang-python=\"`crit`\" pulumi-lang-yaml=\"`crit`\" pulumi-lang-java=\"`crit`\"\u003e`crit`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`err`\" pulumi-lang-dotnet=\"`Err`\" pulumi-lang-go=\"`err`\" pulumi-lang-python=\"`err`\" pulumi-lang-yaml=\"`err`\" pulumi-lang-java=\"`err`\"\u003e`err`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`warning`\" pulumi-lang-dotnet=\"`Warning`\" pulumi-lang-go=\"`warning`\" pulumi-lang-python=\"`warning`\" pulumi-lang-yaml=\"`warning`\" pulumi-lang-java=\"`warning`\"\u003e`warning`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`notice`\" pulumi-lang-dotnet=\"`Notice`\" pulumi-lang-go=\"`notice`\" pulumi-lang-python=\"`notice`\" pulumi-lang-yaml=\"`notice`\" pulumi-lang-java=\"`notice`\"\u003e`notice`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e (defaults to \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e).\n"},"tcpFlagsLogLevel":{"type":"string","description":"Log level for illegal tcp flags filter. Must be one of: \u003cspan pulumi-lang-nodejs=\"`emerg`\" pulumi-lang-dotnet=\"`Emerg`\" pulumi-lang-go=\"`emerg`\" pulumi-lang-python=\"`emerg`\" pulumi-lang-yaml=\"`emerg`\" pulumi-lang-java=\"`emerg`\"\u003e`emerg`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`alert`\" pulumi-lang-dotnet=\"`Alert`\" pulumi-lang-go=\"`alert`\" pulumi-lang-python=\"`alert`\" pulumi-lang-yaml=\"`alert`\" pulumi-lang-java=\"`alert`\"\u003e`alert`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`crit`\" pulumi-lang-dotnet=\"`Crit`\" pulumi-lang-go=\"`crit`\" pulumi-lang-python=\"`crit`\" pulumi-lang-yaml=\"`crit`\" pulumi-lang-java=\"`crit`\"\u003e`crit`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`err`\" pulumi-lang-dotnet=\"`Err`\" pulumi-lang-go=\"`err`\" pulumi-lang-python=\"`err`\" pulumi-lang-yaml=\"`err`\" pulumi-lang-java=\"`err`\"\u003e`err`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`warning`\" pulumi-lang-dotnet=\"`Warning`\" pulumi-lang-go=\"`warning`\" pulumi-lang-python=\"`warning`\" pulumi-lang-yaml=\"`warning`\" pulumi-lang-java=\"`warning`\"\u003e`warning`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`notice`\" pulumi-lang-dotnet=\"`Notice`\" pulumi-lang-go=\"`notice`\" pulumi-lang-python=\"`notice`\" pulumi-lang-yaml=\"`notice`\" pulumi-lang-java=\"`notice`\"\u003e`notice`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e (defaults to \u003cspan pulumi-lang-nodejs=\"`nolog`\" pulumi-lang-dotnet=\"`Nolog`\" pulumi-lang-go=\"`nolog`\" pulumi-lang-python=\"`nolog`\" pulumi-lang-yaml=\"`nolog`\" pulumi-lang-java=\"`nolog`\"\u003e`nolog`\u003c/span\u003e).\n"}},"type":"object"}},"proxmoxve:Oci/image:Image":{"description":"Manages OCI images pulled from OCI registries using PVE oci-registry-pull API. Pulls OCI container images and stores them as tar files in Proxmox VE datastores.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst ubuntuLatest = new proxmoxve.oci.Image(\"ubuntu_latest\", {\n    nodeName: \"pve\",\n    datastoreId: \"local\",\n    reference: \"docker.io/library/ubuntu:latest\",\n});\nconst nginx = new proxmoxve.oci.Image(\"nginx\", {\n    nodeName: \"pve\",\n    datastoreId: \"local\",\n    reference: \"docker.io/library/nginx:alpine\",\n    fileName: \"custom_image_name.tar\",\n});\nconst debian = new proxmoxve.oci.Image(\"debian\", {\n    nodeName: \"pve\",\n    datastoreId: \"local\",\n    reference: \"docker.io/library/debian:bookworm\",\n    uploadTimeout: 900,\n    overwrite: false,\n    overwriteUnmanaged: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nubuntu_latest = proxmoxve.oci.Image(\"ubuntu_latest\",\n    node_name=\"pve\",\n    datastore_id=\"local\",\n    reference=\"docker.io/library/ubuntu:latest\")\nnginx = proxmoxve.oci.Image(\"nginx\",\n    node_name=\"pve\",\n    datastore_id=\"local\",\n    reference=\"docker.io/library/nginx:alpine\",\n    file_name=\"custom_image_name.tar\")\ndebian = proxmoxve.oci.Image(\"debian\",\n    node_name=\"pve\",\n    datastore_id=\"local\",\n    reference=\"docker.io/library/debian:bookworm\",\n    upload_timeout=900,\n    overwrite=False,\n    overwrite_unmanaged=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ubuntuLatest = new ProxmoxVE.Oci.Image(\"ubuntu_latest\", new()\n    {\n        NodeName = \"pve\",\n        DatastoreId = \"local\",\n        Reference = \"docker.io/library/ubuntu:latest\",\n    });\n\n    var nginx = new ProxmoxVE.Oci.Image(\"nginx\", new()\n    {\n        NodeName = \"pve\",\n        DatastoreId = \"local\",\n        Reference = \"docker.io/library/nginx:alpine\",\n        FileName = \"custom_image_name.tar\",\n    });\n\n    var debian = new ProxmoxVE.Oci.Image(\"debian\", new()\n    {\n        NodeName = \"pve\",\n        DatastoreId = \"local\",\n        Reference = \"docker.io/library/debian:bookworm\",\n        UploadTimeout = 900,\n        Overwrite = false,\n        OverwriteUnmanaged = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/oci\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := oci.NewImage(ctx, \"ubuntu_latest\", \u0026oci.ImageArgs{\n\t\t\tNodeName:    pulumi.String(\"pve\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tReference:   pulumi.String(\"docker.io/library/ubuntu:latest\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = oci.NewImage(ctx, \"nginx\", \u0026oci.ImageArgs{\n\t\t\tNodeName:    pulumi.String(\"pve\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tReference:   pulumi.String(\"docker.io/library/nginx:alpine\"),\n\t\t\tFileName:    pulumi.String(\"custom_image_name.tar\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = oci.NewImage(ctx, \"debian\", \u0026oci.ImageArgs{\n\t\t\tNodeName:           pulumi.String(\"pve\"),\n\t\t\tDatastoreId:        pulumi.String(\"local\"),\n\t\t\tReference:          pulumi.String(\"docker.io/library/debian:bookworm\"),\n\t\t\tUploadTimeout:      pulumi.Int(900),\n\t\t\tOverwrite:          pulumi.Bool(false),\n\t\t\tOverwriteUnmanaged: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Oci.Image;\nimport io.muehlbachler.pulumi.proxmoxve.Oci.ImageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var ubuntuLatest = new Image(\"ubuntuLatest\", ImageArgs.builder()\n            .nodeName(\"pve\")\n            .datastoreId(\"local\")\n            .reference(\"docker.io/library/ubuntu:latest\")\n            .build());\n\n        var nginx = new Image(\"nginx\", ImageArgs.builder()\n            .nodeName(\"pve\")\n            .datastoreId(\"local\")\n            .reference(\"docker.io/library/nginx:alpine\")\n            .fileName(\"custom_image_name.tar\")\n            .build());\n\n        var debian = new Image(\"debian\", ImageArgs.builder()\n            .nodeName(\"pve\")\n            .datastoreId(\"local\")\n            .reference(\"docker.io/library/debian:bookworm\")\n            .uploadTimeout(900)\n            .overwrite(false)\n            .overwriteUnmanaged(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ubuntuLatest:\n    type: proxmoxve:Oci:Image\n    name: ubuntu_latest\n    properties:\n      nodeName: pve\n      datastoreId: local\n      reference: docker.io/library/ubuntu:latest\n  nginx:\n    type: proxmoxve:Oci:Image\n    properties:\n      nodeName: pve\n      datastoreId: local\n      reference: docker.io/library/nginx:alpine\n      fileName: custom_image_name.tar\n  debian:\n    type: proxmoxve:Oci:Image\n    properties:\n      nodeName: pve\n      datastoreId: local\n      reference: docker.io/library/debian:bookworm\n      uploadTimeout: 900\n      overwrite: false\n      overwriteUnmanaged: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"datastoreId":{"type":"string","description":"The identifier for the target datastore.\n"},"fileName":{"type":"string","description":"The file name for the pulled OCI image. If not provided, it will be generated automatically. The file will be stored as a .tar file.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"overwrite":{"type":"boolean","description":"By default \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e. If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and the OCI image size has changed in the datastore, it will be replaced. If \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, there will be no check.\n"},"overwriteUnmanaged":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and an OCI image with the same name already exists in the datastore, it will be deleted and the new image will be pulled. If \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e and the image already exists, an error will be returned.\n"},"reference":{"type":"string","description":"The reference to the OCI image.\n"},"size":{"type":"integer","description":"The image size in PVE.\n"},"uploadTimeout":{"type":"integer","description":"The OCI image pull timeout in seconds. Default is 600 (10min).\n"}},"required":["datastoreId","fileName","nodeName","overwrite","overwriteUnmanaged","reference","size","uploadTimeout"],"inputProperties":{"datastoreId":{"type":"string","description":"The identifier for the target datastore.\n"},"fileName":{"type":"string","description":"The file name for the pulled OCI image. If not provided, it will be generated automatically. The file will be stored as a .tar file.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"overwrite":{"type":"boolean","description":"By default \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e. If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and the OCI image size has changed in the datastore, it will be replaced. If \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, there will be no check.\n"},"overwriteUnmanaged":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and an OCI image with the same name already exists in the datastore, it will be deleted and the new image will be pulled. If \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e and the image already exists, an error will be returned.\n"},"reference":{"type":"string","description":"The reference to the OCI image.\n"},"uploadTimeout":{"type":"integer","description":"The OCI image pull timeout in seconds. Default is 600 (10min).\n"}},"requiredInputs":["datastoreId","nodeName","reference"],"stateInputs":{"description":"Input properties used for looking up and filtering Image resources.\n","properties":{"datastoreId":{"type":"string","description":"The identifier for the target datastore.\n"},"fileName":{"type":"string","description":"The file name for the pulled OCI image. If not provided, it will be generated automatically. The file will be stored as a .tar file.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"overwrite":{"type":"boolean","description":"By default \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e. If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and the OCI image size has changed in the datastore, it will be replaced. If \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, there will be no check.\n"},"overwriteUnmanaged":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and an OCI image with the same name already exists in the datastore, it will be deleted and the new image will be pulled. If \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e and the image already exists, an error will be returned.\n"},"reference":{"type":"string","description":"The reference to the OCI image.\n"},"size":{"type":"integer","description":"The image size in PVE.\n"},"uploadTimeout":{"type":"integer","description":"The OCI image pull timeout in seconds. Default is 600 (10min).\n"}},"type":"object"}},"proxmoxve:Permission/group:Group":{"description":"Manages a user group.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsTeam = new proxmoxve.permission.Group(\"operations_team\", {\n    comment: \"Managed by Pulumi\",\n    groupId: \"operations-team\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_team = proxmoxve.permission.Group(\"operations_team\",\n    comment=\"Managed by Pulumi\",\n    group_id=\"operations-team\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var operationsTeam = new ProxmoxVE.Permission.Group(\"operations_team\", new()\n    {\n        Comment = \"Managed by Pulumi\",\n        GroupId = \"operations-team\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := permission.NewGroup(ctx, \"operations_team\", \u0026permission.GroupArgs{\n\t\t\tComment: pulumi.String(\"Managed by Pulumi\"),\n\t\t\tGroupId: pulumi.String(\"operations-team\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Permission.Group;\nimport io.muehlbachler.pulumi.proxmoxve.Permission.GroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var operationsTeam = new Group(\"operationsTeam\", GroupArgs.builder()\n            .comment(\"Managed by Pulumi\")\n            .groupId(\"operations-team\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  operationsTeam:\n    type: proxmoxve:Permission:Group\n    name: operations_team\n    properties:\n      comment: Managed by Pulumi\n      groupId: operations-team\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `group_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Permission/group:Group operations_team operations-team\n```\n\n","properties":{"acls":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/GroupAcl:GroupAcl"},"description":"The access control list (multiple blocks supported).\n"},"comment":{"type":"string","description":"The group comment.\n"},"groupId":{"type":"string","description":"The group identifier.\n"},"members":{"type":"array","items":{"type":"string"},"description":"The group members as a list of `username@realm` entries\n"}},"required":["groupId","members"],"inputProperties":{"acls":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/GroupAcl:GroupAcl"},"description":"The access control list (multiple blocks supported).\n"},"comment":{"type":"string","description":"The group comment.\n"},"groupId":{"type":"string","description":"The group identifier.\n","willReplaceOnChanges":true}},"requiredInputs":["groupId"],"stateInputs":{"description":"Input properties used for looking up and filtering Group resources.\n","properties":{"acls":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/GroupAcl:GroupAcl"},"description":"The access control list (multiple blocks supported).\n"},"comment":{"type":"string","description":"The group comment.\n"},"groupId":{"type":"string","description":"The group identifier.\n","willReplaceOnChanges":true},"members":{"type":"array","items":{"type":"string"},"description":"The group members as a list of `username@realm` entries\n"}},"type":"object"}},"proxmoxve:Permission/pool:Pool":{"description":"Manages a resource pool.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsPool = new proxmoxve.permission.Pool(\"operations_pool\", {\n    comment: \"Managed by Pulumi\",\n    poolId: \"operations-pool\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_pool = proxmoxve.permission.Pool(\"operations_pool\",\n    comment=\"Managed by Pulumi\",\n    pool_id=\"operations-pool\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var operationsPool = new ProxmoxVE.Permission.Pool(\"operations_pool\", new()\n    {\n        Comment = \"Managed by Pulumi\",\n        PoolId = \"operations-pool\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := permission.NewPool(ctx, \"operations_pool\", \u0026permission.PoolArgs{\n\t\t\tComment: pulumi.String(\"Managed by Pulumi\"),\n\t\t\tPoolId:  pulumi.String(\"operations-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Permission.Pool;\nimport io.muehlbachler.pulumi.proxmoxve.Permission.PoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var operationsPool = new Pool(\"operationsPool\", PoolArgs.builder()\n            .comment(\"Managed by Pulumi\")\n            .poolId(\"operations-pool\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  operationsPool:\n    type: proxmoxve:Permission:Pool\n    name: operations_pool\n    properties:\n      comment: Managed by Pulumi\n      poolId: operations-pool\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `pool_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Permission/pool:Pool operations_pool operations-pool\n```\n\n","properties":{"comment":{"type":"string","description":"The pool comment.\n"},"members":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/PoolMember:PoolMember"},"description":"The pool members.\n"},"poolId":{"type":"string","description":"The pool identifier.\n"}},"required":["members","poolId"],"inputProperties":{"comment":{"type":"string","description":"The pool comment.\n"},"poolId":{"type":"string","description":"The pool identifier.\n","willReplaceOnChanges":true}},"requiredInputs":["poolId"],"stateInputs":{"description":"Input properties used for looking up and filtering Pool resources.\n","properties":{"comment":{"type":"string","description":"The pool comment.\n"},"members":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/PoolMember:PoolMember"},"description":"The pool members.\n"},"poolId":{"type":"string","description":"The pool identifier.\n","willReplaceOnChanges":true}},"type":"object"}},"proxmoxve:Permission/role:Role":{"description":"Manages a role.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsMonitoring = new proxmoxve.permission.Role(\"operations_monitoring\", {\n    roleId: \"operations-monitoring\",\n    privileges: [\"VM.GuestAgent.Audit\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_monitoring = proxmoxve.permission.Role(\"operations_monitoring\",\n    role_id=\"operations-monitoring\",\n    privileges=[\"VM.GuestAgent.Audit\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var operationsMonitoring = new ProxmoxVE.Permission.Role(\"operations_monitoring\", new()\n    {\n        RoleId = \"operations-monitoring\",\n        Privileges = new[]\n        {\n            \"VM.GuestAgent.Audit\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := permission.NewRole(ctx, \"operations_monitoring\", \u0026permission.RoleArgs{\n\t\t\tRoleId: pulumi.String(\"operations-monitoring\"),\n\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"VM.GuestAgent.Audit\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Permission.Role;\nimport io.muehlbachler.pulumi.proxmoxve.Permission.RoleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var operationsMonitoring = new Role(\"operationsMonitoring\", RoleArgs.builder()\n            .roleId(\"operations-monitoring\")\n            .privileges(\"VM.GuestAgent.Audit\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  operationsMonitoring:\n    type: proxmoxve:Permission:Role\n    name: operations_monitoring\n    properties:\n      roleId: operations-monitoring\n      privileges:\n        - VM.GuestAgent.Audit\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `role_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Permission/role:Role operations_monitoring operations-monitoring\n```\n\n","properties":{"privileges":{"type":"array","items":{"type":"string"},"description":"The role privileges.\n"},"roleId":{"type":"string","description":"The role identifier.\n"}},"required":["privileges","roleId"],"inputProperties":{"privileges":{"type":"array","items":{"type":"string"},"description":"The role privileges.\n"},"roleId":{"type":"string","description":"The role identifier.\n","willReplaceOnChanges":true}},"requiredInputs":["privileges","roleId"],"stateInputs":{"description":"Input properties used for looking up and filtering Role resources.\n","properties":{"privileges":{"type":"array","items":{"type":"string"},"description":"The role privileges.\n"},"roleId":{"type":"string","description":"The role identifier.\n","willReplaceOnChanges":true}},"type":"object"}},"proxmoxve:Permission/user:User":{"description":"Manages a user.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsMonitoring = new proxmoxve.permission.Role(\"operations_monitoring\", {\n    roleId: \"operations-monitoring\",\n    privileges: [\"VM.GuestAgent.Audit\"],\n});\nconst operationsAutomation = new proxmoxve.permission.User(\"operations_automation\", {\n    acls: [{\n        path: \"/vms/1234\",\n        propagate: true,\n        roleId: operationsMonitoring.roleId,\n    }],\n    comment: \"Managed by Pulumi\",\n    password: \"a-strong-password\",\n    userId: \"operations-automation@pve\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_monitoring = proxmoxve.permission.Role(\"operations_monitoring\",\n    role_id=\"operations-monitoring\",\n    privileges=[\"VM.GuestAgent.Audit\"])\noperations_automation = proxmoxve.permission.User(\"operations_automation\",\n    acls=[{\n        \"path\": \"/vms/1234\",\n        \"propagate\": True,\n        \"role_id\": operations_monitoring.role_id,\n    }],\n    comment=\"Managed by Pulumi\",\n    password=\"a-strong-password\",\n    user_id=\"operations-automation@pve\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var operationsMonitoring = new ProxmoxVE.Permission.Role(\"operations_monitoring\", new()\n    {\n        RoleId = \"operations-monitoring\",\n        Privileges = new[]\n        {\n            \"VM.GuestAgent.Audit\",\n        },\n    });\n\n    var operationsAutomation = new ProxmoxVE.Permission.User(\"operations_automation\", new()\n    {\n        Acls = new[]\n        {\n            new ProxmoxVE.Permission.Inputs.UserAclArgs\n            {\n                Path = \"/vms/1234\",\n                Propagate = true,\n                RoleId = operationsMonitoring.RoleId,\n            },\n        },\n        Comment = \"Managed by Pulumi\",\n        Password = \"a-strong-password\",\n        UserId = \"operations-automation@pve\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\toperationsMonitoring, err := permission.NewRole(ctx, \"operations_monitoring\", \u0026permission.RoleArgs{\n\t\t\tRoleId: pulumi.String(\"operations-monitoring\"),\n\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"VM.GuestAgent.Audit\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = permission.NewUser(ctx, \"operations_automation\", \u0026permission.UserArgs{\n\t\t\tAcls: permission.UserAclArray{\n\t\t\t\t\u0026permission.UserAclArgs{\n\t\t\t\t\tPath:      pulumi.String(\"/vms/1234\"),\n\t\t\t\t\tPropagate: pulumi.Bool(true),\n\t\t\t\t\tRoleId:    operationsMonitoring.RoleId,\n\t\t\t\t},\n\t\t\t},\n\t\t\tComment:  pulumi.String(\"Managed by Pulumi\"),\n\t\t\tPassword: pulumi.String(\"a-strong-password\"),\n\t\t\tUserId:   pulumi.String(\"operations-automation@pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Permission.Role;\nimport io.muehlbachler.pulumi.proxmoxve.Permission.RoleArgs;\nimport io.muehlbachler.pulumi.proxmoxve.Permission.User;\nimport io.muehlbachler.pulumi.proxmoxve.Permission.UserArgs;\nimport com.pulumi.proxmoxve.Permission.inputs.UserAclArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var operationsMonitoring = new Role(\"operationsMonitoring\", RoleArgs.builder()\n            .roleId(\"operations-monitoring\")\n            .privileges(\"VM.GuestAgent.Audit\")\n            .build());\n\n        var operationsAutomation = new User(\"operationsAutomation\", UserArgs.builder()\n            .acls(UserAclArgs.builder()\n                .path(\"/vms/1234\")\n                .propagate(true)\n                .roleId(operationsMonitoring.roleId())\n                .build())\n            .comment(\"Managed by Pulumi\")\n            .password(\"a-strong-password\")\n            .userId(\"operations-automation@pve\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  operationsAutomation:\n    type: proxmoxve:Permission:User\n    name: operations_automation\n    properties:\n      acls:\n        - path: /vms/1234\n          propagate: true\n          roleId: ${operationsMonitoring.roleId}\n      comment: Managed by Pulumi\n      password: a-strong-password\n      userId: operations-automation@pve\n  operationsMonitoring:\n    type: proxmoxve:Permission:Role\n    name: operations_monitoring\n    properties:\n      roleId: operations-monitoring\n      privileges:\n        - VM.GuestAgent.Audit\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `user_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Permission/user:User operations_automation operations-automation@pve\n```\n\n","properties":{"acls":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/UserAcl:UserAcl"},"description":"The access control list (multiple blocks supported).\n"},"comment":{"type":"string","description":"The user comment.\n"},"email":{"type":"string","description":"The user's email address.\n"},"enabled":{"type":"boolean","description":"Whether the user account is enabled.\n"},"expirationDate":{"type":"string","description":"The user account's expiration date (RFC 3339).\n"},"firstName":{"type":"string","description":"The user's first name.\n"},"groups":{"type":"array","items":{"type":"string"},"description":"The user's groups.\n"},"keys":{"type":"string","description":"The user's keys.\n"},"lastName":{"type":"string","description":"The user's last name.\n"},"password":{"type":"string","description":"The user's password. Required for PVE or PAM realms.\n","secret":true},"userId":{"type":"string","description":"The user identifier.\n"}},"required":["userId"],"inputProperties":{"acls":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/UserAcl:UserAcl"},"description":"The access control list (multiple blocks supported).\n"},"comment":{"type":"string","description":"The user comment.\n"},"email":{"type":"string","description":"The user's email address.\n"},"enabled":{"type":"boolean","description":"Whether the user account is enabled.\n"},"expirationDate":{"type":"string","description":"The user account's expiration date (RFC 3339).\n"},"firstName":{"type":"string","description":"The user's first name.\n"},"groups":{"type":"array","items":{"type":"string"},"description":"The user's groups.\n"},"keys":{"type":"string","description":"The user's keys.\n"},"lastName":{"type":"string","description":"The user's last name.\n"},"password":{"type":"string","description":"The user's password. Required for PVE or PAM realms.\n","secret":true},"userId":{"type":"string","description":"The user identifier.\n","willReplaceOnChanges":true}},"requiredInputs":["userId"],"stateInputs":{"description":"Input properties used for looking up and filtering User resources.\n","properties":{"acls":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/UserAcl:UserAcl"},"description":"The access control list (multiple blocks supported).\n"},"comment":{"type":"string","description":"The user comment.\n"},"email":{"type":"string","description":"The user's email address.\n"},"enabled":{"type":"boolean","description":"Whether the user account is enabled.\n"},"expirationDate":{"type":"string","description":"The user account's expiration date (RFC 3339).\n"},"firstName":{"type":"string","description":"The user's first name.\n"},"groups":{"type":"array","items":{"type":"string"},"description":"The user's groups.\n"},"keys":{"type":"string","description":"The user's keys.\n"},"lastName":{"type":"string","description":"The user's last name.\n"},"password":{"type":"string","description":"The user's password. Required for PVE or PAM realms.\n","secret":true},"userId":{"type":"string","description":"The user identifier.\n","willReplaceOnChanges":true}},"type":"object"}},"proxmoxve:Pool/membership:Membership":{"description":"Manages resource pool memberships for containers, virtual machines and storages\n\n\u003e This resource requires the `Pool.Allocate` permission on the pool path (e.g., `/pool/{poolid}`).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst testVm1 = new proxmoxve.vm.VirtualMachine(\"test_vm1\", {\n    vmId: 1234,\n    nodeName: \"pve\",\n    started: false,\n});\nconst testPool = new proxmoxve.permission.Pool(\"test_pool\", {poolId: \"test-pool\"});\nconst vmMembership = new proxmoxve.pool.Membership(\"vm_membership\", {\n    poolId: testPool.id,\n    vmId: testVm1.id,\n});\nconst storageMembership = new proxmoxve.pool.Membership(\"storage_membership\", {\n    poolId: testPool.id,\n    storageId: \"local-lvm\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\ntest_vm1 = proxmoxve.vm.VirtualMachine(\"test_vm1\",\n    vm_id=1234,\n    node_name=\"pve\",\n    started=False)\ntest_pool = proxmoxve.permission.Pool(\"test_pool\", pool_id=\"test-pool\")\nvm_membership = proxmoxve.pool.Membership(\"vm_membership\",\n    pool_id=test_pool.id,\n    vm_id=test_vm1.id)\nstorage_membership = proxmoxve.pool.Membership(\"storage_membership\",\n    pool_id=test_pool.id,\n    storage_id=\"local-lvm\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var testVm1 = new ProxmoxVE.VM.VirtualMachine(\"test_vm1\", new()\n    {\n        VmId = 1234,\n        NodeName = \"pve\",\n        Started = false,\n    });\n\n    var testPool = new ProxmoxVE.Permission.Pool(\"test_pool\", new()\n    {\n        PoolId = \"test-pool\",\n    });\n\n    var vmMembership = new ProxmoxVE.Pool.Membership(\"vm_membership\", new()\n    {\n        PoolId = testPool.Id,\n        VmId = testVm1.Id,\n    });\n\n    var storageMembership = new ProxmoxVE.Pool.Membership(\"storage_membership\", new()\n    {\n        PoolId = testPool.Id,\n        StorageId = \"local-lvm\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/permission\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/pool\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/vm\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestVm1, err := vm.NewVirtualMachine(ctx, \"test_vm1\", \u0026vm.VirtualMachineArgs{\n\t\t\tVmId:     pulumi.Int(1234),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tStarted:  pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestPool, err := permission.NewPool(ctx, \"test_pool\", \u0026permission.PoolArgs{\n\t\t\tPoolId: pulumi.String(\"test-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pool.NewMembership(ctx, \"vm_membership\", \u0026pool.MembershipArgs{\n\t\t\tPoolId: testPool.ID(),\n\t\t\tVmId:   testVm1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pool.NewMembership(ctx, \"storage_membership\", \u0026pool.MembershipArgs{\n\t\t\tPoolId:    testPool.ID(),\n\t\t\tStorageId: pulumi.String(\"local-lvm\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.VM.VirtualMachine;\nimport io.muehlbachler.pulumi.proxmoxve.VM.VirtualMachineArgs;\nimport io.muehlbachler.pulumi.proxmoxve.Permission.Pool;\nimport io.muehlbachler.pulumi.proxmoxve.Permission.PoolArgs;\nimport io.muehlbachler.pulumi.proxmoxve.Pool.Membership;\nimport io.muehlbachler.pulumi.proxmoxve.Pool.MembershipArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var testVm1 = new VirtualMachine(\"testVm1\", VirtualMachineArgs.builder()\n            .vmId(1234)\n            .nodeName(\"pve\")\n            .started(false)\n            .build());\n\n        var testPool = new Pool(\"testPool\", PoolArgs.builder()\n            .poolId(\"test-pool\")\n            .build());\n\n        var vmMembership = new Membership(\"vmMembership\", MembershipArgs.builder()\n            .poolId(testPool.id())\n            .vmId(testVm1.id())\n            .build());\n\n        var storageMembership = new Membership(\"storageMembership\", MembershipArgs.builder()\n            .poolId(testPool.id())\n            .storageId(\"local-lvm\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  testVm1:\n    type: proxmoxve:VM:VirtualMachine\n    name: test_vm1\n    properties:\n      vmId: 1234\n      nodeName: pve\n      started: false\n  testPool:\n    type: proxmoxve:Permission:Pool\n    name: test_pool\n    properties:\n      poolId: test-pool\n  vmMembership:\n    type: proxmoxve:Pool:Membership\n    name: vm_membership\n    properties:\n      poolId: ${testPool.id}\n      vmId: ${testVm1.id}\n  storageMembership:\n    type: proxmoxve:Pool:Membership\n    name: storage_membership\n    properties:\n      poolId: ${testPool.id}\n      storageId: local-lvm\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nResource pool membership can be imported using its unique identifier, e.g.: {pool_id}/{type}/{member_id}\n\n```sh\n$ pulumi import proxmoxve:Pool/membership:Membership example_membership test-pool/vm/102\n```\n\n","properties":{"poolId":{"type":"string","description":"Resource pool id\n"},"storageId":{"type":"string","description":"Storage id\n"},"type":{"type":"string","description":"Resource pool membership type (can be \u003cspan pulumi-lang-nodejs=\"`vm`\" pulumi-lang-dotnet=\"`Vm`\" pulumi-lang-go=\"`vm`\" pulumi-lang-python=\"`vm`\" pulumi-lang-yaml=\"`vm`\" pulumi-lang-java=\"`vm`\"\u003e`vm`\u003c/span\u003e for VMs and CTs or \u003cspan pulumi-lang-nodejs=\"`storage`\" pulumi-lang-dotnet=\"`Storage`\" pulumi-lang-go=\"`storage`\" pulumi-lang-python=\"`storage`\" pulumi-lang-yaml=\"`storage`\" pulumi-lang-java=\"`storage`\"\u003e`storage`\u003c/span\u003e for storages)\n"},"vmId":{"type":"integer","description":"VM or CT id\n"}},"required":["poolId","type"],"inputProperties":{"poolId":{"type":"string","description":"Resource pool id\n"},"storageId":{"type":"string","description":"Storage id\n"},"vmId":{"type":"integer","description":"VM or CT id\n"}},"requiredInputs":["poolId"],"stateInputs":{"description":"Input properties used for looking up and filtering Membership resources.\n","properties":{"poolId":{"type":"string","description":"Resource pool id\n"},"storageId":{"type":"string","description":"Storage id\n"},"type":{"type":"string","description":"Resource pool membership type (can be \u003cspan pulumi-lang-nodejs=\"`vm`\" pulumi-lang-dotnet=\"`Vm`\" pulumi-lang-go=\"`vm`\" pulumi-lang-python=\"`vm`\" pulumi-lang-yaml=\"`vm`\" pulumi-lang-java=\"`vm`\"\u003e`vm`\u003c/span\u003e for VMs and CTs or \u003cspan pulumi-lang-nodejs=\"`storage`\" pulumi-lang-dotnet=\"`Storage`\" pulumi-lang-go=\"`storage`\" pulumi-lang-python=\"`storage`\" pulumi-lang-yaml=\"`storage`\" pulumi-lang-java=\"`storage`\"\u003e`storage`\u003c/span\u003e for storages)\n"},"vmId":{"type":"integer","description":"VM or CT id\n"}},"type":"object"}},"proxmoxve:Realm/ldap:Ldap":{"description":"\n\n## Import\n\n#!/usr/bin/env sh\n\nLDAP realms can be imported using the realm identifier, e.g.:\n\n```sh\n$ pulumi import proxmoxve:Realm/ldap:Ldap example example.com\n```\n\n-\u003e When importing, the `bind_password` attribute cannot be imported since it's not returned by the Proxmox API. You'll need to set this attribute in your Terraform configuration after the import to manage it with Terraform.\n\n","properties":{"baseDn":{"type":"string","description":"LDAP base DN for user searches (e.g., 'ou=users,dc=example,dc=com').\n"},"bindDn":{"type":"string","description":"LDAP bind DN for authentication (e.g., 'cn=admin,dc=example,dc=com').\n"},"bindPassword":{"type":"string","description":"Password for the bind DN. Note: stored in Proxmox but not returned by API.\n","secret":true},"caPath":{"type":"string","description":"Path to CA certificate file for SSL verification.\n"},"caseSensitive":{"type":"boolean","description":"Enable case-sensitive username matching.\n"},"certKeyPath":{"type":"string","description":"Path to client certificate key.\n"},"certPath":{"type":"string","description":"Path to client certificate for SSL authentication.\n"},"comment":{"type":"string","description":"Description of the realm.\n"},"default":{"type":"boolean","description":"Use this realm as the default for login.\n"},"filter":{"type":"string","description":"LDAP filter for user searches.\n"},"groupClasses":{"type":"string","description":"LDAP objectClasses for groups (comma-separated).\n"},"groupDn":{"type":"string","description":"LDAP base DN for group searches.\n"},"groupFilter":{"type":"string","description":"LDAP filter for group searches.\n"},"groupNameAttr":{"type":"string","description":"LDAP attribute representing the group name.\n"},"mode":{"type":"string","description":"LDAP connection mode (ldap, ldaps, ldap+starttls).\n"},"port":{"type":"integer","description":"LDAP server port. Default: 389 (LDAP) or 636 (LDAPS).\n"},"realm":{"type":"string","description":"Realm identifier (e.g., 'example.com').\n"},"secure":{"type":"boolean","description":"Use LDAPS (LDAP over SSL/TLS) instead of plain LDAP.\n","deprecationMessage":"Deprecated by Proxmox: use mode instead."},"server1":{"type":"string","description":"Primary LDAP server hostname or IP address.\n"},"server2":{"type":"string","description":"Fallback LDAP server hostname or IP address.\n"},"sslVersion":{"type":"string","description":"SSL/TLS version (tlsv1, tlsv1*1, tlsv1*2, tlsv1_3).\n"},"syncAttributes":{"type":"string","description":"Comma-separated list of attributes to sync (e.g., 'email=mail,firstname=givenName').\n"},"syncDefaultsOptions":{"type":"string","description":"Default synchronization options. Format: comma-separated 'key=value' pairs. Valid keys: 'scope' (users/groups/both), 'enable-new' (1/0), 'remove-vanished' (semicolon-separated: entry/acl/properties), 'full' (deprecated), 'purge' (deprecated). Example: 'scope=users,enable-new=1,remove-vanished=entry;acl'.\n"},"userAttr":{"type":"string","description":"LDAP attribute representing the username.\n"},"userClasses":{"type":"string","description":"LDAP objectClasses for users (comma-separated).\n"},"verify":{"type":"boolean","description":"Verify LDAP server SSL certificate.\n"}},"required":["baseDn","caseSensitive","default","realm","secure","server1","userAttr","verify"],"inputProperties":{"baseDn":{"type":"string","description":"LDAP base DN for user searches (e.g., 'ou=users,dc=example,dc=com').\n"},"bindDn":{"type":"string","description":"LDAP bind DN for authentication (e.g., 'cn=admin,dc=example,dc=com').\n"},"bindPassword":{"type":"string","description":"Password for the bind DN. Note: stored in Proxmox but not returned by API.\n","secret":true},"caPath":{"type":"string","description":"Path to CA certificate file for SSL verification.\n"},"caseSensitive":{"type":"boolean","description":"Enable case-sensitive username matching.\n"},"certKeyPath":{"type":"string","description":"Path to client certificate key.\n"},"certPath":{"type":"string","description":"Path to client certificate for SSL authentication.\n"},"comment":{"type":"string","description":"Description of the realm.\n"},"default":{"type":"boolean","description":"Use this realm as the default for login.\n"},"filter":{"type":"string","description":"LDAP filter for user searches.\n"},"groupClasses":{"type":"string","description":"LDAP objectClasses for groups (comma-separated).\n"},"groupDn":{"type":"string","description":"LDAP base DN for group searches.\n"},"groupFilter":{"type":"string","description":"LDAP filter for group searches.\n"},"groupNameAttr":{"type":"string","description":"LDAP attribute representing the group name.\n"},"mode":{"type":"string","description":"LDAP connection mode (ldap, ldaps, ldap+starttls).\n"},"port":{"type":"integer","description":"LDAP server port. Default: 389 (LDAP) or 636 (LDAPS).\n"},"realm":{"type":"string","description":"Realm identifier (e.g., 'example.com').\n"},"secure":{"type":"boolean","description":"Use LDAPS (LDAP over SSL/TLS) instead of plain LDAP.\n","deprecationMessage":"Deprecated by Proxmox: use mode instead."},"server1":{"type":"string","description":"Primary LDAP server hostname or IP address.\n"},"server2":{"type":"string","description":"Fallback LDAP server hostname or IP address.\n"},"sslVersion":{"type":"string","description":"SSL/TLS version (tlsv1, tlsv1*1, tlsv1*2, tlsv1_3).\n"},"syncAttributes":{"type":"string","description":"Comma-separated list of attributes to sync (e.g., 'email=mail,firstname=givenName').\n"},"syncDefaultsOptions":{"type":"string","description":"Default synchronization options. Format: comma-separated 'key=value' pairs. Valid keys: 'scope' (users/groups/both), 'enable-new' (1/0), 'remove-vanished' (semicolon-separated: entry/acl/properties), 'full' (deprecated), 'purge' (deprecated). Example: 'scope=users,enable-new=1,remove-vanished=entry;acl'.\n"},"userAttr":{"type":"string","description":"LDAP attribute representing the username.\n"},"userClasses":{"type":"string","description":"LDAP objectClasses for users (comma-separated).\n"},"verify":{"type":"boolean","description":"Verify LDAP server SSL certificate.\n"}},"requiredInputs":["baseDn","realm","server1"],"stateInputs":{"description":"Input properties used for looking up and filtering Ldap resources.\n","properties":{"baseDn":{"type":"string","description":"LDAP base DN for user searches (e.g., 'ou=users,dc=example,dc=com').\n"},"bindDn":{"type":"string","description":"LDAP bind DN for authentication (e.g., 'cn=admin,dc=example,dc=com').\n"},"bindPassword":{"type":"string","description":"Password for the bind DN. Note: stored in Proxmox but not returned by API.\n","secret":true},"caPath":{"type":"string","description":"Path to CA certificate file for SSL verification.\n"},"caseSensitive":{"type":"boolean","description":"Enable case-sensitive username matching.\n"},"certKeyPath":{"type":"string","description":"Path to client certificate key.\n"},"certPath":{"type":"string","description":"Path to client certificate for SSL authentication.\n"},"comment":{"type":"string","description":"Description of the realm.\n"},"default":{"type":"boolean","description":"Use this realm as the default for login.\n"},"filter":{"type":"string","description":"LDAP filter for user searches.\n"},"groupClasses":{"type":"string","description":"LDAP objectClasses for groups (comma-separated).\n"},"groupDn":{"type":"string","description":"LDAP base DN for group searches.\n"},"groupFilter":{"type":"string","description":"LDAP filter for group searches.\n"},"groupNameAttr":{"type":"string","description":"LDAP attribute representing the group name.\n"},"mode":{"type":"string","description":"LDAP connection mode (ldap, ldaps, ldap+starttls).\n"},"port":{"type":"integer","description":"LDAP server port. Default: 389 (LDAP) or 636 (LDAPS).\n"},"realm":{"type":"string","description":"Realm identifier (e.g., 'example.com').\n"},"secure":{"type":"boolean","description":"Use LDAPS (LDAP over SSL/TLS) instead of plain LDAP.\n","deprecationMessage":"Deprecated by Proxmox: use mode instead."},"server1":{"type":"string","description":"Primary LDAP server hostname or IP address.\n"},"server2":{"type":"string","description":"Fallback LDAP server hostname or IP address.\n"},"sslVersion":{"type":"string","description":"SSL/TLS version (tlsv1, tlsv1*1, tlsv1*2, tlsv1_3).\n"},"syncAttributes":{"type":"string","description":"Comma-separated list of attributes to sync (e.g., 'email=mail,firstname=givenName').\n"},"syncDefaultsOptions":{"type":"string","description":"Default synchronization options. Format: comma-separated 'key=value' pairs. Valid keys: 'scope' (users/groups/both), 'enable-new' (1/0), 'remove-vanished' (semicolon-separated: entry/acl/properties), 'full' (deprecated), 'purge' (deprecated). Example: 'scope=users,enable-new=1,remove-vanished=entry;acl'.\n"},"userAttr":{"type":"string","description":"LDAP attribute representing the username.\n"},"userClasses":{"type":"string","description":"LDAP objectClasses for users (comma-separated).\n"},"verify":{"type":"boolean","description":"Verify LDAP server SSL certificate.\n"}},"type":"object"}},"proxmoxve:Realm/sync:Sync":{"description":"\n\n## Import\n\n#!/usr/bin/env sh\n\nRealm sync resources can be imported by realm name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:Realm/sync:Sync example example.com\n```\n\nImporting only populates the `realm` and `id` attributes; other fields must\n\nbe set in configuration.\n\n","properties":{"dryRun":{"type":"boolean","description":"Only simulate the sync without applying changes.\n"},"enableNew":{"type":"boolean","description":"Enable newly synced users.\n"},"full":{"type":"boolean","description":"Perform a full sync.\n","deprecationMessage":"Deprecated by Proxmox: use\u003cspan pulumi-lang-nodejs=\" removeVanished \" pulumi-lang-dotnet=\" RemoveVanished \" pulumi-lang-go=\" removeVanished \" pulumi-lang-python=\" remove_vanished \" pulumi-lang-yaml=\" removeVanished \" pulumi-lang-java=\" removeVanished \"\u003e remove_vanished \u003c/span\u003einstead."},"purge":{"type":"boolean","description":"Purge removed entries.\n","deprecationMessage":"Deprecated by Proxmox: use\u003cspan pulumi-lang-nodejs=\" removeVanished \" pulumi-lang-dotnet=\" RemoveVanished \" pulumi-lang-go=\" removeVanished \" pulumi-lang-python=\" remove_vanished \" pulumi-lang-yaml=\" removeVanished \" pulumi-lang-java=\" removeVanished \"\u003e remove_vanished \u003c/span\u003einstead."},"realm":{"type":"string","description":"Name of the realm to synchronize.\n"},"removeVanished":{"type":"string","description":"How to handle vanished entries (e.g. `acl;properties;entry` or \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e).\n"},"scope":{"type":"string","description":"Sync scope: users, groups, or both.\n"}},"required":["realm"],"inputProperties":{"dryRun":{"type":"boolean","description":"Only simulate the sync without applying changes.\n"},"enableNew":{"type":"boolean","description":"Enable newly synced users.\n"},"full":{"type":"boolean","description":"Perform a full sync.\n","deprecationMessage":"Deprecated by Proxmox: use\u003cspan pulumi-lang-nodejs=\" removeVanished \" pulumi-lang-dotnet=\" RemoveVanished \" pulumi-lang-go=\" removeVanished \" pulumi-lang-python=\" remove_vanished \" pulumi-lang-yaml=\" removeVanished \" pulumi-lang-java=\" removeVanished \"\u003e remove_vanished \u003c/span\u003einstead."},"purge":{"type":"boolean","description":"Purge removed entries.\n","deprecationMessage":"Deprecated by Proxmox: use\u003cspan pulumi-lang-nodejs=\" removeVanished \" pulumi-lang-dotnet=\" RemoveVanished \" pulumi-lang-go=\" removeVanished \" pulumi-lang-python=\" remove_vanished \" pulumi-lang-yaml=\" removeVanished \" pulumi-lang-java=\" removeVanished \"\u003e remove_vanished \u003c/span\u003einstead."},"realm":{"type":"string","description":"Name of the realm to synchronize.\n"},"removeVanished":{"type":"string","description":"How to handle vanished entries (e.g. `acl;properties;entry` or \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e).\n"},"scope":{"type":"string","description":"Sync scope: users, groups, or both.\n"}},"requiredInputs":["realm"],"stateInputs":{"description":"Input properties used for looking up and filtering Sync resources.\n","properties":{"dryRun":{"type":"boolean","description":"Only simulate the sync without applying changes.\n"},"enableNew":{"type":"boolean","description":"Enable newly synced users.\n"},"full":{"type":"boolean","description":"Perform a full sync.\n","deprecationMessage":"Deprecated by Proxmox: use\u003cspan pulumi-lang-nodejs=\" removeVanished \" pulumi-lang-dotnet=\" RemoveVanished \" pulumi-lang-go=\" removeVanished \" pulumi-lang-python=\" remove_vanished \" pulumi-lang-yaml=\" removeVanished \" pulumi-lang-java=\" removeVanished \"\u003e remove_vanished \u003c/span\u003einstead."},"purge":{"type":"boolean","description":"Purge removed entries.\n","deprecationMessage":"Deprecated by Proxmox: use\u003cspan pulumi-lang-nodejs=\" removeVanished \" pulumi-lang-dotnet=\" RemoveVanished \" pulumi-lang-go=\" removeVanished \" pulumi-lang-python=\" remove_vanished \" pulumi-lang-yaml=\" removeVanished \" pulumi-lang-java=\" removeVanished \"\u003e remove_vanished \u003c/span\u003einstead."},"realm":{"type":"string","description":"Name of the realm to synchronize.\n"},"removeVanished":{"type":"string","description":"How to handle vanished entries (e.g. `acl;properties;entry` or \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e).\n"},"scope":{"type":"string","description":"Sync scope: users, groups, or both.\n"}},"type":"object"}},"proxmoxve:SDNFabric/oSPF:OSPF":{"description":"OSPF Fabric in Proxmox SDN. Fabrics in Proxmox VE SDN provide automated routing between nodes in a cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst main = new proxmoxve.sdnfabric.OSPF(\"main\", {\n    ospfId: \"main-fabric\",\n    ipPrefix: \"10.0.0.0/16\",\n    area: \"0\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nmain = proxmoxve.sdnfabric.OSPF(\"main\",\n    ospf_id=\"main-fabric\",\n    ip_prefix=\"10.0.0.0/16\",\n    area=\"0\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new ProxmoxVE.SDNFabric.OSPF(\"main\", new()\n    {\n        OspfId = \"main-fabric\",\n        IpPrefix = \"10.0.0.0/16\",\n        Area = \"0\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/sdnfabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sdnfabric.NewOSPF(ctx, \"main\", \u0026sdnfabric.OSPFArgs{\n\t\t\tOspfId:   pulumi.String(\"main-fabric\"),\n\t\t\tIpPrefix: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tArea:     pulumi.String(\"0\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.SDNFabric.OSPF;\nimport io.muehlbachler.pulumi.proxmoxve.SDNFabric.OSPFArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var main = new OSPF(\"main\", OSPFArgs.builder()\n            .ospfId(\"main-fabric\")\n            .ipPrefix(\"10.0.0.0/16\")\n            .area(\"0\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: proxmoxve:SDNFabric:OSPF\n    properties:\n      ospfId: main-fabric\n      ipPrefix: 10.0.0.0/16\n      area: '0'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"area":{"type":"string","description":"OSPF area. Either a IPv4 address or a 32-bit number. Gets validated in rust.\n"},"ipPrefix":{"type":"string","description":"IPv4 prefix cidr for the fabric.\n"},"ospfId":{"type":"string","description":"The unique identifier of the SDN fabric.\n"}},"required":["area","ospfId","ipPrefix"],"inputProperties":{"area":{"type":"string","description":"OSPF area. Either a IPv4 address or a 32-bit number. Gets validated in rust.\n"},"ipPrefix":{"type":"string","description":"IPv4 prefix cidr for the fabric.\n"},"ospfId":{"type":"string","description":"The unique identifier of the SDN fabric.\n"}},"requiredInputs":["area","ospfId","ipPrefix"],"stateInputs":{"description":"Input properties used for looking up and filtering OSPF resources.\n","properties":{"area":{"type":"string","description":"OSPF area. Either a IPv4 address or a 32-bit number. Gets validated in rust.\n"},"ipPrefix":{"type":"string","description":"IPv4 prefix cidr for the fabric.\n"},"ospfId":{"type":"string","description":"The unique identifier of the SDN fabric.\n"}},"type":"object"}},"proxmoxve:SDNFabric/openFabric:OpenFabric":{"description":"OpenFabric Fabric in Proxmox SDN. Fabrics in Proxmox VE SDN provide automated routing between nodes in a cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst main = new proxmoxve.sdnfabric.OpenFabric(\"main\", {\n    fabricId: \"main-fabric\",\n    ipPrefix: \"10.0.0.0/16\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nmain = proxmoxve.sdnfabric.OpenFabric(\"main\",\n    fabric_id=\"main-fabric\",\n    ip_prefix=\"10.0.0.0/16\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new ProxmoxVE.SDNFabric.OpenFabric(\"main\", new()\n    {\n        FabricId = \"main-fabric\",\n        IpPrefix = \"10.0.0.0/16\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/sdnfabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sdnfabric.NewOpenFabric(ctx, \"main\", \u0026sdnfabric.OpenFabricArgs{\n\t\t\tFabricId: pulumi.String(\"main-fabric\"),\n\t\t\tIpPrefix: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.SDNFabric.OpenFabric;\nimport io.muehlbachler.pulumi.proxmoxve.SDNFabric.OpenFabricArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var main = new OpenFabric(\"main\", OpenFabricArgs.builder()\n            .fabricId(\"main-fabric\")\n            .ipPrefix(\"10.0.0.0/16\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: proxmoxve:SDNFabric:OpenFabric\n    properties:\n      fabricId: main-fabric\n      ipPrefix: 10.0.0.0/16\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"csnpInterval":{"type":"integer","description":"The\u003cspan pulumi-lang-nodejs=\" csnpInterval \" pulumi-lang-dotnet=\" CsnpInterval \" pulumi-lang-go=\" csnpInterval \" pulumi-lang-python=\" csnp_interval \" pulumi-lang-yaml=\" csnpInterval \" pulumi-lang-java=\" csnpInterval \"\u003e csnp_interval \u003c/span\u003eproperty for OpenFabric.\n"},"fabricId":{"type":"string","description":"The unique identifier of the SDN fabric.\n"},"helloInterval":{"type":"integer","description":"The\u003cspan pulumi-lang-nodejs=\" helloInterval \" pulumi-lang-dotnet=\" HelloInterval \" pulumi-lang-go=\" helloInterval \" pulumi-lang-python=\" hello_interval \" pulumi-lang-yaml=\" helloInterval \" pulumi-lang-java=\" helloInterval \"\u003e hello_interval \u003c/span\u003eproperty for OpenFabric.\n"},"ip6Prefix":{"type":"string","description":"IPv6 prefix cidr for the fabric.\n"},"ipPrefix":{"type":"string","description":"IPv4 prefix cidr for the fabric.\n"}},"required":["fabricId"],"inputProperties":{"csnpInterval":{"type":"integer","description":"The\u003cspan pulumi-lang-nodejs=\" csnpInterval \" pulumi-lang-dotnet=\" CsnpInterval \" pulumi-lang-go=\" csnpInterval \" pulumi-lang-python=\" csnp_interval \" pulumi-lang-yaml=\" csnpInterval \" pulumi-lang-java=\" csnpInterval \"\u003e csnp_interval \u003c/span\u003eproperty for OpenFabric.\n"},"fabricId":{"type":"string","description":"The unique identifier of the SDN fabric.\n"},"helloInterval":{"type":"integer","description":"The\u003cspan pulumi-lang-nodejs=\" helloInterval \" pulumi-lang-dotnet=\" HelloInterval \" pulumi-lang-go=\" helloInterval \" pulumi-lang-python=\" hello_interval \" pulumi-lang-yaml=\" helloInterval \" pulumi-lang-java=\" helloInterval \"\u003e hello_interval \u003c/span\u003eproperty for OpenFabric.\n"},"ip6Prefix":{"type":"string","description":"IPv6 prefix cidr for the fabric.\n"},"ipPrefix":{"type":"string","description":"IPv4 prefix cidr for the fabric.\n"}},"requiredInputs":["fabricId"],"stateInputs":{"description":"Input properties used for looking up and filtering OpenFabric resources.\n","properties":{"csnpInterval":{"type":"integer","description":"The\u003cspan pulumi-lang-nodejs=\" csnpInterval \" pulumi-lang-dotnet=\" CsnpInterval \" pulumi-lang-go=\" csnpInterval \" pulumi-lang-python=\" csnp_interval \" pulumi-lang-yaml=\" csnpInterval \" pulumi-lang-java=\" csnpInterval \"\u003e csnp_interval \u003c/span\u003eproperty for OpenFabric.\n"},"fabricId":{"type":"string","description":"The unique identifier of the SDN fabric.\n"},"helloInterval":{"type":"integer","description":"The\u003cspan pulumi-lang-nodejs=\" helloInterval \" pulumi-lang-dotnet=\" HelloInterval \" pulumi-lang-go=\" helloInterval \" pulumi-lang-python=\" hello_interval \" pulumi-lang-yaml=\" helloInterval \" pulumi-lang-java=\" helloInterval \"\u003e hello_interval \u003c/span\u003eproperty for OpenFabric.\n"},"ip6Prefix":{"type":"string","description":"IPv6 prefix cidr for the fabric.\n"},"ipPrefix":{"type":"string","description":"IPv4 prefix cidr for the fabric.\n"}},"type":"object"}},"proxmoxve:SDNZone/evpn:Evpn":{"description":"EVPN Zone in Proxmox SDN. The EVPN zone creates a routable Layer 3 network, capable of spanning across multiple clusters.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.sdnzone.Evpn(\"example\", {\n    zoneId: \"evpn1\",\n    nodes: [\"pve\"],\n    controller: \"evpn-controller1\",\n    vrfVxlan: 4000,\n    advertiseSubnets: true,\n    disableArpNdSuppression: false,\n    exitNodes: [\n        \"pve-exit1\",\n        \"pve-exit2\",\n    ],\n    exitNodesLocalRouting: true,\n    primaryExitNode: \"pve-exit1\",\n    rtImport: \"65000:65000\",\n    mtu: 1450,\n    dns: \"1.1.1.1\",\n    dnsZone: \"example.com\",\n    ipam: \"pve\",\n    reverseDns: \"1.1.1.1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.sdnzone.Evpn(\"example\",\n    zone_id=\"evpn1\",\n    nodes=[\"pve\"],\n    controller=\"evpn-controller1\",\n    vrf_vxlan=4000,\n    advertise_subnets=True,\n    disable_arp_nd_suppression=False,\n    exit_nodes=[\n        \"pve-exit1\",\n        \"pve-exit2\",\n    ],\n    exit_nodes_local_routing=True,\n    primary_exit_node=\"pve-exit1\",\n    rt_import=\"65000:65000\",\n    mtu=1450,\n    dns=\"1.1.1.1\",\n    dns_zone=\"example.com\",\n    ipam=\"pve\",\n    reverse_dns=\"1.1.1.1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ProxmoxVE.SDNZone.Evpn(\"example\", new()\n    {\n        ZoneId = \"evpn1\",\n        Nodes = new[]\n        {\n            \"pve\",\n        },\n        Controller = \"evpn-controller1\",\n        VrfVxlan = 4000,\n        AdvertiseSubnets = true,\n        DisableArpNdSuppression = false,\n        ExitNodes = new[]\n        {\n            \"pve-exit1\",\n            \"pve-exit2\",\n        },\n        ExitNodesLocalRouting = true,\n        PrimaryExitNode = \"pve-exit1\",\n        RtImport = \"65000:65000\",\n        Mtu = 1450,\n        Dns = \"1.1.1.1\",\n        DnsZone = \"example.com\",\n        Ipam = \"pve\",\n        ReverseDns = \"1.1.1.1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/sdnzone\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sdnzone.NewEvpn(ctx, \"example\", \u0026sdnzone.EvpnArgs{\n\t\t\tZoneId: pulumi.String(\"evpn1\"),\n\t\t\tNodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"pve\"),\n\t\t\t},\n\t\t\tController:              pulumi.String(\"evpn-controller1\"),\n\t\t\tVrfVxlan:                pulumi.Int(4000),\n\t\t\tAdvertiseSubnets:        pulumi.Bool(true),\n\t\t\tDisableArpNdSuppression: pulumi.Bool(false),\n\t\t\tExitNodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"pve-exit1\"),\n\t\t\t\tpulumi.String(\"pve-exit2\"),\n\t\t\t},\n\t\t\tExitNodesLocalRouting: pulumi.Bool(true),\n\t\t\tPrimaryExitNode:       pulumi.String(\"pve-exit1\"),\n\t\t\tRtImport:              pulumi.String(\"65000:65000\"),\n\t\t\tMtu:                   pulumi.Int(1450),\n\t\t\tDns:                   pulumi.String(\"1.1.1.1\"),\n\t\t\tDnsZone:               pulumi.String(\"example.com\"),\n\t\t\tIpam:                  pulumi.String(\"pve\"),\n\t\t\tReverseDns:            pulumi.String(\"1.1.1.1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.SDNZone.Evpn;\nimport io.muehlbachler.pulumi.proxmoxve.SDNZone.EvpnArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Evpn(\"example\", EvpnArgs.builder()\n            .zoneId(\"evpn1\")\n            .nodes(\"pve\")\n            .controller(\"evpn-controller1\")\n            .vrfVxlan(4000)\n            .advertiseSubnets(true)\n            .disableArpNdSuppression(false)\n            .exitNodes(            \n                \"pve-exit1\",\n                \"pve-exit2\")\n            .exitNodesLocalRouting(true)\n            .primaryExitNode(\"pve-exit1\")\n            .rtImport(\"65000:65000\")\n            .mtu(1450)\n            .dns(\"1.1.1.1\")\n            .dnsZone(\"example.com\")\n            .ipam(\"pve\")\n            .reverseDns(\"1.1.1.1\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:SDNZone:Evpn\n    properties:\n      zoneId: evpn1\n      nodes:\n        - pve\n      controller: evpn-controller1\n      vrfVxlan: 4000 # Optional attributes\n      advertiseSubnets: true\n      disableArpNdSuppression: false\n      exitNodes:\n        - pve-exit1\n        - pve-exit2\n      exitNodesLocalRouting: true\n      primaryExitNode: pve-exit1\n      rtImport: 65000:65000\n      mtu: 1450 # Generic optional attributes\n      dns: 1.1.1.1\n      dnsZone: example.com\n      ipam: pve\n      reverseDns: 1.1.1.1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nEVPN SDN zone can be imported using its unique identifier (zone ID)\n\n```sh\n$ pulumi import proxmoxve:SDNZone/evpn:Evpn example evpn1\n```\n\n","properties":{"advertiseSubnets":{"type":"boolean","description":"Enable subnet advertisement for EVPN.\n"},"controller":{"type":"string","description":"EVPN controller address.\n"},"disableArpNdSuppression":{"type":"boolean","description":"Disable ARP/ND suppression for EVPN.\n"},"dns":{"type":"string","description":"DNS API server address.\n"},"dnsZone":{"type":"string","description":"DNS domain name. Used to register hostnames, such as `\u003chostname\u003e.\u003cdomain\u003e`. The DNS zone must already exist on the DNS server.\n"},"exitNodes":{"type":"array","items":{"type":"string"},"description":"List of exit nodes for EVPN.\n"},"exitNodesLocalRouting":{"type":"boolean","description":"Enable local routing for EVPN exit nodes.\n"},"ipam":{"type":"string","description":"IP Address Management system.\n"},"mtu":{"type":"integer","description":"MTU value for the zone. There is no support to reset this value back to PVE default once set due to API limitation.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"The Proxmox nodes which the zone and associated VNets should be deployed on\n"},"pending":{"type":"boolean","description":"Indicates if the zone has pending configuration changes that need to be applied.\n"},"primaryExitNode":{"type":"string","description":"Primary exit node for EVPN.\n"},"reverseDns":{"type":"string","description":"Reverse DNS API server address.\n"},"rtImport":{"type":"string","description":"Route target import for EVPN.\n"},"state":{"type":"string","description":"Indicates the current state of the zone.\n"},"vrfVxlan":{"type":"integer","description":"VRF VXLAN-ID used for dedicated routing interconnect between VNets. It must be different than the VXLAN-ID of the VNets.\n"},"zoneId":{"type":"string","description":"The unique identifier of the SDN zone.\n"}},"required":["advertiseSubnets","controller","disableArpNdSuppression","exitNodes","exitNodesLocalRouting","zoneId","mtu","nodes","pending","state","vrfVxlan"],"inputProperties":{"advertiseSubnets":{"type":"boolean","description":"Enable subnet advertisement for EVPN.\n"},"controller":{"type":"string","description":"EVPN controller address.\n"},"disableArpNdSuppression":{"type":"boolean","description":"Disable ARP/ND suppression for EVPN.\n"},"dns":{"type":"string","description":"DNS API server address.\n"},"dnsZone":{"type":"string","description":"DNS domain name. Used to register hostnames, such as `\u003chostname\u003e.\u003cdomain\u003e`. The DNS zone must already exist on the DNS server.\n"},"exitNodes":{"type":"array","items":{"type":"string"},"description":"List of exit nodes for EVPN.\n"},"exitNodesLocalRouting":{"type":"boolean","description":"Enable local routing for EVPN exit nodes.\n"},"ipam":{"type":"string","description":"IP Address Management system.\n"},"mtu":{"type":"integer","description":"MTU value for the zone. There is no support to reset this value back to PVE default once set due to API limitation.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"The Proxmox nodes which the zone and associated VNets should be deployed on\n"},"primaryExitNode":{"type":"string","description":"Primary exit node for EVPN.\n"},"reverseDns":{"type":"string","description":"Reverse DNS API server address.\n"},"rtImport":{"type":"string","description":"Route target import for EVPN.\n"},"vrfVxlan":{"type":"integer","description":"VRF VXLAN-ID used for dedicated routing interconnect between VNets. It must be different than the VXLAN-ID of the VNets.\n"},"zoneId":{"type":"string","description":"The unique identifier of the SDN zone.\n"}},"requiredInputs":["controller","zoneId","vrfVxlan"],"stateInputs":{"description":"Input properties used for looking up and filtering Evpn resources.\n","properties":{"advertiseSubnets":{"type":"boolean","description":"Enable subnet advertisement for EVPN.\n"},"controller":{"type":"string","description":"EVPN controller address.\n"},"disableArpNdSuppression":{"type":"boolean","description":"Disable ARP/ND suppression for EVPN.\n"},"dns":{"type":"string","description":"DNS API server address.\n"},"dnsZone":{"type":"string","description":"DNS domain name. Used to register hostnames, such as `\u003chostname\u003e.\u003cdomain\u003e`. The DNS zone must already exist on the DNS server.\n"},"exitNodes":{"type":"array","items":{"type":"string"},"description":"List of exit nodes for EVPN.\n"},"exitNodesLocalRouting":{"type":"boolean","description":"Enable local routing for EVPN exit nodes.\n"},"ipam":{"type":"string","description":"IP Address Management system.\n"},"mtu":{"type":"integer","description":"MTU value for the zone. There is no support to reset this value back to PVE default once set due to API limitation.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"The Proxmox nodes which the zone and associated VNets should be deployed on\n"},"pending":{"type":"boolean","description":"Indicates if the zone has pending configuration changes that need to be applied.\n"},"primaryExitNode":{"type":"string","description":"Primary exit node for EVPN.\n"},"reverseDns":{"type":"string","description":"Reverse DNS API server address.\n"},"rtImport":{"type":"string","description":"Route target import for EVPN.\n"},"state":{"type":"string","description":"Indicates the current state of the zone.\n"},"vrfVxlan":{"type":"integer","description":"VRF VXLAN-ID used for dedicated routing interconnect between VNets. It must be different than the VXLAN-ID of the VNets.\n"},"zoneId":{"type":"string","description":"The unique identifier of the SDN zone.\n"}},"type":"object"}},"proxmoxve:SDNZone/qinq:Qinq":{"description":"QinQ Zone in Proxmox SDN. QinQ also known as VLAN stacking, that uses multiple layers of VLAN tags for isolation. The QinQ zone defines the outer VLAN tag (the Service VLAN) whereas the inner VLAN tag is defined by the VNet. Your physical network switches must support stacked VLANs for this configuration. Due to the double stacking of tags, you need 4 more bytes for QinQ VLANs. For example, you must reduce the MTU to 1496 if you physical interface MTU is 1500.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.sdnzone.Qinq(\"example\", {\n    zoneId: \"qinq1\",\n    bridge: \"vmbr0\",\n    serviceVlan: 100,\n    serviceVlanProtocol: \"802.1ad\",\n    mtu: 1496,\n    dns: \"1.1.1.1\",\n    dnsZone: \"example.com\",\n    ipam: \"pve\",\n    reverseDns: \"1.1.1.1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.sdnzone.Qinq(\"example\",\n    zone_id=\"qinq1\",\n    bridge=\"vmbr0\",\n    service_vlan=100,\n    service_vlan_protocol=\"802.1ad\",\n    mtu=1496,\n    dns=\"1.1.1.1\",\n    dns_zone=\"example.com\",\n    ipam=\"pve\",\n    reverse_dns=\"1.1.1.1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ProxmoxVE.SDNZone.Qinq(\"example\", new()\n    {\n        ZoneId = \"qinq1\",\n        Bridge = \"vmbr0\",\n        ServiceVlan = 100,\n        ServiceVlanProtocol = \"802.1ad\",\n        Mtu = 1496,\n        Dns = \"1.1.1.1\",\n        DnsZone = \"example.com\",\n        Ipam = \"pve\",\n        ReverseDns = \"1.1.1.1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/sdnzone\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sdnzone.NewQinq(ctx, \"example\", \u0026sdnzone.QinqArgs{\n\t\t\tZoneId:              pulumi.String(\"qinq1\"),\n\t\t\tBridge:              pulumi.String(\"vmbr0\"),\n\t\t\tServiceVlan:         pulumi.Int(100),\n\t\t\tServiceVlanProtocol: pulumi.String(\"802.1ad\"),\n\t\t\tMtu:                 pulumi.Int(1496),\n\t\t\tDns:                 pulumi.String(\"1.1.1.1\"),\n\t\t\tDnsZone:             pulumi.String(\"example.com\"),\n\t\t\tIpam:                pulumi.String(\"pve\"),\n\t\t\tReverseDns:          pulumi.String(\"1.1.1.1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.SDNZone.Qinq;\nimport io.muehlbachler.pulumi.proxmoxve.SDNZone.QinqArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Qinq(\"example\", QinqArgs.builder()\n            .zoneId(\"qinq1\")\n            .bridge(\"vmbr0\")\n            .serviceVlan(100)\n            .serviceVlanProtocol(\"802.1ad\")\n            .mtu(1496)\n            .dns(\"1.1.1.1\")\n            .dnsZone(\"example.com\")\n            .ipam(\"pve\")\n            .reverseDns(\"1.1.1.1\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:SDNZone:Qinq\n    properties:\n      zoneId: qinq1\n      bridge: vmbr0\n      serviceVlan: 100\n      serviceVlanProtocol: 802.1ad\n      mtu: 1496 # Optional attributes\n      dns: 1.1.1.1\n      dnsZone: example.com\n      ipam: pve\n      reverseDns: 1.1.1.1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nQinQ SDN zone can be imported using its unique identifier (zone ID)\n\n```sh\n$ pulumi import proxmoxve:SDNZone/qinq:Qinq example qinq1\n```\n\n","properties":{"bridge":{"type":"string","description":"A local, VLAN-aware bridge that is already configured on each local node\n"},"dns":{"type":"string","description":"DNS API server address.\n"},"dnsZone":{"type":"string","description":"DNS domain name. Used to register hostnames, such as `\u003chostname\u003e.\u003cdomain\u003e`. The DNS zone must already exist on the DNS server.\n"},"ipam":{"type":"string","description":"IP Address Management system.\n"},"mtu":{"type":"integer","description":"MTU value for the zone. There is no support to reset this value back to PVE default once set due to API limitation.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"The Proxmox nodes which the zone and associated VNets should be deployed on\n"},"pending":{"type":"boolean","description":"Indicates if the zone has pending configuration changes that need to be applied.\n"},"reverseDns":{"type":"string","description":"Reverse DNS API server address.\n"},"serviceVlan":{"type":"integer","description":"Service VLAN tag for QinQ. The tag must be between \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`4094`\" pulumi-lang-dotnet=\"`4094`\" pulumi-lang-go=\"`4094`\" pulumi-lang-python=\"`4094`\" pulumi-lang-yaml=\"`4094`\" pulumi-lang-java=\"`4094`\"\u003e`4094`\u003c/span\u003e.\n"},"serviceVlanProtocol":{"type":"string","description":"Service VLAN protocol for QinQ. The protocol must be `802.1ad` or `802.1q`.\n"},"state":{"type":"string","description":"Indicates the current state of the zone.\n"},"zoneId":{"type":"string","description":"The unique identifier of the SDN zone.\n"}},"required":["bridge","zoneId","mtu","nodes","pending","serviceVlan","serviceVlanProtocol","state"],"inputProperties":{"bridge":{"type":"string","description":"A local, VLAN-aware bridge that is already configured on each local node\n"},"dns":{"type":"string","description":"DNS API server address.\n"},"dnsZone":{"type":"string","description":"DNS domain name. Used to register hostnames, such as `\u003chostname\u003e.\u003cdomain\u003e`. The DNS zone must already exist on the DNS server.\n"},"ipam":{"type":"string","description":"IP Address Management system.\n"},"mtu":{"type":"integer","description":"MTU value for the zone. There is no support to reset this value back to PVE default once set due to API limitation.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"The Proxmox nodes which the zone and associated VNets should be deployed on\n"},"reverseDns":{"type":"string","description":"Reverse DNS API server address.\n"},"serviceVlan":{"type":"integer","description":"Service VLAN tag for QinQ. The tag must be between \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`4094`\" pulumi-lang-dotnet=\"`4094`\" pulumi-lang-go=\"`4094`\" pulumi-lang-python=\"`4094`\" pulumi-lang-yaml=\"`4094`\" pulumi-lang-java=\"`4094`\"\u003e`4094`\u003c/span\u003e.\n"},"serviceVlanProtocol":{"type":"string","description":"Service VLAN protocol for QinQ. The protocol must be `802.1ad` or `802.1q`.\n"},"zoneId":{"type":"string","description":"The unique identifier of the SDN zone.\n"}},"requiredInputs":["bridge","zoneId","serviceVlan"],"stateInputs":{"description":"Input properties used for looking up and filtering Qinq resources.\n","properties":{"bridge":{"type":"string","description":"A local, VLAN-aware bridge that is already configured on each local node\n"},"dns":{"type":"string","description":"DNS API server address.\n"},"dnsZone":{"type":"string","description":"DNS domain name. Used to register hostnames, such as `\u003chostname\u003e.\u003cdomain\u003e`. The DNS zone must already exist on the DNS server.\n"},"ipam":{"type":"string","description":"IP Address Management system.\n"},"mtu":{"type":"integer","description":"MTU value for the zone. There is no support to reset this value back to PVE default once set due to API limitation.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"The Proxmox nodes which the zone and associated VNets should be deployed on\n"},"pending":{"type":"boolean","description":"Indicates if the zone has pending configuration changes that need to be applied.\n"},"reverseDns":{"type":"string","description":"Reverse DNS API server address.\n"},"serviceVlan":{"type":"integer","description":"Service VLAN tag for QinQ. The tag must be between \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`4094`\" pulumi-lang-dotnet=\"`4094`\" pulumi-lang-go=\"`4094`\" pulumi-lang-python=\"`4094`\" pulumi-lang-yaml=\"`4094`\" pulumi-lang-java=\"`4094`\"\u003e`4094`\u003c/span\u003e.\n"},"serviceVlanProtocol":{"type":"string","description":"Service VLAN protocol for QinQ. The protocol must be `802.1ad` or `802.1q`.\n"},"state":{"type":"string","description":"Indicates the current state of the zone.\n"},"zoneId":{"type":"string","description":"The unique identifier of the SDN zone.\n"}},"type":"object"}},"proxmoxve:SDNZone/simple:Simple":{"description":"Simple Zone in Proxmox SDN. It will create an isolated VNet bridge. This bridge is not linked to a physical interface, and VM traffic is only local on each the node. It can be used in NAT or routed setups.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.sdnzone.Simple(\"example\", {\n    zoneId: \"simple1\",\n    nodes: [\"pve\"],\n    mtu: 1500,\n    dns: \"1.1.1.1\",\n    dnsZone: \"example.com\",\n    ipam: \"pve\",\n    reverseDns: \"1.1.1.1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.sdnzone.Simple(\"example\",\n    zone_id=\"simple1\",\n    nodes=[\"pve\"],\n    mtu=1500,\n    dns=\"1.1.1.1\",\n    dns_zone=\"example.com\",\n    ipam=\"pve\",\n    reverse_dns=\"1.1.1.1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ProxmoxVE.SDNZone.Simple(\"example\", new()\n    {\n        ZoneId = \"simple1\",\n        Nodes = new[]\n        {\n            \"pve\",\n        },\n        Mtu = 1500,\n        Dns = \"1.1.1.1\",\n        DnsZone = \"example.com\",\n        Ipam = \"pve\",\n        ReverseDns = \"1.1.1.1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/sdnzone\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sdnzone.NewSimple(ctx, \"example\", \u0026sdnzone.SimpleArgs{\n\t\t\tZoneId: pulumi.String(\"simple1\"),\n\t\t\tNodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"pve\"),\n\t\t\t},\n\t\t\tMtu:        pulumi.Int(1500),\n\t\t\tDns:        pulumi.String(\"1.1.1.1\"),\n\t\t\tDnsZone:    pulumi.String(\"example.com\"),\n\t\t\tIpam:       pulumi.String(\"pve\"),\n\t\t\tReverseDns: pulumi.String(\"1.1.1.1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.SDNZone.Simple;\nimport io.muehlbachler.pulumi.proxmoxve.SDNZone.SimpleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Simple(\"example\", SimpleArgs.builder()\n            .zoneId(\"simple1\")\n            .nodes(\"pve\")\n            .mtu(1500)\n            .dns(\"1.1.1.1\")\n            .dnsZone(\"example.com\")\n            .ipam(\"pve\")\n            .reverseDns(\"1.1.1.1\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:SDNZone:Simple\n    properties:\n      zoneId: simple1\n      nodes:\n        - pve\n      mtu: 1500 # Optional attributes\n      dns: 1.1.1.1\n      dnsZone: example.com\n      ipam: pve\n      reverseDns: 1.1.1.1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nSimple SDN zone can be imported using its unique identifier (zone ID)\n\n```sh\n$ pulumi import proxmoxve:SDNZone/simple:Simple example simple1\n```\n\n","properties":{"dhcp":{"type":"string","description":"The type of the DHCP backend for this zone. Currently the only supported value is \u003cspan pulumi-lang-nodejs=\"`dnsmasq`\" pulumi-lang-dotnet=\"`Dnsmasq`\" pulumi-lang-go=\"`dnsmasq`\" pulumi-lang-python=\"`dnsmasq`\" pulumi-lang-yaml=\"`dnsmasq`\" pulumi-lang-java=\"`dnsmasq`\"\u003e`dnsmasq`\u003c/span\u003e.\n"},"dns":{"type":"string","description":"DNS API server address.\n"},"dnsZone":{"type":"string","description":"DNS domain name. Used to register hostnames, such as `\u003chostname\u003e.\u003cdomain\u003e`. The DNS zone must already exist on the DNS server.\n"},"ipam":{"type":"string","description":"IP Address Management system.\n"},"mtu":{"type":"integer","description":"MTU value for the zone. There is no support to reset this value back to PVE default once set due to API limitation.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"The Proxmox nodes which the zone and associated VNets should be deployed on\n"},"pending":{"type":"boolean","description":"Indicates if the zone has pending configuration changes that need to be applied.\n"},"reverseDns":{"type":"string","description":"Reverse DNS API server address.\n"},"state":{"type":"string","description":"Indicates the current state of the zone.\n"},"zoneId":{"type":"string","description":"The unique identifier of the SDN zone.\n"}},"required":["zoneId","mtu","nodes","pending","state"],"inputProperties":{"dhcp":{"type":"string","description":"The type of the DHCP backend for this zone. Currently the only supported value is \u003cspan pulumi-lang-nodejs=\"`dnsmasq`\" pulumi-lang-dotnet=\"`Dnsmasq`\" pulumi-lang-go=\"`dnsmasq`\" pulumi-lang-python=\"`dnsmasq`\" pulumi-lang-yaml=\"`dnsmasq`\" pulumi-lang-java=\"`dnsmasq`\"\u003e`dnsmasq`\u003c/span\u003e.\n"},"dns":{"type":"string","description":"DNS API server address.\n"},"dnsZone":{"type":"string","description":"DNS domain name. Used to register hostnames, such as `\u003chostname\u003e.\u003cdomain\u003e`. The DNS zone must already exist on the DNS server.\n"},"ipam":{"type":"string","description":"IP Address Management system.\n"},"mtu":{"type":"integer","description":"MTU value for the zone. There is no support to reset this value back to PVE default once set due to API limitation.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"The Proxmox nodes which the zone and associated VNets should be deployed on\n"},"reverseDns":{"type":"string","description":"Reverse DNS API server address.\n"},"zoneId":{"type":"string","description":"The unique identifier of the SDN zone.\n"}},"requiredInputs":["zoneId"],"stateInputs":{"description":"Input properties used for looking up and filtering Simple resources.\n","properties":{"dhcp":{"type":"string","description":"The type of the DHCP backend for this zone. Currently the only supported value is \u003cspan pulumi-lang-nodejs=\"`dnsmasq`\" pulumi-lang-dotnet=\"`Dnsmasq`\" pulumi-lang-go=\"`dnsmasq`\" pulumi-lang-python=\"`dnsmasq`\" pulumi-lang-yaml=\"`dnsmasq`\" pulumi-lang-java=\"`dnsmasq`\"\u003e`dnsmasq`\u003c/span\u003e.\n"},"dns":{"type":"string","description":"DNS API server address.\n"},"dnsZone":{"type":"string","description":"DNS domain name. Used to register hostnames, such as `\u003chostname\u003e.\u003cdomain\u003e`. The DNS zone must already exist on the DNS server.\n"},"ipam":{"type":"string","description":"IP Address Management system.\n"},"mtu":{"type":"integer","description":"MTU value for the zone. There is no support to reset this value back to PVE default once set due to API limitation.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"The Proxmox nodes which the zone and associated VNets should be deployed on\n"},"pending":{"type":"boolean","description":"Indicates if the zone has pending configuration changes that need to be applied.\n"},"reverseDns":{"type":"string","description":"Reverse DNS API server address.\n"},"state":{"type":"string","description":"Indicates the current state of the zone.\n"},"zoneId":{"type":"string","description":"The unique identifier of the SDN zone.\n"}},"type":"object"}},"proxmoxve:SDNZone/vlan:Vlan":{"description":"VLAN Zone in Proxmox SDN. It uses an existing local Linux or OVS bridge to connect to the node's physical interface. It uses VLAN tagging defined in the VNet to isolate the network segments. This allows connectivity of VMs between different nodes.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.sdnzone.Vlan(\"example\", {\n    zoneId: \"vlan1\",\n    bridge: \"vmbr0\",\n    mtu: 1500,\n    dns: \"1.1.1.1\",\n    dnsZone: \"example.com\",\n    ipam: \"pve\",\n    reverseDns: \"1.1.1.1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.sdnzone.Vlan(\"example\",\n    zone_id=\"vlan1\",\n    bridge=\"vmbr0\",\n    mtu=1500,\n    dns=\"1.1.1.1\",\n    dns_zone=\"example.com\",\n    ipam=\"pve\",\n    reverse_dns=\"1.1.1.1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ProxmoxVE.SDNZone.Vlan(\"example\", new()\n    {\n        ZoneId = \"vlan1\",\n        Bridge = \"vmbr0\",\n        Mtu = 1500,\n        Dns = \"1.1.1.1\",\n        DnsZone = \"example.com\",\n        Ipam = \"pve\",\n        ReverseDns = \"1.1.1.1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/sdnzone\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sdnzone.NewVlan(ctx, \"example\", \u0026sdnzone.VlanArgs{\n\t\t\tZoneId:     pulumi.String(\"vlan1\"),\n\t\t\tBridge:     pulumi.String(\"vmbr0\"),\n\t\t\tMtu:        pulumi.Int(1500),\n\t\t\tDns:        pulumi.String(\"1.1.1.1\"),\n\t\t\tDnsZone:    pulumi.String(\"example.com\"),\n\t\t\tIpam:       pulumi.String(\"pve\"),\n\t\t\tReverseDns: pulumi.String(\"1.1.1.1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.SDNZone.Vlan;\nimport io.muehlbachler.pulumi.proxmoxve.SDNZone.VlanArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Vlan(\"example\", VlanArgs.builder()\n            .zoneId(\"vlan1\")\n            .bridge(\"vmbr0\")\n            .mtu(1500)\n            .dns(\"1.1.1.1\")\n            .dnsZone(\"example.com\")\n            .ipam(\"pve\")\n            .reverseDns(\"1.1.1.1\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:SDNZone:Vlan\n    properties:\n      zoneId: vlan1\n      bridge: vmbr0\n      mtu: 1500 # Optional attributes\n      dns: 1.1.1.1\n      dnsZone: example.com\n      ipam: pve\n      reverseDns: 1.1.1.1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nVLAN SDN zone can be imported using its unique identifier (zone ID)\n\n```sh\n$ pulumi import proxmoxve:SDNZone/vlan:Vlan example vlan1\n```\n\n","properties":{"bridge":{"type":"string","description":"The local bridge or OVS switch, already configured on *each* node that allows node-to-node connection.\n"},"dns":{"type":"string","description":"DNS API server address.\n"},"dnsZone":{"type":"string","description":"DNS domain name. Used to register hostnames, such as `\u003chostname\u003e.\u003cdomain\u003e`. The DNS zone must already exist on the DNS server.\n"},"ipam":{"type":"string","description":"IP Address Management system.\n"},"mtu":{"type":"integer","description":"MTU value for the zone. There is no support to reset this value back to PVE default once set due to API limitation.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"The Proxmox nodes which the zone and associated VNets should be deployed on\n"},"pending":{"type":"boolean","description":"Indicates if the zone has pending configuration changes that need to be applied.\n"},"reverseDns":{"type":"string","description":"Reverse DNS API server address.\n"},"state":{"type":"string","description":"Indicates the current state of the zone.\n"},"zoneId":{"type":"string","description":"The unique identifier of the SDN zone.\n"}},"required":["bridge","zoneId","mtu","nodes","pending","state"],"inputProperties":{"bridge":{"type":"string","description":"The local bridge or OVS switch, already configured on *each* node that allows node-to-node connection.\n"},"dns":{"type":"string","description":"DNS API server address.\n"},"dnsZone":{"type":"string","description":"DNS domain name. Used to register hostnames, such as `\u003chostname\u003e.\u003cdomain\u003e`. The DNS zone must already exist on the DNS server.\n"},"ipam":{"type":"string","description":"IP Address Management system.\n"},"mtu":{"type":"integer","description":"MTU value for the zone. There is no support to reset this value back to PVE default once set due to API limitation.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"The Proxmox nodes which the zone and associated VNets should be deployed on\n"},"reverseDns":{"type":"string","description":"Reverse DNS API server address.\n"},"zoneId":{"type":"string","description":"The unique identifier of the SDN zone.\n"}},"requiredInputs":["bridge","zoneId"],"stateInputs":{"description":"Input properties used for looking up and filtering Vlan resources.\n","properties":{"bridge":{"type":"string","description":"The local bridge or OVS switch, already configured on *each* node that allows node-to-node connection.\n"},"dns":{"type":"string","description":"DNS API server address.\n"},"dnsZone":{"type":"string","description":"DNS domain name. Used to register hostnames, such as `\u003chostname\u003e.\u003cdomain\u003e`. The DNS zone must already exist on the DNS server.\n"},"ipam":{"type":"string","description":"IP Address Management system.\n"},"mtu":{"type":"integer","description":"MTU value for the zone. There is no support to reset this value back to PVE default once set due to API limitation.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"The Proxmox nodes which the zone and associated VNets should be deployed on\n"},"pending":{"type":"boolean","description":"Indicates if the zone has pending configuration changes that need to be applied.\n"},"reverseDns":{"type":"string","description":"Reverse DNS API server address.\n"},"state":{"type":"string","description":"Indicates the current state of the zone.\n"},"zoneId":{"type":"string","description":"The unique identifier of the SDN zone.\n"}},"type":"object"}},"proxmoxve:SDNZone/vxlan:Vxlan":{"description":"VXLAN Zone in Proxmox SDN. It establishes a tunnel (overlay) on top of an existing network (underlay). This encapsulates layer 2 Ethernet frames within layer 4 UDP datagrams using the default destination port 4789. You have to configure the underlay network yourself to enable UDP connectivity between all peers. Because VXLAN encapsulation uses 50 bytes, the MTU needs to be 50 bytes lower than the outgoing physical interface.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.sdnzone.Vxlan(\"example\", {\n    zoneId: \"vxlan1\",\n    peers: [\n        \"10.0.0.1\",\n        \"10.0.0.2\",\n        \"10.0.0.3\",\n    ],\n    mtu: 1450,\n    dns: \"1.1.1.1\",\n    dnsZone: \"example.com\",\n    ipam: \"pve\",\n    reverseDns: \"1.1.1.1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.sdnzone.Vxlan(\"example\",\n    zone_id=\"vxlan1\",\n    peers=[\n        \"10.0.0.1\",\n        \"10.0.0.2\",\n        \"10.0.0.3\",\n    ],\n    mtu=1450,\n    dns=\"1.1.1.1\",\n    dns_zone=\"example.com\",\n    ipam=\"pve\",\n    reverse_dns=\"1.1.1.1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ProxmoxVE.SDNZone.Vxlan(\"example\", new()\n    {\n        ZoneId = \"vxlan1\",\n        Peers = new[]\n        {\n            \"10.0.0.1\",\n            \"10.0.0.2\",\n            \"10.0.0.3\",\n        },\n        Mtu = 1450,\n        Dns = \"1.1.1.1\",\n        DnsZone = \"example.com\",\n        Ipam = \"pve\",\n        ReverseDns = \"1.1.1.1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/sdnzone\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sdnzone.NewVxlan(ctx, \"example\", \u0026sdnzone.VxlanArgs{\n\t\t\tZoneId: pulumi.String(\"vxlan1\"),\n\t\t\tPeers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.0.1\"),\n\t\t\t\tpulumi.String(\"10.0.0.2\"),\n\t\t\t\tpulumi.String(\"10.0.0.3\"),\n\t\t\t},\n\t\t\tMtu:        pulumi.Int(1450),\n\t\t\tDns:        pulumi.String(\"1.1.1.1\"),\n\t\t\tDnsZone:    pulumi.String(\"example.com\"),\n\t\t\tIpam:       pulumi.String(\"pve\"),\n\t\t\tReverseDns: pulumi.String(\"1.1.1.1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.SDNZone.Vxlan;\nimport io.muehlbachler.pulumi.proxmoxve.SDNZone.VxlanArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Vxlan(\"example\", VxlanArgs.builder()\n            .zoneId(\"vxlan1\")\n            .peers(            \n                \"10.0.0.1\",\n                \"10.0.0.2\",\n                \"10.0.0.3\")\n            .mtu(1450)\n            .dns(\"1.1.1.1\")\n            .dnsZone(\"example.com\")\n            .ipam(\"pve\")\n            .reverseDns(\"1.1.1.1\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:SDNZone:Vxlan\n    properties:\n      zoneId: vxlan1\n      peers:\n        - 10.0.0.1\n        - 10.0.0.2\n        - 10.0.0.3\n      mtu: 1450 # Optional attributes\n      dns: 1.1.1.1\n      dnsZone: example.com\n      ipam: pve\n      reverseDns: 1.1.1.1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nVXLAN SDN zone can be imported using its unique identifier (zone ID)\n\n```sh\n$ pulumi import proxmoxve:SDNZone/vxlan:Vxlan example vxlan1\n```\n\n","properties":{"dns":{"type":"string","description":"DNS API server address.\n"},"dnsZone":{"type":"string","description":"DNS domain name. Used to register hostnames, such as `\u003chostname\u003e.\u003cdomain\u003e`. The DNS zone must already exist on the DNS server.\n"},"ipam":{"type":"string","description":"IP Address Management system.\n"},"mtu":{"type":"integer","description":"MTU value for the zone. There is no support to reset this value back to PVE default once set due to API limitation.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"The Proxmox nodes which the zone and associated VNets should be deployed on\n"},"peers":{"type":"array","items":{"type":"string"},"description":"A list of IP addresses of each node in the VXLAN zone. This can be external nodes reachable at this IP address. All nodes in the cluster need to be mentioned here\n"},"pending":{"type":"boolean","description":"Indicates if the zone has pending configuration changes that need to be applied.\n"},"reverseDns":{"type":"string","description":"Reverse DNS API server address.\n"},"state":{"type":"string","description":"Indicates the current state of the zone.\n"},"zoneId":{"type":"string","description":"The unique identifier of the SDN zone.\n"}},"required":["zoneId","mtu","nodes","peers","pending","state"],"inputProperties":{"dns":{"type":"string","description":"DNS API server address.\n"},"dnsZone":{"type":"string","description":"DNS domain name. Used to register hostnames, such as `\u003chostname\u003e.\u003cdomain\u003e`. The DNS zone must already exist on the DNS server.\n"},"ipam":{"type":"string","description":"IP Address Management system.\n"},"mtu":{"type":"integer","description":"MTU value for the zone. There is no support to reset this value back to PVE default once set due to API limitation.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"The Proxmox nodes which the zone and associated VNets should be deployed on\n"},"peers":{"type":"array","items":{"type":"string"},"description":"A list of IP addresses of each node in the VXLAN zone. This can be external nodes reachable at this IP address. All nodes in the cluster need to be mentioned here\n"},"reverseDns":{"type":"string","description":"Reverse DNS API server address.\n"},"zoneId":{"type":"string","description":"The unique identifier of the SDN zone.\n"}},"requiredInputs":["zoneId","peers"],"stateInputs":{"description":"Input properties used for looking up and filtering Vxlan resources.\n","properties":{"dns":{"type":"string","description":"DNS API server address.\n"},"dnsZone":{"type":"string","description":"DNS domain name. Used to register hostnames, such as `\u003chostname\u003e.\u003cdomain\u003e`. The DNS zone must already exist on the DNS server.\n"},"ipam":{"type":"string","description":"IP Address Management system.\n"},"mtu":{"type":"integer","description":"MTU value for the zone. There is no support to reset this value back to PVE default once set due to API limitation.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"The Proxmox nodes which the zone and associated VNets should be deployed on\n"},"peers":{"type":"array","items":{"type":"string"},"description":"A list of IP addresses of each node in the VXLAN zone. This can be external nodes reachable at this IP address. All nodes in the cluster need to be mentioned here\n"},"pending":{"type":"boolean","description":"Indicates if the zone has pending configuration changes that need to be applied.\n"},"reverseDns":{"type":"string","description":"Reverse DNS API server address.\n"},"state":{"type":"string","description":"Indicates the current state of the zone.\n"},"zoneId":{"type":"string","description":"The unique identifier of the SDN zone.\n"}},"type":"object"}},"proxmoxve:Sdn/applier:Applier":{"description":"**EXPERIMENTAL** Triggers Proxmox's SDN **Apply** (equivalent to `PUT /cluster/sdn`).Intended to be used with \u003cspan pulumi-lang-nodejs=\"`replaceTriggeredBy`\" pulumi-lang-dotnet=\"`ReplaceTriggeredBy`\" pulumi-lang-go=\"`replaceTriggeredBy`\" pulumi-lang-python=\"`replace_triggered_by`\" pulumi-lang-yaml=\"`replaceTriggeredBy`\" pulumi-lang-java=\"`replaceTriggeredBy`\"\u003e`replace_triggered_by`\u003c/span\u003e so it runs after SDN objects change.\n\n","properties":{"onCreate":{"type":"boolean","description":"Whether to apply SDN configuration on resource creation. Defaults to true.\n"},"onDestroy":{"type":"boolean","description":"Whether to apply SDN configuration on resource destruction. Defaults to true.\n"}},"required":["onCreate","onDestroy"],"inputProperties":{"onCreate":{"type":"boolean","description":"Whether to apply SDN configuration on resource creation. Defaults to true.\n"},"onDestroy":{"type":"boolean","description":"Whether to apply SDN configuration on resource destruction. Defaults to true.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering Applier resources.\n","properties":{"onCreate":{"type":"boolean","description":"Whether to apply SDN configuration on resource creation. Defaults to true.\n"},"onDestroy":{"type":"boolean","description":"Whether to apply SDN configuration on resource destruction. Defaults to true.\n"}},"type":"object"}},"proxmoxve:Sdn/fabric/node/openfabric:Openfabric":{"description":"OpenFabric Fabric Node in Proxmox SDN. Fabrics in Proxmox VE SDN provide automated routing between nodes in a cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst main = new proxmoxve.sdnfabric.OpenFabric(\"main\", {\n    fabricId: \"main-fabric\",\n    ipPrefix: \"10.0.0.0/16\",\n});\nconst mainOpenfabric = new proxmoxve.sdn.fabric.node.Openfabric(\"main\", {\n    fabricId: main.fabricId,\n    nodeId: \"pve\",\n    ip: \"10.0.0.1\",\n    interfaceNames: [\n        \"nic0\",\n        \"nic1\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nmain = proxmoxve.sdnfabric.OpenFabric(\"main\",\n    fabric_id=\"main-fabric\",\n    ip_prefix=\"10.0.0.0/16\")\nmain_openfabric = proxmoxve.sdn.fabric.node.Openfabric(\"main\",\n    fabric_id=main.fabric_id,\n    node_id=\"pve\",\n    ip=\"10.0.0.1\",\n    interface_names=[\n        \"nic0\",\n        \"nic1\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new ProxmoxVE.SDNFabric.OpenFabric(\"main\", new()\n    {\n        FabricId = \"main-fabric\",\n        IpPrefix = \"10.0.0.0/16\",\n    });\n\n    var mainOpenfabric = new ProxmoxVE.Sdn.Fabric.Node.Openfabric(\"main\", new()\n    {\n        FabricId = main.FabricId,\n        NodeId = \"pve\",\n        Ip = \"10.0.0.1\",\n        InterfaceNames = new[]\n        {\n            \"nic0\",\n            \"nic1\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/sdn\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/sdnfabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := sdnfabric.NewOpenFabric(ctx, \"main\", \u0026sdnfabric.OpenFabricArgs{\n\t\t\tFabricId: pulumi.String(\"main-fabric\"),\n\t\t\tIpPrefix: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sdn.NewOpenfabric(ctx, \"main\", \u0026sdn.OpenfabricArgs{\n\t\t\tFabricId: main.FabricId,\n\t\t\tNodeId:   pulumi.String(\"pve\"),\n\t\t\tIp:       pulumi.String(\"10.0.0.1\"),\n\t\t\tInterfaceNames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"nic0\"),\n\t\t\t\tpulumi.String(\"nic1\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.SDNFabric.OpenFabric;\nimport io.muehlbachler.pulumi.proxmoxve.SDNFabric.OpenFabricArgs;\nimport io.muehlbachler.pulumi.proxmoxve.Sdn.Openfabric;\nimport io.muehlbachler.pulumi.proxmoxve.Sdn.OpenfabricArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var main = new OpenFabric(\"main\", OpenFabricArgs.builder()\n            .fabricId(\"main-fabric\")\n            .ipPrefix(\"10.0.0.0/16\")\n            .build());\n\n        var mainOpenfabric = new Openfabric(\"mainOpenfabric\", OpenfabricArgs.builder()\n            .fabricId(main.fabricId())\n            .nodeId(\"pve\")\n            .ip(\"10.0.0.1\")\n            .interfaceNames(            \n                \"nic0\",\n                \"nic1\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: proxmoxve:SDNFabric:OpenFabric\n    properties:\n      fabricId: main-fabric\n      ipPrefix: 10.0.0.0/16\n  mainOpenfabric:\n    type: proxmoxve:Sdn/fabric/node:Openfabric\n    name: main\n    properties:\n      fabricId: ${main.fabricId}\n      nodeId: pve\n      ip: 10.0.0.1\n      interfaceNames:\n        - nic0\n        - nic1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"fabricId":{"type":"string","description":"The unique identifier of the SDN fabric.\n"},"interfaceNames":{"type":"array","items":{"type":"string"},"description":"Set of interfaces associated with the fabric node.\n"},"ip":{"type":"string","description":"IPv4 address for the fabric node.\n"},"ip6":{"type":"string","description":"IPv6 address for the fabric node.\n"},"nodeId":{"type":"string","description":"The unique identifier of the SDN fabric.\n"}},"required":["fabricId","interfaceNames","nodeId"],"inputProperties":{"fabricId":{"type":"string","description":"The unique identifier of the SDN fabric.\n"},"interfaceNames":{"type":"array","items":{"type":"string"},"description":"Set of interfaces associated with the fabric node.\n"},"ip":{"type":"string","description":"IPv4 address for the fabric node.\n"},"ip6":{"type":"string","description":"IPv6 address for the fabric node.\n"},"nodeId":{"type":"string","description":"The unique identifier of the SDN fabric.\n"}},"requiredInputs":["fabricId","interfaceNames","nodeId"],"stateInputs":{"description":"Input properties used for looking up and filtering Openfabric resources.\n","properties":{"fabricId":{"type":"string","description":"The unique identifier of the SDN fabric.\n"},"interfaceNames":{"type":"array","items":{"type":"string"},"description":"Set of interfaces associated with the fabric node.\n"},"ip":{"type":"string","description":"IPv4 address for the fabric node.\n"},"ip6":{"type":"string","description":"IPv6 address for the fabric node.\n"},"nodeId":{"type":"string","description":"The unique identifier of the SDN fabric.\n"}},"type":"object"}},"proxmoxve:Sdn/fabric/node/ospf:Ospf":{"description":"OSPF Fabric Node in Proxmox SDN. Fabrics in Proxmox VE SDN provide automated routing between nodes in a cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst main = new proxmoxve.sdnfabric.OSPF(\"main\", {\n    ospfId: \"main-fabric\",\n    ipPrefix: \"10.0.0.0/16\",\n    area: \"0\",\n});\nconst mainOspf = new proxmoxve.sdn.fabric.node.Ospf(\"main\", {\n    fabricId: main.ospfId,\n    nodeId: \"pve\",\n    ip: \"10.0.0.1\",\n    interfaceNames: [\n        \"nic0\",\n        \"nic1\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nmain = proxmoxve.sdnfabric.OSPF(\"main\",\n    ospf_id=\"main-fabric\",\n    ip_prefix=\"10.0.0.0/16\",\n    area=\"0\")\nmain_ospf = proxmoxve.sdn.fabric.node.Ospf(\"main\",\n    fabric_id=main.ospf_id,\n    node_id=\"pve\",\n    ip=\"10.0.0.1\",\n    interface_names=[\n        \"nic0\",\n        \"nic1\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = new ProxmoxVE.SDNFabric.OSPF(\"main\", new()\n    {\n        OspfId = \"main-fabric\",\n        IpPrefix = \"10.0.0.0/16\",\n        Area = \"0\",\n    });\n\n    var mainOspf = new ProxmoxVE.Sdn.Fabric.Node.Ospf(\"main\", new()\n    {\n        FabricId = main.OspfId,\n        NodeId = \"pve\",\n        Ip = \"10.0.0.1\",\n        InterfaceNames = new[]\n        {\n            \"nic0\",\n            \"nic1\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/sdn\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/sdnfabric\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := sdnfabric.NewOSPF(ctx, \"main\", \u0026sdnfabric.OSPFArgs{\n\t\t\tOspfId:   pulumi.String(\"main-fabric\"),\n\t\t\tIpPrefix: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tArea:     pulumi.String(\"0\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sdn.NewOspf(ctx, \"main\", \u0026sdn.OspfArgs{\n\t\t\tFabricId: main.OspfId,\n\t\t\tNodeId:   pulumi.String(\"pve\"),\n\t\t\tIp:       pulumi.String(\"10.0.0.1\"),\n\t\t\tInterfaceNames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"nic0\"),\n\t\t\t\tpulumi.String(\"nic1\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.SDNFabric.OSPF;\nimport io.muehlbachler.pulumi.proxmoxve.SDNFabric.OSPFArgs;\nimport io.muehlbachler.pulumi.proxmoxve.Sdn.Ospf;\nimport io.muehlbachler.pulumi.proxmoxve.Sdn.OspfArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var main = new OSPF(\"main\", OSPFArgs.builder()\n            .ospfId(\"main-fabric\")\n            .ipPrefix(\"10.0.0.0/16\")\n            .area(\"0\")\n            .build());\n\n        var mainOspf = new Ospf(\"mainOspf\", OspfArgs.builder()\n            .fabricId(main.ospfId())\n            .nodeId(\"pve\")\n            .ip(\"10.0.0.1\")\n            .interfaceNames(            \n                \"nic0\",\n                \"nic1\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: proxmoxve:SDNFabric:OSPF\n    properties:\n      ospfId: main-fabric\n      ipPrefix: 10.0.0.0/16\n      area: '0'\n  mainOspf:\n    type: proxmoxve:Sdn/fabric/node:Ospf\n    name: main\n    properties:\n      fabricId: ${main.ospfId}\n      nodeId: pve\n      ip: 10.0.0.1\n      interfaceNames:\n        - nic0\n        - nic1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"fabricId":{"type":"string","description":"The unique identifier of the SDN fabric.\n"},"interfaceNames":{"type":"array","items":{"type":"string"},"description":"Set of interfaces associated with the fabric node.\n"},"ip":{"type":"string","description":"IPv4 address for the fabric node.\n"},"nodeId":{"type":"string","description":"The unique identifier of the SDN fabric node.\n"}},"required":["fabricId","interfaceNames","ip","nodeId"],"inputProperties":{"fabricId":{"type":"string","description":"The unique identifier of the SDN fabric.\n"},"interfaceNames":{"type":"array","items":{"type":"string"},"description":"Set of interfaces associated with the fabric node.\n"},"ip":{"type":"string","description":"IPv4 address for the fabric node.\n"},"nodeId":{"type":"string","description":"The unique identifier of the SDN fabric node.\n"}},"requiredInputs":["fabricId","interfaceNames","ip","nodeId"],"stateInputs":{"description":"Input properties used for looking up and filtering Ospf resources.\n","properties":{"fabricId":{"type":"string","description":"The unique identifier of the SDN fabric.\n"},"interfaceNames":{"type":"array","items":{"type":"string"},"description":"Set of interfaces associated with the fabric node.\n"},"ip":{"type":"string","description":"IPv4 address for the fabric node.\n"},"nodeId":{"type":"string","description":"The unique identifier of the SDN fabric node.\n"}},"type":"object"}},"proxmoxve:Sdn/subnet:Subnet":{"description":"Manages SDN Subnets in Proxmox VE.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst finalizer = new proxmoxve.sdn.Applier(\"finalizer\", {});\n// SDN Zone (Simple) - Basic zone for simple vnets\nconst exampleZone1 = new proxmoxve.sdnzone.Simple(\"example_zone_1\", {\n    zoneId: \"zone1\",\n    nodes: [\"pve\"],\n    mtu: 1500,\n    dns: \"1.1.1.1\",\n    dnsZone: \"example.com\",\n    ipam: \"pve\",\n    reverseDns: \"1.1.1.1\",\n}, {\n    dependsOn: [finalizer],\n});\n// SDN Zone (Simple) - Second zone for demonstration\nconst exampleZone2 = new proxmoxve.sdnzone.Simple(\"example_zone_2\", {\n    zoneId: \"zone2\",\n    nodes: [\"pve\"],\n    mtu: 1500,\n}, {\n    dependsOn: [finalizer],\n});\n// SDN VNet - Basic vnet\nconst exampleVnet1 = new proxmoxve.sdn.Vnet(\"example_vnet_1\", {\n    vnetId: \"vnet1\",\n    zone: exampleZone1.zoneId,\n}, {\n    dependsOn: [finalizer],\n});\n// SDN VNet - VNet with alias and port isolation\nconst exampleVnet2 = new proxmoxve.sdn.Vnet(\"example_vnet_2\", {\n    vnetId: \"vnet2\",\n    zone: exampleZone2.zoneId,\n    alias: \"Example VNet 2\",\n    isolatePorts: true,\n    vlanAware: false,\n}, {\n    dependsOn: [finalizer],\n});\n// Basic Subnet\nconst basicSubnet = new proxmoxve.sdn.Subnet(\"basic_subnet\", {\n    cidr: \"192.168.1.0/24\",\n    vnet: exampleVnet1.vnetId,\n    gateway: \"192.168.1.1\",\n}, {\n    dependsOn: [finalizer],\n});\n// Subnet with DHCP Configuration\nconst dhcpSubnet = new proxmoxve.sdn.Subnet(\"dhcp_subnet\", {\n    cidr: \"192.168.2.0/24\",\n    vnet: exampleVnet2.vnetId,\n    gateway: \"192.168.2.1\",\n    dhcpDnsServer: \"192.168.2.53\",\n    dnsZonePrefix: \"internal.example.com\",\n    snat: true,\n    dhcpRange: {\n        startAddress: \"192.168.2.10\",\n        endAddress: \"192.168.2.100\",\n    },\n}, {\n    dependsOn: [finalizer],\n});\n// SDN Applier for all resources\nconst subnetApplier = new proxmoxve.sdn.Applier(\"subnet_applier\", {}, {\n    dependsOn: [\n        exampleZone1,\n        exampleZone2,\n        exampleVnet1,\n        exampleVnet2,\n        basicSubnet,\n        dhcpSubnet,\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfinalizer = proxmoxve.sdn.Applier(\"finalizer\")\n# SDN Zone (Simple) - Basic zone for simple vnets\nexample_zone1 = proxmoxve.sdnzone.Simple(\"example_zone_1\",\n    zone_id=\"zone1\",\n    nodes=[\"pve\"],\n    mtu=1500,\n    dns=\"1.1.1.1\",\n    dns_zone=\"example.com\",\n    ipam=\"pve\",\n    reverse_dns=\"1.1.1.1\",\n    opts = pulumi.ResourceOptions(depends_on=[finalizer]))\n# SDN Zone (Simple) - Second zone for demonstration\nexample_zone2 = proxmoxve.sdnzone.Simple(\"example_zone_2\",\n    zone_id=\"zone2\",\n    nodes=[\"pve\"],\n    mtu=1500,\n    opts = pulumi.ResourceOptions(depends_on=[finalizer]))\n# SDN VNet - Basic vnet\nexample_vnet1 = proxmoxve.sdn.Vnet(\"example_vnet_1\",\n    vnet_id=\"vnet1\",\n    zone=example_zone1.zone_id,\n    opts = pulumi.ResourceOptions(depends_on=[finalizer]))\n# SDN VNet - VNet with alias and port isolation\nexample_vnet2 = proxmoxve.sdn.Vnet(\"example_vnet_2\",\n    vnet_id=\"vnet2\",\n    zone=example_zone2.zone_id,\n    alias=\"Example VNet 2\",\n    isolate_ports=True,\n    vlan_aware=False,\n    opts = pulumi.ResourceOptions(depends_on=[finalizer]))\n# Basic Subnet\nbasic_subnet = proxmoxve.sdn.Subnet(\"basic_subnet\",\n    cidr=\"192.168.1.0/24\",\n    vnet=example_vnet1.vnet_id,\n    gateway=\"192.168.1.1\",\n    opts = pulumi.ResourceOptions(depends_on=[finalizer]))\n# Subnet with DHCP Configuration\ndhcp_subnet = proxmoxve.sdn.Subnet(\"dhcp_subnet\",\n    cidr=\"192.168.2.0/24\",\n    vnet=example_vnet2.vnet_id,\n    gateway=\"192.168.2.1\",\n    dhcp_dns_server=\"192.168.2.53\",\n    dns_zone_prefix=\"internal.example.com\",\n    snat=True,\n    dhcp_range={\n        \"start_address\": \"192.168.2.10\",\n        \"end_address\": \"192.168.2.100\",\n    },\n    opts = pulumi.ResourceOptions(depends_on=[finalizer]))\n# SDN Applier for all resources\nsubnet_applier = proxmoxve.sdn.Applier(\"subnet_applier\", opts = pulumi.ResourceOptions(depends_on=[\n        example_zone1,\n        example_zone2,\n        example_vnet1,\n        example_vnet2,\n        basic_subnet,\n        dhcp_subnet,\n    ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var finalizer = new ProxmoxVE.Sdn.Applier(\"finalizer\");\n\n    // SDN Zone (Simple) - Basic zone for simple vnets\n    var exampleZone1 = new ProxmoxVE.SDNZone.Simple(\"example_zone_1\", new()\n    {\n        ZoneId = \"zone1\",\n        Nodes = new[]\n        {\n            \"pve\",\n        },\n        Mtu = 1500,\n        Dns = \"1.1.1.1\",\n        DnsZone = \"example.com\",\n        Ipam = \"pve\",\n        ReverseDns = \"1.1.1.1\",\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            finalizer,\n        },\n    });\n\n    // SDN Zone (Simple) - Second zone for demonstration\n    var exampleZone2 = new ProxmoxVE.SDNZone.Simple(\"example_zone_2\", new()\n    {\n        ZoneId = \"zone2\",\n        Nodes = new[]\n        {\n            \"pve\",\n        },\n        Mtu = 1500,\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            finalizer,\n        },\n    });\n\n    // SDN VNet - Basic vnet\n    var exampleVnet1 = new ProxmoxVE.Sdn.Vnet(\"example_vnet_1\", new()\n    {\n        VnetId = \"vnet1\",\n        Zone = exampleZone1.ZoneId,\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            finalizer,\n        },\n    });\n\n    // SDN VNet - VNet with alias and port isolation\n    var exampleVnet2 = new ProxmoxVE.Sdn.Vnet(\"example_vnet_2\", new()\n    {\n        VnetId = \"vnet2\",\n        Zone = exampleZone2.ZoneId,\n        Alias = \"Example VNet 2\",\n        IsolatePorts = true,\n        VlanAware = false,\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            finalizer,\n        },\n    });\n\n    // Basic Subnet\n    var basicSubnet = new ProxmoxVE.Sdn.Subnet(\"basic_subnet\", new()\n    {\n        Cidr = \"192.168.1.0/24\",\n        Vnet = exampleVnet1.VnetId,\n        Gateway = \"192.168.1.1\",\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            finalizer,\n        },\n    });\n\n    // Subnet with DHCP Configuration\n    var dhcpSubnet = new ProxmoxVE.Sdn.Subnet(\"dhcp_subnet\", new()\n    {\n        Cidr = \"192.168.2.0/24\",\n        Vnet = exampleVnet2.VnetId,\n        Gateway = \"192.168.2.1\",\n        DhcpDnsServer = \"192.168.2.53\",\n        DnsZonePrefix = \"internal.example.com\",\n        Snat = true,\n        DhcpRange = new ProxmoxVE.Sdn.Inputs.SubnetDhcpRangeArgs\n        {\n            StartAddress = \"192.168.2.10\",\n            EndAddress = \"192.168.2.100\",\n        },\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            finalizer,\n        },\n    });\n\n    // SDN Applier for all resources\n    var subnetApplier = new ProxmoxVE.Sdn.Applier(\"subnet_applier\", new()\n    {\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            exampleZone1,\n            exampleZone2,\n            exampleVnet1,\n            exampleVnet2,\n            basicSubnet,\n            dhcpSubnet,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/sdn\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/sdnzone\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfinalizer, err := sdn.NewApplier(ctx, \"finalizer\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// SDN Zone (Simple) - Basic zone for simple vnets\n\t\texampleZone1, err := sdnzone.NewSimple(ctx, \"example_zone_1\", \u0026sdnzone.SimpleArgs{\n\t\t\tZoneId: pulumi.String(\"zone1\"),\n\t\t\tNodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"pve\"),\n\t\t\t},\n\t\t\tMtu:        pulumi.Int(1500),\n\t\t\tDns:        pulumi.String(\"1.1.1.1\"),\n\t\t\tDnsZone:    pulumi.String(\"example.com\"),\n\t\t\tIpam:       pulumi.String(\"pve\"),\n\t\t\tReverseDns: pulumi.String(\"1.1.1.1\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfinalizer,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// SDN Zone (Simple) - Second zone for demonstration\n\t\texampleZone2, err := sdnzone.NewSimple(ctx, \"example_zone_2\", \u0026sdnzone.SimpleArgs{\n\t\t\tZoneId: pulumi.String(\"zone2\"),\n\t\t\tNodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"pve\"),\n\t\t\t},\n\t\t\tMtu: pulumi.Int(1500),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfinalizer,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// SDN VNet - Basic vnet\n\t\texampleVnet1, err := sdn.NewVnet(ctx, \"example_vnet_1\", \u0026sdn.VnetArgs{\n\t\t\tVnetId: pulumi.String(\"vnet1\"),\n\t\t\tZone:   exampleZone1.ZoneId,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfinalizer,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// SDN VNet - VNet with alias and port isolation\n\t\texampleVnet2, err := sdn.NewVnet(ctx, \"example_vnet_2\", \u0026sdn.VnetArgs{\n\t\t\tVnetId:       pulumi.String(\"vnet2\"),\n\t\t\tZone:         exampleZone2.ZoneId,\n\t\t\tAlias:        pulumi.String(\"Example VNet 2\"),\n\t\t\tIsolatePorts: pulumi.Bool(true),\n\t\t\tVlanAware:    pulumi.Bool(false),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfinalizer,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Basic Subnet\n\t\tbasicSubnet, err := sdn.NewSubnet(ctx, \"basic_subnet\", \u0026sdn.SubnetArgs{\n\t\t\tCidr:    pulumi.String(\"192.168.1.0/24\"),\n\t\t\tVnet:    exampleVnet1.VnetId,\n\t\t\tGateway: pulumi.String(\"192.168.1.1\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfinalizer,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Subnet with DHCP Configuration\n\t\tdhcpSubnet, err := sdn.NewSubnet(ctx, \"dhcp_subnet\", \u0026sdn.SubnetArgs{\n\t\t\tCidr:          pulumi.String(\"192.168.2.0/24\"),\n\t\t\tVnet:          exampleVnet2.VnetId,\n\t\t\tGateway:       pulumi.String(\"192.168.2.1\"),\n\t\t\tDhcpDnsServer: pulumi.String(\"192.168.2.53\"),\n\t\t\tDnsZonePrefix: pulumi.String(\"internal.example.com\"),\n\t\t\tSnat:          pulumi.Bool(true),\n\t\t\tDhcpRange: \u0026sdn.SubnetDhcpRangeArgs{\n\t\t\t\tStartAddress: pulumi.String(\"192.168.2.10\"),\n\t\t\t\tEndAddress:   pulumi.String(\"192.168.2.100\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfinalizer,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// SDN Applier for all resources\n\t\t_, err = sdn.NewApplier(ctx, \"subnet_applier\", nil, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texampleZone1,\n\t\t\texampleZone2,\n\t\t\texampleVnet1,\n\t\t\texampleVnet2,\n\t\t\tbasicSubnet,\n\t\t\tdhcpSubnet,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Sdn.Applier;\nimport io.muehlbachler.pulumi.proxmoxve.SDNZone.Simple;\nimport io.muehlbachler.pulumi.proxmoxve.SDNZone.SimpleArgs;\nimport io.muehlbachler.pulumi.proxmoxve.Sdn.Vnet;\nimport io.muehlbachler.pulumi.proxmoxve.Sdn.VnetArgs;\nimport io.muehlbachler.pulumi.proxmoxve.Sdn.Subnet;\nimport io.muehlbachler.pulumi.proxmoxve.Sdn.SubnetArgs;\nimport com.pulumi.proxmoxve.Sdn.inputs.SubnetDhcpRangeArgs;\nimport io.muehlbachler.pulumi.proxmoxve.Sdn.ApplierArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var finalizer = new Applier(\"finalizer\");\n\n        // SDN Zone (Simple) - Basic zone for simple vnets\n        var exampleZone1 = new Simple(\"exampleZone1\", SimpleArgs.builder()\n            .zoneId(\"zone1\")\n            .nodes(\"pve\")\n            .mtu(1500)\n            .dns(\"1.1.1.1\")\n            .dnsZone(\"example.com\")\n            .ipam(\"pve\")\n            .reverseDns(\"1.1.1.1\")\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(finalizer)\n                .build());\n\n        // SDN Zone (Simple) - Second zone for demonstration\n        var exampleZone2 = new Simple(\"exampleZone2\", SimpleArgs.builder()\n            .zoneId(\"zone2\")\n            .nodes(\"pve\")\n            .mtu(1500)\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(finalizer)\n                .build());\n\n        // SDN VNet - Basic vnet\n        var exampleVnet1 = new Vnet(\"exampleVnet1\", VnetArgs.builder()\n            .vnetId(\"vnet1\")\n            .zone(exampleZone1.zoneId())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(finalizer)\n                .build());\n\n        // SDN VNet - VNet with alias and port isolation\n        var exampleVnet2 = new Vnet(\"exampleVnet2\", VnetArgs.builder()\n            .vnetId(\"vnet2\")\n            .zone(exampleZone2.zoneId())\n            .alias(\"Example VNet 2\")\n            .isolatePorts(true)\n            .vlanAware(false)\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(finalizer)\n                .build());\n\n        // Basic Subnet\n        var basicSubnet = new Subnet(\"basicSubnet\", SubnetArgs.builder()\n            .cidr(\"192.168.1.0/24\")\n            .vnet(exampleVnet1.vnetId())\n            .gateway(\"192.168.1.1\")\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(finalizer)\n                .build());\n\n        // Subnet with DHCP Configuration\n        var dhcpSubnet = new Subnet(\"dhcpSubnet\", SubnetArgs.builder()\n            .cidr(\"192.168.2.0/24\")\n            .vnet(exampleVnet2.vnetId())\n            .gateway(\"192.168.2.1\")\n            .dhcpDnsServer(\"192.168.2.53\")\n            .dnsZonePrefix(\"internal.example.com\")\n            .snat(true)\n            .dhcpRange(SubnetDhcpRangeArgs.builder()\n                .startAddress(\"192.168.2.10\")\n                .endAddress(\"192.168.2.100\")\n                .build())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(finalizer)\n                .build());\n\n        // SDN Applier for all resources\n        var subnetApplier = new Applier(\"subnetApplier\", ApplierArgs.Empty, CustomResourceOptions.builder()\n            .dependsOn(            \n                exampleZone1,\n                exampleZone2,\n                exampleVnet1,\n                exampleVnet2,\n                basicSubnet,\n                dhcpSubnet)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # SDN Zone (Simple) - Basic zone for simple vnets\n  exampleZone1:\n    type: proxmoxve:SDNZone:Simple\n    name: example_zone_1\n    properties:\n      zoneId: zone1\n      nodes:\n        - pve\n      mtu: 1500 # Optional attributes\n      dns: 1.1.1.1\n      dnsZone: example.com\n      ipam: pve\n      reverseDns: 1.1.1.1\n    options:\n      dependsOn:\n        - ${finalizer}\n  # SDN Zone (Simple) - Second zone for demonstration\n  exampleZone2:\n    type: proxmoxve:SDNZone:Simple\n    name: example_zone_2\n    properties:\n      zoneId: zone2\n      nodes:\n        - pve\n      mtu: 1500\n    options:\n      dependsOn:\n        - ${finalizer}\n  # SDN VNet - Basic vnet\n  exampleVnet1:\n    type: proxmoxve:Sdn:Vnet\n    name: example_vnet_1\n    properties:\n      vnetId: vnet1\n      zone: ${exampleZone1.zoneId}\n    options:\n      dependsOn:\n        - ${finalizer}\n  # SDN VNet - VNet with alias and port isolation\n  exampleVnet2:\n    type: proxmoxve:Sdn:Vnet\n    name: example_vnet_2\n    properties:\n      vnetId: vnet2\n      zone: ${exampleZone2.zoneId}\n      alias: Example VNet 2\n      isolatePorts: true\n      vlanAware: false\n    options:\n      dependsOn:\n        - ${finalizer}\n  # Basic Subnet\n  basicSubnet:\n    type: proxmoxve:Sdn:Subnet\n    name: basic_subnet\n    properties:\n      cidr: 192.168.1.0/24\n      vnet: ${exampleVnet1.vnetId}\n      gateway: 192.168.1.1\n    options:\n      dependsOn:\n        - ${finalizer}\n  # Subnet with DHCP Configuration\n  dhcpSubnet:\n    type: proxmoxve:Sdn:Subnet\n    name: dhcp_subnet\n    properties:\n      cidr: 192.168.2.0/24\n      vnet: ${exampleVnet2.vnetId}\n      gateway: 192.168.2.1\n      dhcpDnsServer: 192.168.2.53\n      dnsZonePrefix: internal.example.com\n      snat: true\n      dhcpRange:\n        startAddress: 192.168.2.10\n        endAddress: 192.168.2.100\n    options:\n      dependsOn:\n        - ${finalizer}\n  # SDN Applier for all resources\n  subnetApplier:\n    type: proxmoxve:Sdn:Applier\n    name: subnet_applier\n    options:\n      dependsOn:\n        - ${exampleZone1}\n        - ${exampleZone2}\n        - ${exampleVnet1}\n        - ${exampleVnet2}\n        - ${basicSubnet}\n        - ${dhcpSubnet}\n  finalizer:\n    type: proxmoxve:Sdn:Applier\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nSDN subnet can be imported using its unique identifier in the format: \u003cvnet\u003e/\u003csubnet-id\u003e\n\nThe \u003csubnet-id\u003e is the canonical ID from Proxmox, e.g., \"zone1-192.168.1.0-24\"\n\n```sh\n$ pulumi import proxmoxve:Sdn/subnet:Subnet basic_subnet vnet1/zone1-192.168.1.0-24\n```\n\n```sh\n$ pulumi import proxmoxve:Sdn/subnet:Subnet dhcp_subnet vnet2/zone2-192.168.2.0-24\n```\n\n","properties":{"cidr":{"type":"string","description":"A CIDR network address, for example 10.0.0.0/8\n"},"dhcpDnsServer":{"type":"string","description":"The DNS server used for DHCP.\n"},"dhcpRange":{"$ref":"#/types/proxmoxve:Sdn/SubnetDhcpRange:SubnetDhcpRange","description":"DHCP range (start and end IPs).\n"},"dnsZonePrefix":{"type":"string","description":"Prefix used for DNS zone delegation.\n"},"gateway":{"type":"string","description":"The gateway address for the subnet.\n"},"snat":{"type":"boolean","description":"Whether SNAT is enabled for the subnet.\n"},"vnet":{"type":"string","description":"The VNet to which this subnet belongs.\n"}},"required":["cidr","vnet"],"inputProperties":{"cidr":{"type":"string","description":"A CIDR network address, for example 10.0.0.0/8\n"},"dhcpDnsServer":{"type":"string","description":"The DNS server used for DHCP.\n"},"dhcpRange":{"$ref":"#/types/proxmoxve:Sdn/SubnetDhcpRange:SubnetDhcpRange","description":"DHCP range (start and end IPs).\n"},"dnsZonePrefix":{"type":"string","description":"Prefix used for DNS zone delegation.\n"},"gateway":{"type":"string","description":"The gateway address for the subnet.\n"},"snat":{"type":"boolean","description":"Whether SNAT is enabled for the subnet.\n"},"vnet":{"type":"string","description":"The VNet to which this subnet belongs.\n"}},"requiredInputs":["cidr","vnet"],"stateInputs":{"description":"Input properties used for looking up and filtering Subnet resources.\n","properties":{"cidr":{"type":"string","description":"A CIDR network address, for example 10.0.0.0/8\n"},"dhcpDnsServer":{"type":"string","description":"The DNS server used for DHCP.\n"},"dhcpRange":{"$ref":"#/types/proxmoxve:Sdn/SubnetDhcpRange:SubnetDhcpRange","description":"DHCP range (start and end IPs).\n"},"dnsZonePrefix":{"type":"string","description":"Prefix used for DNS zone delegation.\n"},"gateway":{"type":"string","description":"The gateway address for the subnet.\n"},"snat":{"type":"boolean","description":"Whether SNAT is enabled for the subnet.\n"},"vnet":{"type":"string","description":"The VNet to which this subnet belongs.\n"}},"type":"object"}},"proxmoxve:Sdn/vnet:Vnet":{"description":"Manages Proxmox VE SDN VNet.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst finalizer = new proxmoxve.sdn.Applier(\"finalizer\", {});\n// SDN Zone (Simple) - Basic zone for simple vnets\nconst exampleZone1 = new proxmoxve.sdnzone.Simple(\"example_zone_1\", {\n    zoneId: \"zone1\",\n    mtu: 1500,\n    dns: \"1.1.1.1\",\n    dnsZone: \"example.com\",\n    ipam: \"pve\",\n    reverseDns: \"1.1.1.1\",\n}, {\n    dependsOn: [finalizer],\n});\n// SDN Zone (Simple) - Second zone for demonstration\nconst exampleZone2 = new proxmoxve.sdnzone.Simple(\"example_zone_2\", {\n    zoneId: \"zone2\",\n    mtu: 1500,\n}, {\n    dependsOn: [finalizer],\n});\n// Basic VNet (Simple)\nconst basicVnet = new proxmoxve.sdn.Vnet(\"basic_vnet\", {\n    vnetId: \"vnet1\",\n    zone: exampleZone1.zoneId,\n}, {\n    dependsOn: [finalizer],\n});\n// VNet with Alias and Port Isolation\nconst isolatedVnet = new proxmoxve.sdn.Vnet(\"isolated_vnet\", {\n    vnetId: \"vnet2\",\n    zone: exampleZone2.zoneId,\n    alias: \"Isolated VNet\",\n    isolatePorts: true,\n    vlanAware: false,\n}, {\n    dependsOn: [finalizer],\n});\n// SDN Applier for all resources\nconst vnetApplier = new proxmoxve.sdn.Applier(\"vnet_applier\", {}, {\n    dependsOn: [\n        exampleZone1,\n        exampleZone2,\n        basicVnet,\n        isolatedVnet,\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfinalizer = proxmoxve.sdn.Applier(\"finalizer\")\n# SDN Zone (Simple) - Basic zone for simple vnets\nexample_zone1 = proxmoxve.sdnzone.Simple(\"example_zone_1\",\n    zone_id=\"zone1\",\n    mtu=1500,\n    dns=\"1.1.1.1\",\n    dns_zone=\"example.com\",\n    ipam=\"pve\",\n    reverse_dns=\"1.1.1.1\",\n    opts = pulumi.ResourceOptions(depends_on=[finalizer]))\n# SDN Zone (Simple) - Second zone for demonstration\nexample_zone2 = proxmoxve.sdnzone.Simple(\"example_zone_2\",\n    zone_id=\"zone2\",\n    mtu=1500,\n    opts = pulumi.ResourceOptions(depends_on=[finalizer]))\n# Basic VNet (Simple)\nbasic_vnet = proxmoxve.sdn.Vnet(\"basic_vnet\",\n    vnet_id=\"vnet1\",\n    zone=example_zone1.zone_id,\n    opts = pulumi.ResourceOptions(depends_on=[finalizer]))\n# VNet with Alias and Port Isolation\nisolated_vnet = proxmoxve.sdn.Vnet(\"isolated_vnet\",\n    vnet_id=\"vnet2\",\n    zone=example_zone2.zone_id,\n    alias=\"Isolated VNet\",\n    isolate_ports=True,\n    vlan_aware=False,\n    opts = pulumi.ResourceOptions(depends_on=[finalizer]))\n# SDN Applier for all resources\nvnet_applier = proxmoxve.sdn.Applier(\"vnet_applier\", opts = pulumi.ResourceOptions(depends_on=[\n        example_zone1,\n        example_zone2,\n        basic_vnet,\n        isolated_vnet,\n    ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var finalizer = new ProxmoxVE.Sdn.Applier(\"finalizer\");\n\n    // SDN Zone (Simple) - Basic zone for simple vnets\n    var exampleZone1 = new ProxmoxVE.SDNZone.Simple(\"example_zone_1\", new()\n    {\n        ZoneId = \"zone1\",\n        Mtu = 1500,\n        Dns = \"1.1.1.1\",\n        DnsZone = \"example.com\",\n        Ipam = \"pve\",\n        ReverseDns = \"1.1.1.1\",\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            finalizer,\n        },\n    });\n\n    // SDN Zone (Simple) - Second zone for demonstration\n    var exampleZone2 = new ProxmoxVE.SDNZone.Simple(\"example_zone_2\", new()\n    {\n        ZoneId = \"zone2\",\n        Mtu = 1500,\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            finalizer,\n        },\n    });\n\n    // Basic VNet (Simple)\n    var basicVnet = new ProxmoxVE.Sdn.Vnet(\"basic_vnet\", new()\n    {\n        VnetId = \"vnet1\",\n        Zone = exampleZone1.ZoneId,\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            finalizer,\n        },\n    });\n\n    // VNet with Alias and Port Isolation\n    var isolatedVnet = new ProxmoxVE.Sdn.Vnet(\"isolated_vnet\", new()\n    {\n        VnetId = \"vnet2\",\n        Zone = exampleZone2.ZoneId,\n        Alias = \"Isolated VNet\",\n        IsolatePorts = true,\n        VlanAware = false,\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            finalizer,\n        },\n    });\n\n    // SDN Applier for all resources\n    var vnetApplier = new ProxmoxVE.Sdn.Applier(\"vnet_applier\", new()\n    {\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            exampleZone1,\n            exampleZone2,\n            basicVnet,\n            isolatedVnet,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/sdn\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/sdnzone\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfinalizer, err := sdn.NewApplier(ctx, \"finalizer\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// SDN Zone (Simple) - Basic zone for simple vnets\n\t\texampleZone1, err := sdnzone.NewSimple(ctx, \"example_zone_1\", \u0026sdnzone.SimpleArgs{\n\t\t\tZoneId:     pulumi.String(\"zone1\"),\n\t\t\tMtu:        pulumi.Int(1500),\n\t\t\tDns:        pulumi.String(\"1.1.1.1\"),\n\t\t\tDnsZone:    pulumi.String(\"example.com\"),\n\t\t\tIpam:       pulumi.String(\"pve\"),\n\t\t\tReverseDns: pulumi.String(\"1.1.1.1\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfinalizer,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// SDN Zone (Simple) - Second zone for demonstration\n\t\texampleZone2, err := sdnzone.NewSimple(ctx, \"example_zone_2\", \u0026sdnzone.SimpleArgs{\n\t\t\tZoneId: pulumi.String(\"zone2\"),\n\t\t\tMtu:    pulumi.Int(1500),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfinalizer,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Basic VNet (Simple)\n\t\tbasicVnet, err := sdn.NewVnet(ctx, \"basic_vnet\", \u0026sdn.VnetArgs{\n\t\t\tVnetId: pulumi.String(\"vnet1\"),\n\t\t\tZone:   exampleZone1.ZoneId,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfinalizer,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// VNet with Alias and Port Isolation\n\t\tisolatedVnet, err := sdn.NewVnet(ctx, \"isolated_vnet\", \u0026sdn.VnetArgs{\n\t\t\tVnetId:       pulumi.String(\"vnet2\"),\n\t\t\tZone:         exampleZone2.ZoneId,\n\t\t\tAlias:        pulumi.String(\"Isolated VNet\"),\n\t\t\tIsolatePorts: pulumi.Bool(true),\n\t\t\tVlanAware:    pulumi.Bool(false),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfinalizer,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// SDN Applier for all resources\n\t\t_, err = sdn.NewApplier(ctx, \"vnet_applier\", nil, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texampleZone1,\n\t\t\texampleZone2,\n\t\t\tbasicVnet,\n\t\t\tisolatedVnet,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Sdn.Applier;\nimport io.muehlbachler.pulumi.proxmoxve.SDNZone.Simple;\nimport io.muehlbachler.pulumi.proxmoxve.SDNZone.SimpleArgs;\nimport io.muehlbachler.pulumi.proxmoxve.Sdn.Vnet;\nimport io.muehlbachler.pulumi.proxmoxve.Sdn.VnetArgs;\nimport io.muehlbachler.pulumi.proxmoxve.Sdn.ApplierArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var finalizer = new Applier(\"finalizer\");\n\n        // SDN Zone (Simple) - Basic zone for simple vnets\n        var exampleZone1 = new Simple(\"exampleZone1\", SimpleArgs.builder()\n            .zoneId(\"zone1\")\n            .mtu(1500)\n            .dns(\"1.1.1.1\")\n            .dnsZone(\"example.com\")\n            .ipam(\"pve\")\n            .reverseDns(\"1.1.1.1\")\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(finalizer)\n                .build());\n\n        // SDN Zone (Simple) - Second zone for demonstration\n        var exampleZone2 = new Simple(\"exampleZone2\", SimpleArgs.builder()\n            .zoneId(\"zone2\")\n            .mtu(1500)\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(finalizer)\n                .build());\n\n        // Basic VNet (Simple)\n        var basicVnet = new Vnet(\"basicVnet\", VnetArgs.builder()\n            .vnetId(\"vnet1\")\n            .zone(exampleZone1.zoneId())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(finalizer)\n                .build());\n\n        // VNet with Alias and Port Isolation\n        var isolatedVnet = new Vnet(\"isolatedVnet\", VnetArgs.builder()\n            .vnetId(\"vnet2\")\n            .zone(exampleZone2.zoneId())\n            .alias(\"Isolated VNet\")\n            .isolatePorts(true)\n            .vlanAware(false)\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(finalizer)\n                .build());\n\n        // SDN Applier for all resources\n        var vnetApplier = new Applier(\"vnetApplier\", ApplierArgs.Empty, CustomResourceOptions.builder()\n            .dependsOn(            \n                exampleZone1,\n                exampleZone2,\n                basicVnet,\n                isolatedVnet)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # SDN Zone (Simple) - Basic zone for simple vnets\n  exampleZone1:\n    type: proxmoxve:SDNZone:Simple\n    name: example_zone_1\n    properties:\n      zoneId: zone1\n      mtu: 1500 # Optional attributes\n      dns: 1.1.1.1\n      dnsZone: example.com\n      ipam: pve\n      reverseDns: 1.1.1.1\n    options:\n      dependsOn:\n        - ${finalizer}\n  # SDN Zone (Simple) - Second zone for demonstration\n  exampleZone2:\n    type: proxmoxve:SDNZone:Simple\n    name: example_zone_2\n    properties:\n      zoneId: zone2\n      mtu: 1500\n    options:\n      dependsOn:\n        - ${finalizer}\n  # Basic VNet (Simple)\n  basicVnet:\n    type: proxmoxve:Sdn:Vnet\n    name: basic_vnet\n    properties:\n      vnetId: vnet1\n      zone: ${exampleZone1.zoneId}\n    options:\n      dependsOn:\n        - ${finalizer}\n  # VNet with Alias and Port Isolation\n  isolatedVnet:\n    type: proxmoxve:Sdn:Vnet\n    name: isolated_vnet\n    properties:\n      vnetId: vnet2\n      zone: ${exampleZone2.zoneId}\n      alias: Isolated VNet\n      isolatePorts: true\n      vlanAware: false\n    options:\n      dependsOn:\n        - ${finalizer}\n  # SDN Applier for all resources\n  vnetApplier:\n    type: proxmoxve:Sdn:Applier\n    name: vnet_applier\n    options:\n      dependsOn:\n        - ${exampleZone1}\n        - ${exampleZone2}\n        - ${basicVnet}\n        - ${isolatedVnet}\n  finalizer:\n    type: proxmoxve:Sdn:Applier\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nSDN vnet can be imported using its unique identifier (vnet ID)\n\n```sh\n$ pulumi import proxmoxve:Sdn/vnet:Vnet basic_vnet vnet1\n```\n\n```sh\n$ pulumi import proxmoxve:Sdn/vnet:Vnet isolated_vnet vnet2\n```\n\n","properties":{"alias":{"type":"string","description":"An optional alias for this VNet.\n"},"isolatePorts":{"type":"boolean","description":"Isolate ports within this VNet.\n"},"tag":{"type":"integer","description":"Tag value for VLAN/VXLAN (can't be used with other zone types).\n"},"vlanAware":{"type":"boolean","description":"Allow VM VLANs to pass through this VNet.\n"},"vnetId":{"type":"string","description":"The unique identifier of the SDN VNet.\n"},"zone":{"type":"string","description":"The zone to which this VNet belongs.\n"}},"required":["vnetId","zone"],"inputProperties":{"alias":{"type":"string","description":"An optional alias for this VNet.\n"},"isolatePorts":{"type":"boolean","description":"Isolate ports within this VNet.\n"},"tag":{"type":"integer","description":"Tag value for VLAN/VXLAN (can't be used with other zone types).\n"},"vlanAware":{"type":"boolean","description":"Allow VM VLANs to pass through this VNet.\n"},"vnetId":{"type":"string","description":"The unique identifier of the SDN VNet.\n"},"zone":{"type":"string","description":"The zone to which this VNet belongs.\n"}},"requiredInputs":["vnetId","zone"],"stateInputs":{"description":"Input properties used for looking up and filtering Vnet resources.\n","properties":{"alias":{"type":"string","description":"An optional alias for this VNet.\n"},"isolatePorts":{"type":"boolean","description":"Isolate ports within this VNet.\n"},"tag":{"type":"integer","description":"Tag value for VLAN/VXLAN (can't be used with other zone types).\n"},"vlanAware":{"type":"boolean","description":"Allow VM VLANs to pass through this VNet.\n"},"vnetId":{"type":"string","description":"The unique identifier of the SDN VNet.\n"},"zone":{"type":"string","description":"The zone to which this VNet belongs.\n"}},"type":"object"}},"proxmoxve:Storage/cIFS:CIFS":{"description":"Manages an SMB/CIFS based storage server in Proxmox VE.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.storage.CIFS(\"example\", {\n    cifsId: \"example-cifs\",\n    nodes: [\"pve\"],\n    server: \"10.0.0.20\",\n    share: \"proxmox\",\n    username: \"cifs-user\",\n    password: \"cifs-password\",\n    contents: [\"images\"],\n    domain: \"WORKGROUP\",\n    subdirectory: \"terraform\",\n    preallocation: \"metadata\",\n    snapshotAsVolumeChain: true,\n    backups: {\n        maxProtectedBackups: 5,\n        keepDaily: 7,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.storage.CIFS(\"example\",\n    cifs_id=\"example-cifs\",\n    nodes=[\"pve\"],\n    server=\"10.0.0.20\",\n    share=\"proxmox\",\n    username=\"cifs-user\",\n    password=\"cifs-password\",\n    contents=[\"images\"],\n    domain=\"WORKGROUP\",\n    subdirectory=\"terraform\",\n    preallocation=\"metadata\",\n    snapshot_as_volume_chain=True,\n    backups={\n        \"max_protected_backups\": 5,\n        \"keep_daily\": 7,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ProxmoxVE.Storage.CIFS(\"example\", new()\n    {\n        CifsId = \"example-cifs\",\n        Nodes = new[]\n        {\n            \"pve\",\n        },\n        Server = \"10.0.0.20\",\n        Share = \"proxmox\",\n        Username = \"cifs-user\",\n        Password = \"cifs-password\",\n        Contents = new[]\n        {\n            \"images\",\n        },\n        Domain = \"WORKGROUP\",\n        Subdirectory = \"terraform\",\n        Preallocation = \"metadata\",\n        SnapshotAsVolumeChain = true,\n        Backups = new ProxmoxVE.Storage.Inputs.CIFSBackupsArgs\n        {\n            MaxProtectedBackups = 5,\n            KeepDaily = 7,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := storage.NewCIFS(ctx, \"example\", \u0026storage.CIFSArgs{\n\t\t\tCifsId: pulumi.String(\"example-cifs\"),\n\t\t\tNodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"pve\"),\n\t\t\t},\n\t\t\tServer:   pulumi.String(\"10.0.0.20\"),\n\t\t\tShare:    pulumi.String(\"proxmox\"),\n\t\t\tUsername: pulumi.String(\"cifs-user\"),\n\t\t\tPassword: pulumi.String(\"cifs-password\"),\n\t\t\tContents: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"images\"),\n\t\t\t},\n\t\t\tDomain:                pulumi.String(\"WORKGROUP\"),\n\t\t\tSubdirectory:          pulumi.String(\"terraform\"),\n\t\t\tPreallocation:         pulumi.String(\"metadata\"),\n\t\t\tSnapshotAsVolumeChain: pulumi.Bool(true),\n\t\t\tBackups: \u0026storage.CIFSBackupsArgs{\n\t\t\t\tMaxProtectedBackups: pulumi.Int(5),\n\t\t\t\tKeepDaily:           pulumi.Int(7),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Storage.CIFS;\nimport io.muehlbachler.pulumi.proxmoxve.Storage.CIFSArgs;\nimport com.pulumi.proxmoxve.Storage.inputs.CIFSBackupsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new CIFS(\"example\", CIFSArgs.builder()\n            .cifsId(\"example-cifs\")\n            .nodes(\"pve\")\n            .server(\"10.0.0.20\")\n            .share(\"proxmox\")\n            .username(\"cifs-user\")\n            .password(\"cifs-password\")\n            .contents(\"images\")\n            .domain(\"WORKGROUP\")\n            .subdirectory(\"terraform\")\n            .preallocation(\"metadata\")\n            .snapshotAsVolumeChain(true)\n            .backups(CIFSBackupsArgs.builder()\n                .maxProtectedBackups(5)\n                .keepDaily(7)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:Storage:CIFS\n    properties:\n      cifsId: example-cifs\n      nodes:\n        - pve\n      server: 10.0.0.20\n      share: proxmox\n      username: cifs-user\n      password: cifs-password\n      contents:\n        - images\n      domain: WORKGROUP\n      subdirectory: terraform\n      preallocation: metadata\n      snapshotAsVolumeChain: true\n      backups:\n        maxProtectedBackups: 5\n        keepDaily: 7\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"backups":{"$ref":"#/types/proxmoxve:Storage/CIFSBackups:CIFSBackups","description":"Configure backup retention settings for the storage type.\n"},"cifsId":{"type":"string","description":"The unique identifier of the storage.\n"},"contents":{"type":"array","items":{"type":"string"},"description":"The content types that can be stored on this storage. Valid values: \u003cspan pulumi-lang-nodejs=\"`backup`\" pulumi-lang-dotnet=\"`Backup`\" pulumi-lang-go=\"`backup`\" pulumi-lang-python=\"`backup`\" pulumi-lang-yaml=\"`backup`\" pulumi-lang-java=\"`backup`\"\u003e`backup`\u003c/span\u003e (VM backups), \u003cspan pulumi-lang-nodejs=\"`images`\" pulumi-lang-dotnet=\"`Images`\" pulumi-lang-go=\"`images`\" pulumi-lang-python=\"`images`\" pulumi-lang-yaml=\"`images`\" pulumi-lang-java=\"`images`\"\u003e`images`\u003c/span\u003e (VM disk images), \u003cspan pulumi-lang-nodejs=\"`import`\" pulumi-lang-dotnet=\"`Import`\" pulumi-lang-go=\"`import`\" pulumi-lang-python=\"`import`\" pulumi-lang-yaml=\"`import`\" pulumi-lang-java=\"`import`\"\u003e`import`\u003c/span\u003e (VM disk images for import), \u003cspan pulumi-lang-nodejs=\"`iso`\" pulumi-lang-dotnet=\"`Iso`\" pulumi-lang-go=\"`iso`\" pulumi-lang-python=\"`iso`\" pulumi-lang-yaml=\"`iso`\" pulumi-lang-java=\"`iso`\"\u003e`iso`\u003c/span\u003e (ISO images), \u003cspan pulumi-lang-nodejs=\"`rootdir`\" pulumi-lang-dotnet=\"`Rootdir`\" pulumi-lang-go=\"`rootdir`\" pulumi-lang-python=\"`rootdir`\" pulumi-lang-yaml=\"`rootdir`\" pulumi-lang-java=\"`rootdir`\"\u003e`rootdir`\u003c/span\u003e (container root directories), \u003cspan pulumi-lang-nodejs=\"`snippets`\" pulumi-lang-dotnet=\"`Snippets`\" pulumi-lang-go=\"`snippets`\" pulumi-lang-python=\"`snippets`\" pulumi-lang-yaml=\"`snippets`\" pulumi-lang-java=\"`snippets`\"\u003e`snippets`\u003c/span\u003e (cloud-init, hook scripts, etc.), \u003cspan pulumi-lang-nodejs=\"`vztmpl`\" pulumi-lang-dotnet=\"`Vztmpl`\" pulumi-lang-go=\"`vztmpl`\" pulumi-lang-python=\"`vztmpl`\" pulumi-lang-yaml=\"`vztmpl`\" pulumi-lang-java=\"`vztmpl`\"\u003e`vztmpl`\u003c/span\u003e (container templates).\n"},"disable":{"type":"boolean","description":"Whether the storage is disabled.\n"},"domain":{"type":"string","description":"The SMB/CIFS domain.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"A list of nodes where this storage is available.\n"},"password":{"type":"string","description":"The password for authenticating with the SMB/CIFS server.\n","secret":true},"preallocation":{"type":"string","description":"The preallocation mode for raw and qcow2 images.\n"},"server":{"type":"string","description":"The IP address or DNS name of the SMB/CIFS server.\n"},"share":{"type":"string","description":"The name of the SMB/CIFS share.\n"},"shared":{"type":"boolean","description":"Whether the storage is shared across all nodes.\n"},"snapshotAsVolumeChain":{"type":"boolean","description":"Enable support for creating snapshots through volume backing-chains.\n"},"subdirectory":{"type":"string","description":"A subdirectory to mount within the share.\n"},"username":{"type":"string","description":"The username for authenticating with the SMB/CIFS server.\n"}},"required":["contents","disable","cifsId","nodes","password","server","share","shared","username"],"inputProperties":{"backups":{"$ref":"#/types/proxmoxve:Storage/CIFSBackups:CIFSBackups","description":"Configure backup retention settings for the storage type.\n"},"cifsId":{"type":"string","description":"The unique identifier of the storage.\n"},"contents":{"type":"array","items":{"type":"string"},"description":"The content types that can be stored on this storage. Valid values: \u003cspan pulumi-lang-nodejs=\"`backup`\" pulumi-lang-dotnet=\"`Backup`\" pulumi-lang-go=\"`backup`\" pulumi-lang-python=\"`backup`\" pulumi-lang-yaml=\"`backup`\" pulumi-lang-java=\"`backup`\"\u003e`backup`\u003c/span\u003e (VM backups), \u003cspan pulumi-lang-nodejs=\"`images`\" pulumi-lang-dotnet=\"`Images`\" pulumi-lang-go=\"`images`\" pulumi-lang-python=\"`images`\" pulumi-lang-yaml=\"`images`\" pulumi-lang-java=\"`images`\"\u003e`images`\u003c/span\u003e (VM disk images), \u003cspan pulumi-lang-nodejs=\"`import`\" pulumi-lang-dotnet=\"`Import`\" pulumi-lang-go=\"`import`\" pulumi-lang-python=\"`import`\" pulumi-lang-yaml=\"`import`\" pulumi-lang-java=\"`import`\"\u003e`import`\u003c/span\u003e (VM disk images for import), \u003cspan pulumi-lang-nodejs=\"`iso`\" pulumi-lang-dotnet=\"`Iso`\" pulumi-lang-go=\"`iso`\" pulumi-lang-python=\"`iso`\" pulumi-lang-yaml=\"`iso`\" pulumi-lang-java=\"`iso`\"\u003e`iso`\u003c/span\u003e (ISO images), \u003cspan pulumi-lang-nodejs=\"`rootdir`\" pulumi-lang-dotnet=\"`Rootdir`\" pulumi-lang-go=\"`rootdir`\" pulumi-lang-python=\"`rootdir`\" pulumi-lang-yaml=\"`rootdir`\" pulumi-lang-java=\"`rootdir`\"\u003e`rootdir`\u003c/span\u003e (container root directories), \u003cspan pulumi-lang-nodejs=\"`snippets`\" pulumi-lang-dotnet=\"`Snippets`\" pulumi-lang-go=\"`snippets`\" pulumi-lang-python=\"`snippets`\" pulumi-lang-yaml=\"`snippets`\" pulumi-lang-java=\"`snippets`\"\u003e`snippets`\u003c/span\u003e (cloud-init, hook scripts, etc.), \u003cspan pulumi-lang-nodejs=\"`vztmpl`\" pulumi-lang-dotnet=\"`Vztmpl`\" pulumi-lang-go=\"`vztmpl`\" pulumi-lang-python=\"`vztmpl`\" pulumi-lang-yaml=\"`vztmpl`\" pulumi-lang-java=\"`vztmpl`\"\u003e`vztmpl`\u003c/span\u003e (container templates).\n"},"disable":{"type":"boolean","description":"Whether the storage is disabled.\n"},"domain":{"type":"string","description":"The SMB/CIFS domain.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"A list of nodes where this storage is available.\n"},"password":{"type":"string","description":"The password for authenticating with the SMB/CIFS server.\n","secret":true},"preallocation":{"type":"string","description":"The preallocation mode for raw and qcow2 images.\n"},"server":{"type":"string","description":"The IP address or DNS name of the SMB/CIFS server.\n"},"share":{"type":"string","description":"The name of the SMB/CIFS share.\n"},"snapshotAsVolumeChain":{"type":"boolean","description":"Enable support for creating snapshots through volume backing-chains.\n"},"subdirectory":{"type":"string","description":"A subdirectory to mount within the share.\n"},"username":{"type":"string","description":"The username for authenticating with the SMB/CIFS server.\n"}},"requiredInputs":["cifsId","password","server","share","username"],"stateInputs":{"description":"Input properties used for looking up and filtering CIFS resources.\n","properties":{"backups":{"$ref":"#/types/proxmoxve:Storage/CIFSBackups:CIFSBackups","description":"Configure backup retention settings for the storage type.\n"},"cifsId":{"type":"string","description":"The unique identifier of the storage.\n"},"contents":{"type":"array","items":{"type":"string"},"description":"The content types that can be stored on this storage. Valid values: \u003cspan pulumi-lang-nodejs=\"`backup`\" pulumi-lang-dotnet=\"`Backup`\" pulumi-lang-go=\"`backup`\" pulumi-lang-python=\"`backup`\" pulumi-lang-yaml=\"`backup`\" pulumi-lang-java=\"`backup`\"\u003e`backup`\u003c/span\u003e (VM backups), \u003cspan pulumi-lang-nodejs=\"`images`\" pulumi-lang-dotnet=\"`Images`\" pulumi-lang-go=\"`images`\" pulumi-lang-python=\"`images`\" pulumi-lang-yaml=\"`images`\" pulumi-lang-java=\"`images`\"\u003e`images`\u003c/span\u003e (VM disk images), \u003cspan pulumi-lang-nodejs=\"`import`\" pulumi-lang-dotnet=\"`Import`\" pulumi-lang-go=\"`import`\" pulumi-lang-python=\"`import`\" pulumi-lang-yaml=\"`import`\" pulumi-lang-java=\"`import`\"\u003e`import`\u003c/span\u003e (VM disk images for import), \u003cspan pulumi-lang-nodejs=\"`iso`\" pulumi-lang-dotnet=\"`Iso`\" pulumi-lang-go=\"`iso`\" pulumi-lang-python=\"`iso`\" pulumi-lang-yaml=\"`iso`\" pulumi-lang-java=\"`iso`\"\u003e`iso`\u003c/span\u003e (ISO images), \u003cspan pulumi-lang-nodejs=\"`rootdir`\" pulumi-lang-dotnet=\"`Rootdir`\" pulumi-lang-go=\"`rootdir`\" pulumi-lang-python=\"`rootdir`\" pulumi-lang-yaml=\"`rootdir`\" pulumi-lang-java=\"`rootdir`\"\u003e`rootdir`\u003c/span\u003e (container root directories), \u003cspan pulumi-lang-nodejs=\"`snippets`\" pulumi-lang-dotnet=\"`Snippets`\" pulumi-lang-go=\"`snippets`\" pulumi-lang-python=\"`snippets`\" pulumi-lang-yaml=\"`snippets`\" pulumi-lang-java=\"`snippets`\"\u003e`snippets`\u003c/span\u003e (cloud-init, hook scripts, etc.), \u003cspan pulumi-lang-nodejs=\"`vztmpl`\" pulumi-lang-dotnet=\"`Vztmpl`\" pulumi-lang-go=\"`vztmpl`\" pulumi-lang-python=\"`vztmpl`\" pulumi-lang-yaml=\"`vztmpl`\" pulumi-lang-java=\"`vztmpl`\"\u003e`vztmpl`\u003c/span\u003e (container templates).\n"},"disable":{"type":"boolean","description":"Whether the storage is disabled.\n"},"domain":{"type":"string","description":"The SMB/CIFS domain.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"A list of nodes where this storage is available.\n"},"password":{"type":"string","description":"The password for authenticating with the SMB/CIFS server.\n","secret":true},"preallocation":{"type":"string","description":"The preallocation mode for raw and qcow2 images.\n"},"server":{"type":"string","description":"The IP address or DNS name of the SMB/CIFS server.\n"},"share":{"type":"string","description":"The name of the SMB/CIFS share.\n"},"shared":{"type":"boolean","description":"Whether the storage is shared across all nodes.\n"},"snapshotAsVolumeChain":{"type":"boolean","description":"Enable support for creating snapshots through volume backing-chains.\n"},"subdirectory":{"type":"string","description":"A subdirectory to mount within the share.\n"},"username":{"type":"string","description":"The username for authenticating with the SMB/CIFS server.\n"}},"type":"object"}},"proxmoxve:Storage/directory:Directory":{"description":"Manages directory-based storage in Proxmox VE.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.storage.Directory(\"example\", {\n    directoryId: \"example-dir\",\n    path: \"/var/lib/vz\",\n    nodes: [\"pve\"],\n    contents: [\"images\"],\n    shared: true,\n    disable: false,\n    backups: {\n        maxProtectedBackups: 5,\n        keepDaily: 7,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.storage.Directory(\"example\",\n    directory_id=\"example-dir\",\n    path=\"/var/lib/vz\",\n    nodes=[\"pve\"],\n    contents=[\"images\"],\n    shared=True,\n    disable=False,\n    backups={\n        \"max_protected_backups\": 5,\n        \"keep_daily\": 7,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ProxmoxVE.Storage.Directory(\"example\", new()\n    {\n        DirectoryId = \"example-dir\",\n        Path = \"/var/lib/vz\",\n        Nodes = new[]\n        {\n            \"pve\",\n        },\n        Contents = new[]\n        {\n            \"images\",\n        },\n        Shared = true,\n        Disable = false,\n        Backups = new ProxmoxVE.Storage.Inputs.DirectoryBackupsArgs\n        {\n            MaxProtectedBackups = 5,\n            KeepDaily = 7,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := storage.NewDirectory(ctx, \"example\", \u0026storage.DirectoryArgs{\n\t\t\tDirectoryId: pulumi.String(\"example-dir\"),\n\t\t\tPath:        pulumi.String(\"/var/lib/vz\"),\n\t\t\tNodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"pve\"),\n\t\t\t},\n\t\t\tContents: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"images\"),\n\t\t\t},\n\t\t\tShared:  pulumi.Bool(true),\n\t\t\tDisable: pulumi.Bool(false),\n\t\t\tBackups: \u0026storage.DirectoryBackupsArgs{\n\t\t\t\tMaxProtectedBackups: pulumi.Int(5),\n\t\t\t\tKeepDaily:           pulumi.Int(7),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Storage.Directory;\nimport io.muehlbachler.pulumi.proxmoxve.Storage.DirectoryArgs;\nimport com.pulumi.proxmoxve.Storage.inputs.DirectoryBackupsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Directory(\"example\", DirectoryArgs.builder()\n            .directoryId(\"example-dir\")\n            .path(\"/var/lib/vz\")\n            .nodes(\"pve\")\n            .contents(\"images\")\n            .shared(true)\n            .disable(false)\n            .backups(DirectoryBackupsArgs.builder()\n                .maxProtectedBackups(5)\n                .keepDaily(7)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:Storage:Directory\n    properties:\n      directoryId: example-dir\n      path: /var/lib/vz\n      nodes:\n        - pve\n      contents:\n        - images\n      shared: true\n      disable: false\n      backups:\n        maxProtectedBackups: 5\n        keepDaily: 7\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"backups":{"$ref":"#/types/proxmoxve:Storage/DirectoryBackups:DirectoryBackups","description":"Configure backup retention settings for the storage type.\n"},"contents":{"type":"array","items":{"type":"string"},"description":"The content types that can be stored on this storage. Valid values: \u003cspan pulumi-lang-nodejs=\"`backup`\" pulumi-lang-dotnet=\"`Backup`\" pulumi-lang-go=\"`backup`\" pulumi-lang-python=\"`backup`\" pulumi-lang-yaml=\"`backup`\" pulumi-lang-java=\"`backup`\"\u003e`backup`\u003c/span\u003e (VM backups), \u003cspan pulumi-lang-nodejs=\"`images`\" pulumi-lang-dotnet=\"`Images`\" pulumi-lang-go=\"`images`\" pulumi-lang-python=\"`images`\" pulumi-lang-yaml=\"`images`\" pulumi-lang-java=\"`images`\"\u003e`images`\u003c/span\u003e (VM disk images), \u003cspan pulumi-lang-nodejs=\"`import`\" pulumi-lang-dotnet=\"`Import`\" pulumi-lang-go=\"`import`\" pulumi-lang-python=\"`import`\" pulumi-lang-yaml=\"`import`\" pulumi-lang-java=\"`import`\"\u003e`import`\u003c/span\u003e (VM disk images for import), \u003cspan pulumi-lang-nodejs=\"`iso`\" pulumi-lang-dotnet=\"`Iso`\" pulumi-lang-go=\"`iso`\" pulumi-lang-python=\"`iso`\" pulumi-lang-yaml=\"`iso`\" pulumi-lang-java=\"`iso`\"\u003e`iso`\u003c/span\u003e (ISO images), \u003cspan pulumi-lang-nodejs=\"`rootdir`\" pulumi-lang-dotnet=\"`Rootdir`\" pulumi-lang-go=\"`rootdir`\" pulumi-lang-python=\"`rootdir`\" pulumi-lang-yaml=\"`rootdir`\" pulumi-lang-java=\"`rootdir`\"\u003e`rootdir`\u003c/span\u003e (container root directories), \u003cspan pulumi-lang-nodejs=\"`snippets`\" pulumi-lang-dotnet=\"`Snippets`\" pulumi-lang-go=\"`snippets`\" pulumi-lang-python=\"`snippets`\" pulumi-lang-yaml=\"`snippets`\" pulumi-lang-java=\"`snippets`\"\u003e`snippets`\u003c/span\u003e (cloud-init, hook scripts, etc.), \u003cspan pulumi-lang-nodejs=\"`vztmpl`\" pulumi-lang-dotnet=\"`Vztmpl`\" pulumi-lang-go=\"`vztmpl`\" pulumi-lang-python=\"`vztmpl`\" pulumi-lang-yaml=\"`vztmpl`\" pulumi-lang-java=\"`vztmpl`\"\u003e`vztmpl`\u003c/span\u003e (container templates).\n"},"directoryId":{"type":"string","description":"The unique identifier of the storage.\n"},"disable":{"type":"boolean","description":"Whether the storage is disabled.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"A list of nodes where this storage is available.\n"},"path":{"type":"string","description":"The path to the directory on the Proxmox node.\n"},"preallocation":{"type":"string","description":"The preallocation mode for raw and qcow2 images.\n"},"shared":{"type":"boolean","description":"Whether the storage is shared across all nodes.\n"}},"required":["contents","disable","directoryId","nodes","path","shared"],"inputProperties":{"backups":{"$ref":"#/types/proxmoxve:Storage/DirectoryBackups:DirectoryBackups","description":"Configure backup retention settings for the storage type.\n"},"contents":{"type":"array","items":{"type":"string"},"description":"The content types that can be stored on this storage. Valid values: \u003cspan pulumi-lang-nodejs=\"`backup`\" pulumi-lang-dotnet=\"`Backup`\" pulumi-lang-go=\"`backup`\" pulumi-lang-python=\"`backup`\" pulumi-lang-yaml=\"`backup`\" pulumi-lang-java=\"`backup`\"\u003e`backup`\u003c/span\u003e (VM backups), \u003cspan pulumi-lang-nodejs=\"`images`\" pulumi-lang-dotnet=\"`Images`\" pulumi-lang-go=\"`images`\" pulumi-lang-python=\"`images`\" pulumi-lang-yaml=\"`images`\" pulumi-lang-java=\"`images`\"\u003e`images`\u003c/span\u003e (VM disk images), \u003cspan pulumi-lang-nodejs=\"`import`\" pulumi-lang-dotnet=\"`Import`\" pulumi-lang-go=\"`import`\" pulumi-lang-python=\"`import`\" pulumi-lang-yaml=\"`import`\" pulumi-lang-java=\"`import`\"\u003e`import`\u003c/span\u003e (VM disk images for import), \u003cspan pulumi-lang-nodejs=\"`iso`\" pulumi-lang-dotnet=\"`Iso`\" pulumi-lang-go=\"`iso`\" pulumi-lang-python=\"`iso`\" pulumi-lang-yaml=\"`iso`\" pulumi-lang-java=\"`iso`\"\u003e`iso`\u003c/span\u003e (ISO images), \u003cspan pulumi-lang-nodejs=\"`rootdir`\" pulumi-lang-dotnet=\"`Rootdir`\" pulumi-lang-go=\"`rootdir`\" pulumi-lang-python=\"`rootdir`\" pulumi-lang-yaml=\"`rootdir`\" pulumi-lang-java=\"`rootdir`\"\u003e`rootdir`\u003c/span\u003e (container root directories), \u003cspan pulumi-lang-nodejs=\"`snippets`\" pulumi-lang-dotnet=\"`Snippets`\" pulumi-lang-go=\"`snippets`\" pulumi-lang-python=\"`snippets`\" pulumi-lang-yaml=\"`snippets`\" pulumi-lang-java=\"`snippets`\"\u003e`snippets`\u003c/span\u003e (cloud-init, hook scripts, etc.), \u003cspan pulumi-lang-nodejs=\"`vztmpl`\" pulumi-lang-dotnet=\"`Vztmpl`\" pulumi-lang-go=\"`vztmpl`\" pulumi-lang-python=\"`vztmpl`\" pulumi-lang-yaml=\"`vztmpl`\" pulumi-lang-java=\"`vztmpl`\"\u003e`vztmpl`\u003c/span\u003e (container templates).\n"},"directoryId":{"type":"string","description":"The unique identifier of the storage.\n"},"disable":{"type":"boolean","description":"Whether the storage is disabled.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"A list of nodes where this storage is available.\n"},"path":{"type":"string","description":"The path to the directory on the Proxmox node.\n"},"preallocation":{"type":"string","description":"The preallocation mode for raw and qcow2 images.\n"},"shared":{"type":"boolean","description":"Whether the storage is shared across all nodes.\n"}},"requiredInputs":["directoryId","path"],"stateInputs":{"description":"Input properties used for looking up and filtering Directory resources.\n","properties":{"backups":{"$ref":"#/types/proxmoxve:Storage/DirectoryBackups:DirectoryBackups","description":"Configure backup retention settings for the storage type.\n"},"contents":{"type":"array","items":{"type":"string"},"description":"The content types that can be stored on this storage. Valid values: \u003cspan pulumi-lang-nodejs=\"`backup`\" pulumi-lang-dotnet=\"`Backup`\" pulumi-lang-go=\"`backup`\" pulumi-lang-python=\"`backup`\" pulumi-lang-yaml=\"`backup`\" pulumi-lang-java=\"`backup`\"\u003e`backup`\u003c/span\u003e (VM backups), \u003cspan pulumi-lang-nodejs=\"`images`\" pulumi-lang-dotnet=\"`Images`\" pulumi-lang-go=\"`images`\" pulumi-lang-python=\"`images`\" pulumi-lang-yaml=\"`images`\" pulumi-lang-java=\"`images`\"\u003e`images`\u003c/span\u003e (VM disk images), \u003cspan pulumi-lang-nodejs=\"`import`\" pulumi-lang-dotnet=\"`Import`\" pulumi-lang-go=\"`import`\" pulumi-lang-python=\"`import`\" pulumi-lang-yaml=\"`import`\" pulumi-lang-java=\"`import`\"\u003e`import`\u003c/span\u003e (VM disk images for import), \u003cspan pulumi-lang-nodejs=\"`iso`\" pulumi-lang-dotnet=\"`Iso`\" pulumi-lang-go=\"`iso`\" pulumi-lang-python=\"`iso`\" pulumi-lang-yaml=\"`iso`\" pulumi-lang-java=\"`iso`\"\u003e`iso`\u003c/span\u003e (ISO images), \u003cspan pulumi-lang-nodejs=\"`rootdir`\" pulumi-lang-dotnet=\"`Rootdir`\" pulumi-lang-go=\"`rootdir`\" pulumi-lang-python=\"`rootdir`\" pulumi-lang-yaml=\"`rootdir`\" pulumi-lang-java=\"`rootdir`\"\u003e`rootdir`\u003c/span\u003e (container root directories), \u003cspan pulumi-lang-nodejs=\"`snippets`\" pulumi-lang-dotnet=\"`Snippets`\" pulumi-lang-go=\"`snippets`\" pulumi-lang-python=\"`snippets`\" pulumi-lang-yaml=\"`snippets`\" pulumi-lang-java=\"`snippets`\"\u003e`snippets`\u003c/span\u003e (cloud-init, hook scripts, etc.), \u003cspan pulumi-lang-nodejs=\"`vztmpl`\" pulumi-lang-dotnet=\"`Vztmpl`\" pulumi-lang-go=\"`vztmpl`\" pulumi-lang-python=\"`vztmpl`\" pulumi-lang-yaml=\"`vztmpl`\" pulumi-lang-java=\"`vztmpl`\"\u003e`vztmpl`\u003c/span\u003e (container templates).\n"},"directoryId":{"type":"string","description":"The unique identifier of the storage.\n"},"disable":{"type":"boolean","description":"Whether the storage is disabled.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"A list of nodes where this storage is available.\n"},"path":{"type":"string","description":"The path to the directory on the Proxmox node.\n"},"preallocation":{"type":"string","description":"The preallocation mode for raw and qcow2 images.\n"},"shared":{"type":"boolean","description":"Whether the storage is shared across all nodes.\n"}},"type":"object"}},"proxmoxve:Storage/file:File":{"description":"Use this resource to upload files to a Proxmox VE node. The file can be a backup, an ISO image, a Disk Image, a snippet, or a container template depending on the \u003cspan pulumi-lang-nodejs=\"`contentType`\" pulumi-lang-dotnet=\"`ContentType`\" pulumi-lang-go=\"`contentType`\" pulumi-lang-python=\"`content_type`\" pulumi-lang-yaml=\"`contentType`\" pulumi-lang-java=\"`contentType`\"\u003e`content_type`\u003c/span\u003e attribute.\n\n## Example Usage\n\n### Backups (\u003cspan pulumi-lang-nodejs=\"`backup`\" pulumi-lang-dotnet=\"`Backup`\" pulumi-lang-go=\"`backup`\" pulumi-lang-python=\"`backup`\" pulumi-lang-yaml=\"`backup`\" pulumi-lang-java=\"`backup`\"\u003e`backup`\u003c/span\u003e)\n\n\u003e The resource with this content type uses SSH access to the node. You might need to configure the \u003cspan pulumi-lang-nodejs=\"`ssh`\" pulumi-lang-dotnet=\"`Ssh`\" pulumi-lang-go=\"`ssh`\" pulumi-lang-python=\"`ssh`\" pulumi-lang-yaml=\"`ssh`\" pulumi-lang-java=\"`ssh`\"\u003e`ssh`\u003c/span\u003e option in the \u003cspan pulumi-lang-nodejs=\"`provider`\" pulumi-lang-dotnet=\"`Provider`\" pulumi-lang-go=\"`provider`\" pulumi-lang-python=\"`provider`\" pulumi-lang-yaml=\"`provider`\" pulumi-lang-java=\"`provider`\"\u003e`provider`\u003c/span\u003e section.\n\n\u003e The provider currently does not support restoring backups. You can use the Proxmox VE web interface or the \u003cspan pulumi-lang-nodejs=\"`qmrestore`\" pulumi-lang-dotnet=\"`Qmrestore`\" pulumi-lang-go=\"`qmrestore`\" pulumi-lang-python=\"`qmrestore`\" pulumi-lang-yaml=\"`qmrestore`\" pulumi-lang-java=\"`qmrestore`\"\u003e`qmrestore`\u003c/span\u003e / `pct restore` command to restore VM / Container from a backup.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst backup = new proxmoxve.storage.File(\"backup\", {\n    contentType: \"backup\",\n    datastoreId: \"local\",\n    nodeName: \"pve\",\n    sourceFile: {\n        path: \"vzdump-lxc-100-2023_11_08-23_10_05.tar.zst\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nbackup = proxmoxve.storage.File(\"backup\",\n    content_type=\"backup\",\n    datastore_id=\"local\",\n    node_name=\"pve\",\n    source_file={\n        \"path\": \"vzdump-lxc-100-2023_11_08-23_10_05.tar.zst\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var backup = new ProxmoxVE.Storage.File(\"backup\", new()\n    {\n        ContentType = \"backup\",\n        DatastoreId = \"local\",\n        NodeName = \"pve\",\n        SourceFile = new ProxmoxVE.Storage.Inputs.FileSourceFileArgs\n        {\n            Path = \"vzdump-lxc-100-2023_11_08-23_10_05.tar.zst\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := storage.NewFile(ctx, \"backup\", \u0026storage.FileArgs{\n\t\t\tContentType: pulumi.String(\"backup\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName:    pulumi.String(\"pve\"),\n\t\t\tSourceFile: \u0026storage.FileSourceFileArgs{\n\t\t\t\tPath: pulumi.String(\"vzdump-lxc-100-2023_11_08-23_10_05.tar.zst\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Storage.File;\nimport io.muehlbachler.pulumi.proxmoxve.Storage.FileArgs;\nimport com.pulumi.proxmoxve.Storage.inputs.FileSourceFileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var backup = new File(\"backup\", FileArgs.builder()\n            .contentType(\"backup\")\n            .datastoreId(\"local\")\n            .nodeName(\"pve\")\n            .sourceFile(FileSourceFileArgs.builder()\n                .path(\"vzdump-lxc-100-2023_11_08-23_10_05.tar.zst\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  backup:\n    type: proxmoxve:Storage:File\n    properties:\n      contentType: backup\n      datastoreId: local\n      nodeName: pve\n      sourceFile:\n        path: vzdump-lxc-100-2023_11_08-23_10_05.tar.zst\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Images\n\n\u003e Consider using \u003cspan pulumi-lang-nodejs=\"`proxmoxve.Download.File`\" pulumi-lang-dotnet=\"`proxmoxve.Download.File`\" pulumi-lang-go=\"`Download.File`\" pulumi-lang-python=\"`Download.File`\" pulumi-lang-yaml=\"`proxmoxve.Download.File`\" pulumi-lang-java=\"`proxmoxve.Download.File`\"\u003e`proxmoxve.Download.File`\u003c/span\u003e resource instead. Using this resource for images is less efficient (requires to transfer uploaded image to node) though still supported.\n\n\u003e The \u003cspan pulumi-lang-nodejs=\"`import`\" pulumi-lang-dotnet=\"`Import`\" pulumi-lang-go=\"`import`\" pulumi-lang-python=\"`import`\" pulumi-lang-yaml=\"`import`\" pulumi-lang-java=\"`import`\"\u003e`import`\u003c/span\u003e content type is not enabled by default on Proxmox VE storages. To use this resource with \u003cspan pulumi-lang-nodejs=\"`contentType \" pulumi-lang-dotnet=\"`ContentType \" pulumi-lang-go=\"`contentType \" pulumi-lang-python=\"`content_type \" pulumi-lang-yaml=\"`contentType \" pulumi-lang-java=\"`contentType \"\u003e`content_type \u003c/span\u003e= \"import\"`, first add `Import` to the allowed content types on the target storage under 'Datacenter \u003e Storage' in the Proxmox web interface.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst ubuntuContainerTemplate = new proxmoxve.storage.File(\"ubuntu_container_template\", {\n    contentType: \"iso\",\n    datastoreId: \"local\",\n    nodeName: \"pve\",\n    sourceFile: {\n        path: \"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nubuntu_container_template = proxmoxve.storage.File(\"ubuntu_container_template\",\n    content_type=\"iso\",\n    datastore_id=\"local\",\n    node_name=\"pve\",\n    source_file={\n        \"path\": \"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ubuntuContainerTemplate = new ProxmoxVE.Storage.File(\"ubuntu_container_template\", new()\n    {\n        ContentType = \"iso\",\n        DatastoreId = \"local\",\n        NodeName = \"pve\",\n        SourceFile = new ProxmoxVE.Storage.Inputs.FileSourceFileArgs\n        {\n            Path = \"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := storage.NewFile(ctx, \"ubuntu_container_template\", \u0026storage.FileArgs{\n\t\t\tContentType: pulumi.String(\"iso\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName:    pulumi.String(\"pve\"),\n\t\t\tSourceFile: \u0026storage.FileSourceFileArgs{\n\t\t\t\tPath: pulumi.String(\"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Storage.File;\nimport io.muehlbachler.pulumi.proxmoxve.Storage.FileArgs;\nimport com.pulumi.proxmoxve.Storage.inputs.FileSourceFileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var ubuntuContainerTemplate = new File(\"ubuntuContainerTemplate\", FileArgs.builder()\n            .contentType(\"iso\")\n            .datastoreId(\"local\")\n            .nodeName(\"pve\")\n            .sourceFile(FileSourceFileArgs.builder()\n                .path(\"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ubuntuContainerTemplate:\n    type: proxmoxve:Storage:File\n    name: ubuntu_container_template\n    properties:\n      contentType: iso\n      datastoreId: local\n      nodeName: pve\n      sourceFile:\n        path: https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst ubuntuContainerTemplate = new proxmoxve.storage.File(\"ubuntu_container_template\", {\n    contentType: \"import\",\n    datastoreId: \"local\",\n    nodeName: \"pve\",\n    sourceFile: {\n        path: \"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nubuntu_container_template = proxmoxve.storage.File(\"ubuntu_container_template\",\n    content_type=\"import\",\n    datastore_id=\"local\",\n    node_name=\"pve\",\n    source_file={\n        \"path\": \"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ubuntuContainerTemplate = new ProxmoxVE.Storage.File(\"ubuntu_container_template\", new()\n    {\n        ContentType = \"import\",\n        DatastoreId = \"local\",\n        NodeName = \"pve\",\n        SourceFile = new ProxmoxVE.Storage.Inputs.FileSourceFileArgs\n        {\n            Path = \"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := storage.NewFile(ctx, \"ubuntu_container_template\", \u0026storage.FileArgs{\n\t\t\tContentType: pulumi.String(\"import\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName:    pulumi.String(\"pve\"),\n\t\t\tSourceFile: \u0026storage.FileSourceFileArgs{\n\t\t\t\tPath: pulumi.String(\"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Storage.File;\nimport io.muehlbachler.pulumi.proxmoxve.Storage.FileArgs;\nimport com.pulumi.proxmoxve.Storage.inputs.FileSourceFileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var ubuntuContainerTemplate = new File(\"ubuntuContainerTemplate\", FileArgs.builder()\n            .contentType(\"import\")\n            .datastoreId(\"local\")\n            .nodeName(\"pve\")\n            .sourceFile(FileSourceFileArgs.builder()\n                .path(\"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ubuntuContainerTemplate:\n    type: proxmoxve:Storage:File\n    name: ubuntu_container_template\n    properties:\n      contentType: import\n      datastoreId: local\n      nodeName: pve\n      sourceFile:\n        path: https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Snippets\n\n\u003e Snippets are not enabled by default in new Proxmox installations. You need to enable them in the 'Datacenter\u003eStorage' section of the proxmox interface before first using this resource.\n\n\u003e The resource with this content type uses SSH access to the node. You might need to configure the \u003cspan pulumi-lang-nodejs=\"`ssh`\" pulumi-lang-dotnet=\"`Ssh`\" pulumi-lang-go=\"`ssh`\" pulumi-lang-python=\"`ssh`\" pulumi-lang-yaml=\"`ssh`\" pulumi-lang-java=\"`ssh`\"\u003e`ssh`\u003c/span\u003e option in the \u003cspan pulumi-lang-nodejs=\"`provider`\" pulumi-lang-dotnet=\"`Provider`\" pulumi-lang-go=\"`provider`\" pulumi-lang-python=\"`provider`\" pulumi-lang-yaml=\"`provider`\" pulumi-lang-java=\"`provider`\"\u003e`provider`\u003c/span\u003e section.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\nimport * as std from \"@pulumi/std\";\n\nconst cloudConfig = new proxmoxve.storage.File(\"cloud_config\", {\n    contentType: \"snippets\",\n    datastoreId: \"local\",\n    nodeName: \"pve\",\n    sourceRaw: {\n        data: std.trimspace({\n            input: example.publicKeyOpenssh,\n        }).then(invoke =\u003e `#cloud-config\nchpasswd:\n  list: |\n    ubuntu:example\n  expire: false\nhostname: example-hostname\npackages:\n  - qemu-guest-agent\nusers:\n  - default\n  - name: ubuntu\n    groups: sudo\n    shell: /bin/bash\n    ssh-authorized-keys:\n      - ${invoke.result}\n    sudo: ALL=(ALL) NOPASSWD:ALL\n`),\n        fileName: \"example.cloud-config.yaml\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\nimport pulumi_std as std\n\ncloud_config = proxmoxve.storage.File(\"cloud_config\",\n    content_type=\"snippets\",\n    datastore_id=\"local\",\n    node_name=\"pve\",\n    source_raw={\n        \"data\": f\"\"\"#cloud-config\nchpasswd:\n  list: |\n    ubuntu:example\n  expire: false\nhostname: example-hostname\npackages:\n  - qemu-guest-agent\nusers:\n  - default\n  - name: ubuntu\n    groups: sudo\n    shell: /bin/bash\n    ssh-authorized-keys:\n      - {std.trimspace(input=example[\"publicKeyOpenssh\"]).result}\n    sudo: ALL=(ALL) NOPASSWD:ALL\n\"\"\",\n        \"file_name\": \"example.cloud-config.yaml\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var cloudConfig = new ProxmoxVE.Storage.File(\"cloud_config\", new()\n    {\n        ContentType = \"snippets\",\n        DatastoreId = \"local\",\n        NodeName = \"pve\",\n        SourceRaw = new ProxmoxVE.Storage.Inputs.FileSourceRawArgs\n        {\n            Data = Std.Trimspace.Invoke(new()\n            {\n                Input = example.PublicKeyOpenssh,\n            }).Apply(invoke =\u003e @$\"#cloud-config\nchpasswd:\n  list: |\n    ubuntu:example\n  expire: false\nhostname: example-hostname\npackages:\n  - qemu-guest-agent\nusers:\n  - default\n  - name: ubuntu\n    groups: sudo\n    shell: /bin/bash\n    ssh-authorized-keys:\n      - {invoke.Result}\n    sudo: ALL=(ALL) NOPASSWD:ALL\n\"),\n            FileName = \"example.cloud-config.yaml\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/storage\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeTrimspace, err := std.Trimspace(ctx, \u0026std.TrimspaceArgs{\n\t\t\tInput: example.PublicKeyOpenssh,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewFile(ctx, \"cloud_config\", \u0026storage.FileArgs{\n\t\t\tContentType: pulumi.String(\"snippets\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName:    pulumi.String(\"pve\"),\n\t\t\tSourceRaw: \u0026storage.FileSourceRawArgs{\n\t\t\t\tData: pulumi.Sprintf(`#cloud-config\nchpasswd:\n  list: |\n    ubuntu:example\n  expire: false\nhostname: example-hostname\npackages:\n  - qemu-guest-agent\nusers:\n  - default\n  - name: ubuntu\n    groups: sudo\n    shell: /bin/bash\n    ssh-authorized-keys:\n      - %v\n    sudo: ALL=(ALL) NOPASSWD:ALL\n`, invokeTrimspace.Result),\n\t\t\t\tFileName: pulumi.String(\"example.cloud-config.yaml\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Storage.File;\nimport io.muehlbachler.pulumi.proxmoxve.Storage.FileArgs;\nimport com.pulumi.proxmoxve.Storage.inputs.FileSourceRawArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.TrimspaceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var cloudConfig = new File(\"cloudConfig\", FileArgs.builder()\n            .contentType(\"snippets\")\n            .datastoreId(\"local\")\n            .nodeName(\"pve\")\n            .sourceRaw(FileSourceRawArgs.builder()\n                .data(\"\"\"\n#cloud-config\nchpasswd:\n  list: |\n    ubuntu:example\n  expire: false\nhostname: example-hostname\npackages:\n  - qemu-guest-agent\nusers:\n  - default\n  - name: ubuntu\n    groups: sudo\n    shell: /bin/bash\n    ssh-authorized-keys:\n      - %s\n    sudo: ALL=(ALL) NOPASSWD:ALL\n\", StdFunctions.trimspace(TrimspaceArgs.builder()\n                    .input(example.publicKeyOpenssh())\n                    .build()).result()))\n                .fileName(\"example.cloud-config.yaml\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  cloudConfig:\n    type: proxmoxve:Storage:File\n    name: cloud_config\n    properties:\n      contentType: snippets\n      datastoreId: local\n      nodeName: pve\n      sourceRaw:\n        data:\n          fn::join:\n            - \"\"\n            - - \"#cloud-config\\nchpasswd:\\n  list: |\\n    ubuntu:example\\n  expire: false\\nhostname: example-hostname\\npackages:\\n  - qemu-guest-agent\\nusers:\\n  - default\\n  - name: ubuntu\\n    groups: sudo\\n    shell: /bin/bash\\n    ssh-authorized-keys:\\n      - \"\n              - fn::invoke:\n                  function: std:trimspace\n                  arguments:\n                    input: ${example.publicKeyOpenssh}\n                  return: result\n              - |2\n                    sudo: ALL=(ALL) NOPASSWD:ALL\n        fileName: example.cloud-config.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nThe \u003cspan pulumi-lang-nodejs=\"`fileMode`\" pulumi-lang-dotnet=\"`FileMode`\" pulumi-lang-go=\"`fileMode`\" pulumi-lang-python=\"`file_mode`\" pulumi-lang-yaml=\"`fileMode`\" pulumi-lang-java=\"`fileMode`\"\u003e`file_mode`\u003c/span\u003e attribute can be used to make a script file executable, e.g. when referencing the file in the \u003cspan pulumi-lang-nodejs=\"`hookScriptFileId`\" pulumi-lang-dotnet=\"`HookScriptFileId`\" pulumi-lang-go=\"`hookScriptFileId`\" pulumi-lang-python=\"`hook_script_file_id`\" pulumi-lang-yaml=\"`hookScriptFileId`\" pulumi-lang-java=\"`hookScriptFileId`\"\u003e`hook_script_file_id`\u003c/span\u003e attribute of a container or a VM resource which is a requirement enforced by the Proxmox VE API.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst hookScript = new proxmoxve.storage.File(\"hook_script\", {\n    contentType: \"snippets\",\n    datastoreId: \"local\",\n    nodeName: \"pve\",\n    fileMode: \"0700\",\n    sourceRaw: {\n        data: `#!/usr/bin/env bash\n\necho \\\\\"Running hook script\\\\\"\n`,\n        fileName: \"prepare-hook.sh\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nhook_script = proxmoxve.storage.File(\"hook_script\",\n    content_type=\"snippets\",\n    datastore_id=\"local\",\n    node_name=\"pve\",\n    file_mode=\"0700\",\n    source_raw={\n        \"data\": \"\"\"#!/usr/bin/env bash\n\necho \\\"Running hook script\\\"\n\"\"\",\n        \"file_name\": \"prepare-hook.sh\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var hookScript = new ProxmoxVE.Storage.File(\"hook_script\", new()\n    {\n        ContentType = \"snippets\",\n        DatastoreId = \"local\",\n        NodeName = \"pve\",\n        FileMode = \"0700\",\n        SourceRaw = new ProxmoxVE.Storage.Inputs.FileSourceRawArgs\n        {\n            Data = @\"#!/usr/bin/env bash\n\necho \\\"\"Running hook script\\\"\"\n\",\n            FileName = \"prepare-hook.sh\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := storage.NewFile(ctx, \"hook_script\", \u0026storage.FileArgs{\n\t\t\tContentType: pulumi.String(\"snippets\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName:    pulumi.String(\"pve\"),\n\t\t\tFileMode:    pulumi.String(\"0700\"),\n\t\t\tSourceRaw: \u0026storage.FileSourceRawArgs{\n\t\t\t\tData:     pulumi.String(\"#!/usr/bin/env bash\\n\\necho \\\\\\\"Running hook script\\\\\\\"\\n\"),\n\t\t\t\tFileName: pulumi.String(\"prepare-hook.sh\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Storage.File;\nimport io.muehlbachler.pulumi.proxmoxve.Storage.FileArgs;\nimport com.pulumi.proxmoxve.Storage.inputs.FileSourceRawArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var hookScript = new File(\"hookScript\", FileArgs.builder()\n            .contentType(\"snippets\")\n            .datastoreId(\"local\")\n            .nodeName(\"pve\")\n            .fileMode(\"0700\")\n            .sourceRaw(FileSourceRawArgs.builder()\n                .data(\"\"\"\n#!/usr/bin/env bash\n\necho \\\"Running hook script\\\"\n                \"\"\")\n                .fileName(\"prepare-hook.sh\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  hookScript:\n    type: proxmoxve:Storage:File\n    name: hook_script\n    properties:\n      contentType: snippets\n      datastoreId: local\n      nodeName: pve\n      fileMode: '0700'\n      sourceRaw:\n        data: |\n          #!/usr/bin/env bash\n\n          echo \\\"Running hook script\\\"\n        fileName: prepare-hook.sh\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Container Template (\u003cspan pulumi-lang-nodejs=\"`vztmpl`\" pulumi-lang-dotnet=\"`Vztmpl`\" pulumi-lang-go=\"`vztmpl`\" pulumi-lang-python=\"`vztmpl`\" pulumi-lang-yaml=\"`vztmpl`\" pulumi-lang-java=\"`vztmpl`\"\u003e`vztmpl`\u003c/span\u003e)\n\n\u003e Consider using \u003cspan pulumi-lang-nodejs=\"`proxmoxve.Download.File`\" pulumi-lang-dotnet=\"`proxmoxve.Download.File`\" pulumi-lang-go=\"`Download.File`\" pulumi-lang-python=\"`Download.File`\" pulumi-lang-yaml=\"`proxmoxve.Download.File`\" pulumi-lang-java=\"`proxmoxve.Download.File`\"\u003e`proxmoxve.Download.File`\u003c/span\u003e resource instead. Using this resource for container images is less efficient (requires to transfer uploaded image to node) though still supported.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst ubuntuContainerTemplate = new proxmoxve.storage.File(\"ubuntu_container_template\", {\n    contentType: \"vztmpl\",\n    datastoreId: \"local\",\n    nodeName: \"first-node\",\n    sourceFile: {\n        path: \"http://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nubuntu_container_template = proxmoxve.storage.File(\"ubuntu_container_template\",\n    content_type=\"vztmpl\",\n    datastore_id=\"local\",\n    node_name=\"first-node\",\n    source_file={\n        \"path\": \"http://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ubuntuContainerTemplate = new ProxmoxVE.Storage.File(\"ubuntu_container_template\", new()\n    {\n        ContentType = \"vztmpl\",\n        DatastoreId = \"local\",\n        NodeName = \"first-node\",\n        SourceFile = new ProxmoxVE.Storage.Inputs.FileSourceFileArgs\n        {\n            Path = \"http://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := storage.NewFile(ctx, \"ubuntu_container_template\", \u0026storage.FileArgs{\n\t\t\tContentType: pulumi.String(\"vztmpl\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName:    pulumi.String(\"first-node\"),\n\t\t\tSourceFile: \u0026storage.FileSourceFileArgs{\n\t\t\t\tPath: pulumi.String(\"http://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Storage.File;\nimport io.muehlbachler.pulumi.proxmoxve.Storage.FileArgs;\nimport com.pulumi.proxmoxve.Storage.inputs.FileSourceFileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var ubuntuContainerTemplate = new File(\"ubuntuContainerTemplate\", FileArgs.builder()\n            .contentType(\"vztmpl\")\n            .datastoreId(\"local\")\n            .nodeName(\"first-node\")\n            .sourceFile(FileSourceFileArgs.builder()\n                .path(\"http://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ubuntuContainerTemplate:\n    type: proxmoxve:Storage:File\n    name: ubuntu_container_template\n    properties:\n      contentType: vztmpl\n      datastoreId: local\n      nodeName: first-node\n      sourceFile:\n        path: http://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Important Notes\n\nThe Proxmox VE API endpoint for file uploads does not support chunked transfer\nencoding, which means that we must first store the source file as a temporary\nfile locally before uploading it.\n\nYou must ensure that you have at least `Size-in-MB * 2 + 1` MB of storage space\navailable (twice the size plus overhead because a multipart payload needs to be\ncreated as another temporary file).\n\nBy default, if the specified file already exists, the resource will\nunconditionally replace it and take ownership of the resource. On destruction,\nthe file will be deleted as if it did not exist before. If you want to prevent\nthe resource from replacing the file, set \u003cspan pulumi-lang-nodejs=\"`overwrite`\" pulumi-lang-dotnet=\"`Overwrite`\" pulumi-lang-go=\"`overwrite`\" pulumi-lang-python=\"`overwrite`\" pulumi-lang-yaml=\"`overwrite`\" pulumi-lang-java=\"`overwrite`\"\u003e`overwrite`\u003c/span\u003e to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n\n## Import\n\nInstances can be imported using the `node_name`, `datastore_id`, `content_type`\n\nand the `file_name` in the following format:\n\ntext\n\nnode_name:datastore_id/content_type/file_name\n\nExample:\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Storage/file:File cloud_config pve/local:snippets/example.cloud-config.yaml\n```\n\n","properties":{"contentType":{"type":"string","description":"The content type. If not specified, the content\ntype will be inferred from the file extension. Valid values are:\n"},"datastoreId":{"type":"string","description":"The datastore id.\n"},"fileMode":{"type":"string","description":"The file mode in octal format, e.g. \u003cspan pulumi-lang-nodejs=\"`0700`\" pulumi-lang-dotnet=\"`0700`\" pulumi-lang-go=\"`0700`\" pulumi-lang-python=\"`0700`\" pulumi-lang-yaml=\"`0700`\" pulumi-lang-java=\"`0700`\"\u003e`0700`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`600`\" pulumi-lang-dotnet=\"`600`\" pulumi-lang-go=\"`600`\" pulumi-lang-python=\"`600`\" pulumi-lang-yaml=\"`600`\" pulumi-lang-java=\"`600`\"\u003e`600`\u003c/span\u003e. Note that the prefixes \u003cspan pulumi-lang-nodejs=\"`0o`\" pulumi-lang-dotnet=\"`0o`\" pulumi-lang-go=\"`0o`\" pulumi-lang-python=\"`0o`\" pulumi-lang-yaml=\"`0o`\" pulumi-lang-java=\"`0o`\"\u003e`0o`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`0x`\" pulumi-lang-dotnet=\"`0x`\" pulumi-lang-go=\"`0x`\" pulumi-lang-python=\"`0x`\" pulumi-lang-yaml=\"`0x`\" pulumi-lang-java=\"`0x`\"\u003e`0x`\u003c/span\u003e is not supported! Setting this attribute is also only allowed for `root@pam` authenticated user.\n"},"fileModificationDate":{"type":"string","description":"The file modification date (RFC 3339).\n"},"fileName":{"type":"string","description":"The file name.\n"},"fileSize":{"type":"integer","description":"The file size in bytes.\n"},"fileTag":{"type":"string","description":"The file tag.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"overwrite":{"type":"boolean","description":"Whether to overwrite an existing file (defaults to\n\u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"sourceFile":{"$ref":"#/types/proxmoxve:Storage/FileSourceFile:FileSourceFile","description":"The source file (conflicts with \u003cspan pulumi-lang-nodejs=\"`sourceRaw`\" pulumi-lang-dotnet=\"`SourceRaw`\" pulumi-lang-go=\"`sourceRaw`\" pulumi-lang-python=\"`source_raw`\" pulumi-lang-yaml=\"`sourceRaw`\" pulumi-lang-java=\"`sourceRaw`\"\u003e`source_raw`\u003c/span\u003e),\ncould be a local file or a URL. If the source file is a URL, the file will\nbe downloaded and stored locally before uploading it to Proxmox VE.\n"},"sourceRaw":{"$ref":"#/types/proxmoxve:Storage/FileSourceRaw:FileSourceRaw","description":"The raw source (conflicts with \u003cspan pulumi-lang-nodejs=\"`sourceFile`\" pulumi-lang-dotnet=\"`SourceFile`\" pulumi-lang-go=\"`sourceFile`\" pulumi-lang-python=\"`source_file`\" pulumi-lang-yaml=\"`sourceFile`\" pulumi-lang-java=\"`sourceFile`\"\u003e`source_file`\u003c/span\u003e).\n"},"timeoutUpload":{"type":"integer","description":"Timeout for uploading ISO/VSTMPL files in\nseconds (defaults to 1800).\n"}},"required":["contentType","datastoreId","fileModificationDate","fileName","fileSize","fileTag","nodeName"],"inputProperties":{"contentType":{"type":"string","description":"The content type. If not specified, the content\ntype will be inferred from the file extension. Valid values are:\n","willReplaceOnChanges":true},"datastoreId":{"type":"string","description":"The datastore id.\n","willReplaceOnChanges":true},"fileMode":{"type":"string","description":"The file mode in octal format, e.g. \u003cspan pulumi-lang-nodejs=\"`0700`\" pulumi-lang-dotnet=\"`0700`\" pulumi-lang-go=\"`0700`\" pulumi-lang-python=\"`0700`\" pulumi-lang-yaml=\"`0700`\" pulumi-lang-java=\"`0700`\"\u003e`0700`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`600`\" pulumi-lang-dotnet=\"`600`\" pulumi-lang-go=\"`600`\" pulumi-lang-python=\"`600`\" pulumi-lang-yaml=\"`600`\" pulumi-lang-java=\"`600`\"\u003e`600`\u003c/span\u003e. Note that the prefixes \u003cspan pulumi-lang-nodejs=\"`0o`\" pulumi-lang-dotnet=\"`0o`\" pulumi-lang-go=\"`0o`\" pulumi-lang-python=\"`0o`\" pulumi-lang-yaml=\"`0o`\" pulumi-lang-java=\"`0o`\"\u003e`0o`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`0x`\" pulumi-lang-dotnet=\"`0x`\" pulumi-lang-go=\"`0x`\" pulumi-lang-python=\"`0x`\" pulumi-lang-yaml=\"`0x`\" pulumi-lang-java=\"`0x`\"\u003e`0x`\u003c/span\u003e is not supported! Setting this attribute is also only allowed for `root@pam` authenticated user.\n","willReplaceOnChanges":true},"nodeName":{"type":"string","description":"The node name.\n","willReplaceOnChanges":true},"overwrite":{"type":"boolean","description":"Whether to overwrite an existing file (defaults to\n\u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"sourceFile":{"$ref":"#/types/proxmoxve:Storage/FileSourceFile:FileSourceFile","description":"The source file (conflicts with \u003cspan pulumi-lang-nodejs=\"`sourceRaw`\" pulumi-lang-dotnet=\"`SourceRaw`\" pulumi-lang-go=\"`sourceRaw`\" pulumi-lang-python=\"`source_raw`\" pulumi-lang-yaml=\"`sourceRaw`\" pulumi-lang-java=\"`sourceRaw`\"\u003e`source_raw`\u003c/span\u003e),\ncould be a local file or a URL. If the source file is a URL, the file will\nbe downloaded and stored locally before uploading it to Proxmox VE.\n","willReplaceOnChanges":true},"sourceRaw":{"$ref":"#/types/proxmoxve:Storage/FileSourceRaw:FileSourceRaw","description":"The raw source (conflicts with \u003cspan pulumi-lang-nodejs=\"`sourceFile`\" pulumi-lang-dotnet=\"`SourceFile`\" pulumi-lang-go=\"`sourceFile`\" pulumi-lang-python=\"`source_file`\" pulumi-lang-yaml=\"`sourceFile`\" pulumi-lang-java=\"`sourceFile`\"\u003e`source_file`\u003c/span\u003e).\n","willReplaceOnChanges":true},"timeoutUpload":{"type":"integer","description":"Timeout for uploading ISO/VSTMPL files in\nseconds (defaults to 1800).\n"}},"requiredInputs":["datastoreId","nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering File resources.\n","properties":{"contentType":{"type":"string","description":"The content type. If not specified, the content\ntype will be inferred from the file extension. Valid values are:\n","willReplaceOnChanges":true},"datastoreId":{"type":"string","description":"The datastore id.\n","willReplaceOnChanges":true},"fileMode":{"type":"string","description":"The file mode in octal format, e.g. \u003cspan pulumi-lang-nodejs=\"`0700`\" pulumi-lang-dotnet=\"`0700`\" pulumi-lang-go=\"`0700`\" pulumi-lang-python=\"`0700`\" pulumi-lang-yaml=\"`0700`\" pulumi-lang-java=\"`0700`\"\u003e`0700`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`600`\" pulumi-lang-dotnet=\"`600`\" pulumi-lang-go=\"`600`\" pulumi-lang-python=\"`600`\" pulumi-lang-yaml=\"`600`\" pulumi-lang-java=\"`600`\"\u003e`600`\u003c/span\u003e. Note that the prefixes \u003cspan pulumi-lang-nodejs=\"`0o`\" pulumi-lang-dotnet=\"`0o`\" pulumi-lang-go=\"`0o`\" pulumi-lang-python=\"`0o`\" pulumi-lang-yaml=\"`0o`\" pulumi-lang-java=\"`0o`\"\u003e`0o`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`0x`\" pulumi-lang-dotnet=\"`0x`\" pulumi-lang-go=\"`0x`\" pulumi-lang-python=\"`0x`\" pulumi-lang-yaml=\"`0x`\" pulumi-lang-java=\"`0x`\"\u003e`0x`\u003c/span\u003e is not supported! Setting this attribute is also only allowed for `root@pam` authenticated user.\n","willReplaceOnChanges":true},"fileModificationDate":{"type":"string","description":"The file modification date (RFC 3339).\n","willReplaceOnChanges":true},"fileName":{"type":"string","description":"The file name.\n"},"fileSize":{"type":"integer","description":"The file size in bytes.\n","willReplaceOnChanges":true},"fileTag":{"type":"string","description":"The file tag.\n","willReplaceOnChanges":true},"nodeName":{"type":"string","description":"The node name.\n","willReplaceOnChanges":true},"overwrite":{"type":"boolean","description":"Whether to overwrite an existing file (defaults to\n\u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"sourceFile":{"$ref":"#/types/proxmoxve:Storage/FileSourceFile:FileSourceFile","description":"The source file (conflicts with \u003cspan pulumi-lang-nodejs=\"`sourceRaw`\" pulumi-lang-dotnet=\"`SourceRaw`\" pulumi-lang-go=\"`sourceRaw`\" pulumi-lang-python=\"`source_raw`\" pulumi-lang-yaml=\"`sourceRaw`\" pulumi-lang-java=\"`sourceRaw`\"\u003e`source_raw`\u003c/span\u003e),\ncould be a local file or a URL. If the source file is a URL, the file will\nbe downloaded and stored locally before uploading it to Proxmox VE.\n","willReplaceOnChanges":true},"sourceRaw":{"$ref":"#/types/proxmoxve:Storage/FileSourceRaw:FileSourceRaw","description":"The raw source (conflicts with \u003cspan pulumi-lang-nodejs=\"`sourceFile`\" pulumi-lang-dotnet=\"`SourceFile`\" pulumi-lang-go=\"`sourceFile`\" pulumi-lang-python=\"`source_file`\" pulumi-lang-yaml=\"`sourceFile`\" pulumi-lang-java=\"`sourceFile`\"\u003e`source_file`\u003c/span\u003e).\n","willReplaceOnChanges":true},"timeoutUpload":{"type":"integer","description":"Timeout for uploading ISO/VSTMPL files in\nseconds (defaults to 1800).\n"}},"type":"object"}},"proxmoxve:Storage/lVM:LVM":{"description":"Manages LVM-based storage in Proxmox VE.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.storage.LVM(\"example\", {\n    lvmId: \"example-lvm\",\n    nodes: [\"pve\"],\n    volumeGroup: \"vg0\",\n    contents: [\"images\"],\n    wipeRemovedVolumes: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.storage.LVM(\"example\",\n    lvm_id=\"example-lvm\",\n    nodes=[\"pve\"],\n    volume_group=\"vg0\",\n    contents=[\"images\"],\n    wipe_removed_volumes=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ProxmoxVE.Storage.LVM(\"example\", new()\n    {\n        LvmId = \"example-lvm\",\n        Nodes = new[]\n        {\n            \"pve\",\n        },\n        VolumeGroup = \"vg0\",\n        Contents = new[]\n        {\n            \"images\",\n        },\n        WipeRemovedVolumes = false,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := storage.NewLVM(ctx, \"example\", \u0026storage.LVMArgs{\n\t\t\tLvmId: pulumi.String(\"example-lvm\"),\n\t\t\tNodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"pve\"),\n\t\t\t},\n\t\t\tVolumeGroup: pulumi.String(\"vg0\"),\n\t\t\tContents: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"images\"),\n\t\t\t},\n\t\t\tWipeRemovedVolumes: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Storage.LVM;\nimport io.muehlbachler.pulumi.proxmoxve.Storage.LVMArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new LVM(\"example\", LVMArgs.builder()\n            .lvmId(\"example-lvm\")\n            .nodes(\"pve\")\n            .volumeGroup(\"vg0\")\n            .contents(\"images\")\n            .wipeRemovedVolumes(false)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:Storage:LVM\n    properties:\n      lvmId: example-lvm\n      nodes:\n        - pve\n      volumeGroup: vg0\n      contents:\n        - images\n      wipeRemovedVolumes: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"contents":{"type":"array","items":{"type":"string"},"description":"The content types that can be stored on this storage. Valid values: \u003cspan pulumi-lang-nodejs=\"`backup`\" pulumi-lang-dotnet=\"`Backup`\" pulumi-lang-go=\"`backup`\" pulumi-lang-python=\"`backup`\" pulumi-lang-yaml=\"`backup`\" pulumi-lang-java=\"`backup`\"\u003e`backup`\u003c/span\u003e (VM backups), \u003cspan pulumi-lang-nodejs=\"`images`\" pulumi-lang-dotnet=\"`Images`\" pulumi-lang-go=\"`images`\" pulumi-lang-python=\"`images`\" pulumi-lang-yaml=\"`images`\" pulumi-lang-java=\"`images`\"\u003e`images`\u003c/span\u003e (VM disk images), \u003cspan pulumi-lang-nodejs=\"`import`\" pulumi-lang-dotnet=\"`Import`\" pulumi-lang-go=\"`import`\" pulumi-lang-python=\"`import`\" pulumi-lang-yaml=\"`import`\" pulumi-lang-java=\"`import`\"\u003e`import`\u003c/span\u003e (VM disk images for import), \u003cspan pulumi-lang-nodejs=\"`iso`\" pulumi-lang-dotnet=\"`Iso`\" pulumi-lang-go=\"`iso`\" pulumi-lang-python=\"`iso`\" pulumi-lang-yaml=\"`iso`\" pulumi-lang-java=\"`iso`\"\u003e`iso`\u003c/span\u003e (ISO images), \u003cspan pulumi-lang-nodejs=\"`rootdir`\" pulumi-lang-dotnet=\"`Rootdir`\" pulumi-lang-go=\"`rootdir`\" pulumi-lang-python=\"`rootdir`\" pulumi-lang-yaml=\"`rootdir`\" pulumi-lang-java=\"`rootdir`\"\u003e`rootdir`\u003c/span\u003e (container root directories), \u003cspan pulumi-lang-nodejs=\"`snippets`\" pulumi-lang-dotnet=\"`Snippets`\" pulumi-lang-go=\"`snippets`\" pulumi-lang-python=\"`snippets`\" pulumi-lang-yaml=\"`snippets`\" pulumi-lang-java=\"`snippets`\"\u003e`snippets`\u003c/span\u003e (cloud-init, hook scripts, etc.), \u003cspan pulumi-lang-nodejs=\"`vztmpl`\" pulumi-lang-dotnet=\"`Vztmpl`\" pulumi-lang-go=\"`vztmpl`\" pulumi-lang-python=\"`vztmpl`\" pulumi-lang-yaml=\"`vztmpl`\" pulumi-lang-java=\"`vztmpl`\"\u003e`vztmpl`\u003c/span\u003e (container templates).\n"},"disable":{"type":"boolean","description":"Whether the storage is disabled.\n"},"lvmId":{"type":"string","description":"The unique identifier of the storage.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"A list of nodes where this storage is available.\n"},"shared":{"type":"boolean","description":"Whether the storage is shared across all nodes.\n"},"volumeGroup":{"type":"string","description":"The name of the volume group to use.\n"},"wipeRemovedVolumes":{"type":"boolean","description":"Whether to zero-out data when removing LVMs.\n"}},"required":["contents","disable","lvmId","nodes","shared","volumeGroup","wipeRemovedVolumes"],"inputProperties":{"contents":{"type":"array","items":{"type":"string"},"description":"The content types that can be stored on this storage. Valid values: \u003cspan pulumi-lang-nodejs=\"`backup`\" pulumi-lang-dotnet=\"`Backup`\" pulumi-lang-go=\"`backup`\" pulumi-lang-python=\"`backup`\" pulumi-lang-yaml=\"`backup`\" pulumi-lang-java=\"`backup`\"\u003e`backup`\u003c/span\u003e (VM backups), \u003cspan pulumi-lang-nodejs=\"`images`\" pulumi-lang-dotnet=\"`Images`\" pulumi-lang-go=\"`images`\" pulumi-lang-python=\"`images`\" pulumi-lang-yaml=\"`images`\" pulumi-lang-java=\"`images`\"\u003e`images`\u003c/span\u003e (VM disk images), \u003cspan pulumi-lang-nodejs=\"`import`\" pulumi-lang-dotnet=\"`Import`\" pulumi-lang-go=\"`import`\" pulumi-lang-python=\"`import`\" pulumi-lang-yaml=\"`import`\" pulumi-lang-java=\"`import`\"\u003e`import`\u003c/span\u003e (VM disk images for import), \u003cspan pulumi-lang-nodejs=\"`iso`\" pulumi-lang-dotnet=\"`Iso`\" pulumi-lang-go=\"`iso`\" pulumi-lang-python=\"`iso`\" pulumi-lang-yaml=\"`iso`\" pulumi-lang-java=\"`iso`\"\u003e`iso`\u003c/span\u003e (ISO images), \u003cspan pulumi-lang-nodejs=\"`rootdir`\" pulumi-lang-dotnet=\"`Rootdir`\" pulumi-lang-go=\"`rootdir`\" pulumi-lang-python=\"`rootdir`\" pulumi-lang-yaml=\"`rootdir`\" pulumi-lang-java=\"`rootdir`\"\u003e`rootdir`\u003c/span\u003e (container root directories), \u003cspan pulumi-lang-nodejs=\"`snippets`\" pulumi-lang-dotnet=\"`Snippets`\" pulumi-lang-go=\"`snippets`\" pulumi-lang-python=\"`snippets`\" pulumi-lang-yaml=\"`snippets`\" pulumi-lang-java=\"`snippets`\"\u003e`snippets`\u003c/span\u003e (cloud-init, hook scripts, etc.), \u003cspan pulumi-lang-nodejs=\"`vztmpl`\" pulumi-lang-dotnet=\"`Vztmpl`\" pulumi-lang-go=\"`vztmpl`\" pulumi-lang-python=\"`vztmpl`\" pulumi-lang-yaml=\"`vztmpl`\" pulumi-lang-java=\"`vztmpl`\"\u003e`vztmpl`\u003c/span\u003e (container templates).\n"},"disable":{"type":"boolean","description":"Whether the storage is disabled.\n"},"lvmId":{"type":"string","description":"The unique identifier of the storage.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"A list of nodes where this storage is available.\n"},"shared":{"type":"boolean","description":"Whether the storage is shared across all nodes.\n"},"volumeGroup":{"type":"string","description":"The name of the volume group to use.\n"},"wipeRemovedVolumes":{"type":"boolean","description":"Whether to zero-out data when removing LVMs.\n"}},"requiredInputs":["lvmId","volumeGroup"],"stateInputs":{"description":"Input properties used for looking up and filtering LVM resources.\n","properties":{"contents":{"type":"array","items":{"type":"string"},"description":"The content types that can be stored on this storage. Valid values: \u003cspan pulumi-lang-nodejs=\"`backup`\" pulumi-lang-dotnet=\"`Backup`\" pulumi-lang-go=\"`backup`\" pulumi-lang-python=\"`backup`\" pulumi-lang-yaml=\"`backup`\" pulumi-lang-java=\"`backup`\"\u003e`backup`\u003c/span\u003e (VM backups), \u003cspan pulumi-lang-nodejs=\"`images`\" pulumi-lang-dotnet=\"`Images`\" pulumi-lang-go=\"`images`\" pulumi-lang-python=\"`images`\" pulumi-lang-yaml=\"`images`\" pulumi-lang-java=\"`images`\"\u003e`images`\u003c/span\u003e (VM disk images), \u003cspan pulumi-lang-nodejs=\"`import`\" pulumi-lang-dotnet=\"`Import`\" pulumi-lang-go=\"`import`\" pulumi-lang-python=\"`import`\" pulumi-lang-yaml=\"`import`\" pulumi-lang-java=\"`import`\"\u003e`import`\u003c/span\u003e (VM disk images for import), \u003cspan pulumi-lang-nodejs=\"`iso`\" pulumi-lang-dotnet=\"`Iso`\" pulumi-lang-go=\"`iso`\" pulumi-lang-python=\"`iso`\" pulumi-lang-yaml=\"`iso`\" pulumi-lang-java=\"`iso`\"\u003e`iso`\u003c/span\u003e (ISO images), \u003cspan pulumi-lang-nodejs=\"`rootdir`\" pulumi-lang-dotnet=\"`Rootdir`\" pulumi-lang-go=\"`rootdir`\" pulumi-lang-python=\"`rootdir`\" pulumi-lang-yaml=\"`rootdir`\" pulumi-lang-java=\"`rootdir`\"\u003e`rootdir`\u003c/span\u003e (container root directories), \u003cspan pulumi-lang-nodejs=\"`snippets`\" pulumi-lang-dotnet=\"`Snippets`\" pulumi-lang-go=\"`snippets`\" pulumi-lang-python=\"`snippets`\" pulumi-lang-yaml=\"`snippets`\" pulumi-lang-java=\"`snippets`\"\u003e`snippets`\u003c/span\u003e (cloud-init, hook scripts, etc.), \u003cspan pulumi-lang-nodejs=\"`vztmpl`\" pulumi-lang-dotnet=\"`Vztmpl`\" pulumi-lang-go=\"`vztmpl`\" pulumi-lang-python=\"`vztmpl`\" pulumi-lang-yaml=\"`vztmpl`\" pulumi-lang-java=\"`vztmpl`\"\u003e`vztmpl`\u003c/span\u003e (container templates).\n"},"disable":{"type":"boolean","description":"Whether the storage is disabled.\n"},"lvmId":{"type":"string","description":"The unique identifier of the storage.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"A list of nodes where this storage is available.\n"},"shared":{"type":"boolean","description":"Whether the storage is shared across all nodes.\n"},"volumeGroup":{"type":"string","description":"The name of the volume group to use.\n"},"wipeRemovedVolumes":{"type":"boolean","description":"Whether to zero-out data when removing LVMs.\n"}},"type":"object"}},"proxmoxve:Storage/lVMThin:LVMThin":{"description":"Manages thin LVM-based storage in Proxmox VE.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.storage.LVMThin(\"example\", {\n    lvmThinId: \"example-lvmthin\",\n    nodes: [\"pve\"],\n    volumeGroup: \"vg0\",\n    thinPool: \"data\",\n    contents: [\"images\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.storage.LVMThin(\"example\",\n    lvm_thin_id=\"example-lvmthin\",\n    nodes=[\"pve\"],\n    volume_group=\"vg0\",\n    thin_pool=\"data\",\n    contents=[\"images\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ProxmoxVE.Storage.LVMThin(\"example\", new()\n    {\n        LvmThinId = \"example-lvmthin\",\n        Nodes = new[]\n        {\n            \"pve\",\n        },\n        VolumeGroup = \"vg0\",\n        ThinPool = \"data\",\n        Contents = new[]\n        {\n            \"images\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := storage.NewLVMThin(ctx, \"example\", \u0026storage.LVMThinArgs{\n\t\t\tLvmThinId: pulumi.String(\"example-lvmthin\"),\n\t\t\tNodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"pve\"),\n\t\t\t},\n\t\t\tVolumeGroup: pulumi.String(\"vg0\"),\n\t\t\tThinPool:    pulumi.String(\"data\"),\n\t\t\tContents: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"images\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Storage.LVMThin;\nimport io.muehlbachler.pulumi.proxmoxve.Storage.LVMThinArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new LVMThin(\"example\", LVMThinArgs.builder()\n            .lvmThinId(\"example-lvmthin\")\n            .nodes(\"pve\")\n            .volumeGroup(\"vg0\")\n            .thinPool(\"data\")\n            .contents(\"images\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:Storage:LVMThin\n    properties:\n      lvmThinId: example-lvmthin\n      nodes:\n        - pve\n      volumeGroup: vg0\n      thinPool: data\n      contents:\n        - images\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"contents":{"type":"array","items":{"type":"string"},"description":"The content types that can be stored on this storage. Valid values: \u003cspan pulumi-lang-nodejs=\"`backup`\" pulumi-lang-dotnet=\"`Backup`\" pulumi-lang-go=\"`backup`\" pulumi-lang-python=\"`backup`\" pulumi-lang-yaml=\"`backup`\" pulumi-lang-java=\"`backup`\"\u003e`backup`\u003c/span\u003e (VM backups), \u003cspan pulumi-lang-nodejs=\"`images`\" pulumi-lang-dotnet=\"`Images`\" pulumi-lang-go=\"`images`\" pulumi-lang-python=\"`images`\" pulumi-lang-yaml=\"`images`\" pulumi-lang-java=\"`images`\"\u003e`images`\u003c/span\u003e (VM disk images), \u003cspan pulumi-lang-nodejs=\"`import`\" pulumi-lang-dotnet=\"`Import`\" pulumi-lang-go=\"`import`\" pulumi-lang-python=\"`import`\" pulumi-lang-yaml=\"`import`\" pulumi-lang-java=\"`import`\"\u003e`import`\u003c/span\u003e (VM disk images for import), \u003cspan pulumi-lang-nodejs=\"`iso`\" pulumi-lang-dotnet=\"`Iso`\" pulumi-lang-go=\"`iso`\" pulumi-lang-python=\"`iso`\" pulumi-lang-yaml=\"`iso`\" pulumi-lang-java=\"`iso`\"\u003e`iso`\u003c/span\u003e (ISO images), \u003cspan pulumi-lang-nodejs=\"`rootdir`\" pulumi-lang-dotnet=\"`Rootdir`\" pulumi-lang-go=\"`rootdir`\" pulumi-lang-python=\"`rootdir`\" pulumi-lang-yaml=\"`rootdir`\" pulumi-lang-java=\"`rootdir`\"\u003e`rootdir`\u003c/span\u003e (container root directories), \u003cspan pulumi-lang-nodejs=\"`snippets`\" pulumi-lang-dotnet=\"`Snippets`\" pulumi-lang-go=\"`snippets`\" pulumi-lang-python=\"`snippets`\" pulumi-lang-yaml=\"`snippets`\" pulumi-lang-java=\"`snippets`\"\u003e`snippets`\u003c/span\u003e (cloud-init, hook scripts, etc.), \u003cspan pulumi-lang-nodejs=\"`vztmpl`\" pulumi-lang-dotnet=\"`Vztmpl`\" pulumi-lang-go=\"`vztmpl`\" pulumi-lang-python=\"`vztmpl`\" pulumi-lang-yaml=\"`vztmpl`\" pulumi-lang-java=\"`vztmpl`\"\u003e`vztmpl`\u003c/span\u003e (container templates).\n"},"disable":{"type":"boolean","description":"Whether the storage is disabled.\n"},"lvmThinId":{"type":"string","description":"The unique identifier of the storage.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"A list of nodes where this storage is available.\n"},"shared":{"type":"boolean","description":"Whether the storage is shared across all nodes.\n"},"thinPool":{"type":"string","description":"The name of the LVM thin pool to use.\n"},"volumeGroup":{"type":"string","description":"The name of the volume group to use.\n"}},"required":["contents","disable","lvmThinId","nodes","shared","thinPool","volumeGroup"],"inputProperties":{"contents":{"type":"array","items":{"type":"string"},"description":"The content types that can be stored on this storage. Valid values: \u003cspan pulumi-lang-nodejs=\"`backup`\" pulumi-lang-dotnet=\"`Backup`\" pulumi-lang-go=\"`backup`\" pulumi-lang-python=\"`backup`\" pulumi-lang-yaml=\"`backup`\" pulumi-lang-java=\"`backup`\"\u003e`backup`\u003c/span\u003e (VM backups), \u003cspan pulumi-lang-nodejs=\"`images`\" pulumi-lang-dotnet=\"`Images`\" pulumi-lang-go=\"`images`\" pulumi-lang-python=\"`images`\" pulumi-lang-yaml=\"`images`\" pulumi-lang-java=\"`images`\"\u003e`images`\u003c/span\u003e (VM disk images), \u003cspan pulumi-lang-nodejs=\"`import`\" pulumi-lang-dotnet=\"`Import`\" pulumi-lang-go=\"`import`\" pulumi-lang-python=\"`import`\" pulumi-lang-yaml=\"`import`\" pulumi-lang-java=\"`import`\"\u003e`import`\u003c/span\u003e (VM disk images for import), \u003cspan pulumi-lang-nodejs=\"`iso`\" pulumi-lang-dotnet=\"`Iso`\" pulumi-lang-go=\"`iso`\" pulumi-lang-python=\"`iso`\" pulumi-lang-yaml=\"`iso`\" pulumi-lang-java=\"`iso`\"\u003e`iso`\u003c/span\u003e (ISO images), \u003cspan pulumi-lang-nodejs=\"`rootdir`\" pulumi-lang-dotnet=\"`Rootdir`\" pulumi-lang-go=\"`rootdir`\" pulumi-lang-python=\"`rootdir`\" pulumi-lang-yaml=\"`rootdir`\" pulumi-lang-java=\"`rootdir`\"\u003e`rootdir`\u003c/span\u003e (container root directories), \u003cspan pulumi-lang-nodejs=\"`snippets`\" pulumi-lang-dotnet=\"`Snippets`\" pulumi-lang-go=\"`snippets`\" pulumi-lang-python=\"`snippets`\" pulumi-lang-yaml=\"`snippets`\" pulumi-lang-java=\"`snippets`\"\u003e`snippets`\u003c/span\u003e (cloud-init, hook scripts, etc.), \u003cspan pulumi-lang-nodejs=\"`vztmpl`\" pulumi-lang-dotnet=\"`Vztmpl`\" pulumi-lang-go=\"`vztmpl`\" pulumi-lang-python=\"`vztmpl`\" pulumi-lang-yaml=\"`vztmpl`\" pulumi-lang-java=\"`vztmpl`\"\u003e`vztmpl`\u003c/span\u003e (container templates).\n"},"disable":{"type":"boolean","description":"Whether the storage is disabled.\n"},"lvmThinId":{"type":"string","description":"The unique identifier of the storage.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"A list of nodes where this storage is available.\n"},"thinPool":{"type":"string","description":"The name of the LVM thin pool to use.\n"},"volumeGroup":{"type":"string","description":"The name of the volume group to use.\n"}},"requiredInputs":["lvmThinId","thinPool","volumeGroup"],"stateInputs":{"description":"Input properties used for looking up and filtering LVMThin resources.\n","properties":{"contents":{"type":"array","items":{"type":"string"},"description":"The content types that can be stored on this storage. Valid values: \u003cspan pulumi-lang-nodejs=\"`backup`\" pulumi-lang-dotnet=\"`Backup`\" pulumi-lang-go=\"`backup`\" pulumi-lang-python=\"`backup`\" pulumi-lang-yaml=\"`backup`\" pulumi-lang-java=\"`backup`\"\u003e`backup`\u003c/span\u003e (VM backups), \u003cspan pulumi-lang-nodejs=\"`images`\" pulumi-lang-dotnet=\"`Images`\" pulumi-lang-go=\"`images`\" pulumi-lang-python=\"`images`\" pulumi-lang-yaml=\"`images`\" pulumi-lang-java=\"`images`\"\u003e`images`\u003c/span\u003e (VM disk images), \u003cspan pulumi-lang-nodejs=\"`import`\" pulumi-lang-dotnet=\"`Import`\" pulumi-lang-go=\"`import`\" pulumi-lang-python=\"`import`\" pulumi-lang-yaml=\"`import`\" pulumi-lang-java=\"`import`\"\u003e`import`\u003c/span\u003e (VM disk images for import), \u003cspan pulumi-lang-nodejs=\"`iso`\" pulumi-lang-dotnet=\"`Iso`\" pulumi-lang-go=\"`iso`\" pulumi-lang-python=\"`iso`\" pulumi-lang-yaml=\"`iso`\" pulumi-lang-java=\"`iso`\"\u003e`iso`\u003c/span\u003e (ISO images), \u003cspan pulumi-lang-nodejs=\"`rootdir`\" pulumi-lang-dotnet=\"`Rootdir`\" pulumi-lang-go=\"`rootdir`\" pulumi-lang-python=\"`rootdir`\" pulumi-lang-yaml=\"`rootdir`\" pulumi-lang-java=\"`rootdir`\"\u003e`rootdir`\u003c/span\u003e (container root directories), \u003cspan pulumi-lang-nodejs=\"`snippets`\" pulumi-lang-dotnet=\"`Snippets`\" pulumi-lang-go=\"`snippets`\" pulumi-lang-python=\"`snippets`\" pulumi-lang-yaml=\"`snippets`\" pulumi-lang-java=\"`snippets`\"\u003e`snippets`\u003c/span\u003e (cloud-init, hook scripts, etc.), \u003cspan pulumi-lang-nodejs=\"`vztmpl`\" pulumi-lang-dotnet=\"`Vztmpl`\" pulumi-lang-go=\"`vztmpl`\" pulumi-lang-python=\"`vztmpl`\" pulumi-lang-yaml=\"`vztmpl`\" pulumi-lang-java=\"`vztmpl`\"\u003e`vztmpl`\u003c/span\u003e (container templates).\n"},"disable":{"type":"boolean","description":"Whether the storage is disabled.\n"},"lvmThinId":{"type":"string","description":"The unique identifier of the storage.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"A list of nodes where this storage is available.\n"},"shared":{"type":"boolean","description":"Whether the storage is shared across all nodes.\n"},"thinPool":{"type":"string","description":"The name of the LVM thin pool to use.\n"},"volumeGroup":{"type":"string","description":"The name of the volume group to use.\n"}},"type":"object"}},"proxmoxve:Storage/nFS:NFS":{"description":"Manages an NFS-based storage in Proxmox VE.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.storage.NFS(\"example\", {\n    nfsId: \"example-nfs\",\n    nodes: [\"pve\"],\n    server: \"10.0.0.10\",\n    \"export\": \"/exports/proxmox\",\n    contents: [\n        \"images\",\n        \"iso\",\n        \"backup\",\n    ],\n    options: \"vers=4.2\",\n    preallocation: \"metadata\",\n    snapshotAsVolumeChain: true,\n    backups: {\n        maxProtectedBackups: 5,\n        keepDaily: 7,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.storage.NFS(\"example\",\n    nfs_id=\"example-nfs\",\n    nodes=[\"pve\"],\n    server=\"10.0.0.10\",\n    export=\"/exports/proxmox\",\n    contents=[\n        \"images\",\n        \"iso\",\n        \"backup\",\n    ],\n    options=\"vers=4.2\",\n    preallocation=\"metadata\",\n    snapshot_as_volume_chain=True,\n    backups={\n        \"max_protected_backups\": 5,\n        \"keep_daily\": 7,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ProxmoxVE.Storage.NFS(\"example\", new()\n    {\n        NfsId = \"example-nfs\",\n        Nodes = new[]\n        {\n            \"pve\",\n        },\n        Server = \"10.0.0.10\",\n        Export = \"/exports/proxmox\",\n        Contents = new[]\n        {\n            \"images\",\n            \"iso\",\n            \"backup\",\n        },\n        Options = \"vers=4.2\",\n        Preallocation = \"metadata\",\n        SnapshotAsVolumeChain = true,\n        Backups = new ProxmoxVE.Storage.Inputs.NFSBackupsArgs\n        {\n            MaxProtectedBackups = 5,\n            KeepDaily = 7,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := storage.NewNFS(ctx, \"example\", \u0026storage.NFSArgs{\n\t\t\tNfsId: pulumi.String(\"example-nfs\"),\n\t\t\tNodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"pve\"),\n\t\t\t},\n\t\t\tServer: pulumi.String(\"10.0.0.10\"),\n\t\t\tExport: pulumi.String(\"/exports/proxmox\"),\n\t\t\tContents: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"images\"),\n\t\t\t\tpulumi.String(\"iso\"),\n\t\t\t\tpulumi.String(\"backup\"),\n\t\t\t},\n\t\t\tOptions:               pulumi.String(\"vers=4.2\"),\n\t\t\tPreallocation:         pulumi.String(\"metadata\"),\n\t\t\tSnapshotAsVolumeChain: pulumi.Bool(true),\n\t\t\tBackups: \u0026storage.NFSBackupsArgs{\n\t\t\t\tMaxProtectedBackups: pulumi.Int(5),\n\t\t\t\tKeepDaily:           pulumi.Int(7),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Storage.NFS;\nimport io.muehlbachler.pulumi.proxmoxve.Storage.NFSArgs;\nimport com.pulumi.proxmoxve.Storage.inputs.NFSBackupsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new NFS(\"example\", NFSArgs.builder()\n            .nfsId(\"example-nfs\")\n            .nodes(\"pve\")\n            .server(\"10.0.0.10\")\n            .export(\"/exports/proxmox\")\n            .contents(            \n                \"images\",\n                \"iso\",\n                \"backup\")\n            .options(\"vers=4.2\")\n            .preallocation(\"metadata\")\n            .snapshotAsVolumeChain(true)\n            .backups(NFSBackupsArgs.builder()\n                .maxProtectedBackups(5)\n                .keepDaily(7)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:Storage:NFS\n    properties:\n      nfsId: example-nfs\n      nodes:\n        - pve\n      server: 10.0.0.10\n      export: /exports/proxmox\n      contents:\n        - images\n        - iso\n        - backup\n      options: vers=4.2\n      preallocation: metadata\n      snapshotAsVolumeChain: true\n      backups:\n        maxProtectedBackups: 5\n        keepDaily: 7\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"backups":{"$ref":"#/types/proxmoxve:Storage/NFSBackups:NFSBackups","description":"Configure backup retention settings for the storage type.\n"},"contents":{"type":"array","items":{"type":"string"},"description":"The content types that can be stored on this storage. Valid values: \u003cspan pulumi-lang-nodejs=\"`backup`\" pulumi-lang-dotnet=\"`Backup`\" pulumi-lang-go=\"`backup`\" pulumi-lang-python=\"`backup`\" pulumi-lang-yaml=\"`backup`\" pulumi-lang-java=\"`backup`\"\u003e`backup`\u003c/span\u003e (VM backups), \u003cspan pulumi-lang-nodejs=\"`images`\" pulumi-lang-dotnet=\"`Images`\" pulumi-lang-go=\"`images`\" pulumi-lang-python=\"`images`\" pulumi-lang-yaml=\"`images`\" pulumi-lang-java=\"`images`\"\u003e`images`\u003c/span\u003e (VM disk images), \u003cspan pulumi-lang-nodejs=\"`import`\" pulumi-lang-dotnet=\"`Import`\" pulumi-lang-go=\"`import`\" pulumi-lang-python=\"`import`\" pulumi-lang-yaml=\"`import`\" pulumi-lang-java=\"`import`\"\u003e`import`\u003c/span\u003e (VM disk images for import), \u003cspan pulumi-lang-nodejs=\"`iso`\" pulumi-lang-dotnet=\"`Iso`\" pulumi-lang-go=\"`iso`\" pulumi-lang-python=\"`iso`\" pulumi-lang-yaml=\"`iso`\" pulumi-lang-java=\"`iso`\"\u003e`iso`\u003c/span\u003e (ISO images), \u003cspan pulumi-lang-nodejs=\"`rootdir`\" pulumi-lang-dotnet=\"`Rootdir`\" pulumi-lang-go=\"`rootdir`\" pulumi-lang-python=\"`rootdir`\" pulumi-lang-yaml=\"`rootdir`\" pulumi-lang-java=\"`rootdir`\"\u003e`rootdir`\u003c/span\u003e (container root directories), \u003cspan pulumi-lang-nodejs=\"`snippets`\" pulumi-lang-dotnet=\"`Snippets`\" pulumi-lang-go=\"`snippets`\" pulumi-lang-python=\"`snippets`\" pulumi-lang-yaml=\"`snippets`\" pulumi-lang-java=\"`snippets`\"\u003e`snippets`\u003c/span\u003e (cloud-init, hook scripts, etc.), \u003cspan pulumi-lang-nodejs=\"`vztmpl`\" pulumi-lang-dotnet=\"`Vztmpl`\" pulumi-lang-go=\"`vztmpl`\" pulumi-lang-python=\"`vztmpl`\" pulumi-lang-yaml=\"`vztmpl`\" pulumi-lang-java=\"`vztmpl`\"\u003e`vztmpl`\u003c/span\u003e (container templates).\n"},"disable":{"type":"boolean","description":"Whether the storage is disabled.\n"},"export":{"type":"string","description":"The path of the NFS export.\n"},"nfsId":{"type":"string","description":"The unique identifier of the storage.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"A list of nodes where this storage is available.\n"},"options":{"type":"string","description":"The options to pass to the NFS service.\n"},"preallocation":{"type":"string","description":"The preallocation mode for raw and qcow2 images.\n"},"server":{"type":"string","description":"The IP address or DNS name of the NFS server.\n"},"shared":{"type":"boolean","description":"Whether the storage is shared across all nodes.\n"},"snapshotAsVolumeChain":{"type":"boolean","description":"Enable support for creating snapshots through volume backing-chains.\n"}},"required":["contents","disable","export","nfsId","nodes","server","shared"],"inputProperties":{"backups":{"$ref":"#/types/proxmoxve:Storage/NFSBackups:NFSBackups","description":"Configure backup retention settings for the storage type.\n"},"contents":{"type":"array","items":{"type":"string"},"description":"The content types that can be stored on this storage. Valid values: \u003cspan pulumi-lang-nodejs=\"`backup`\" pulumi-lang-dotnet=\"`Backup`\" pulumi-lang-go=\"`backup`\" pulumi-lang-python=\"`backup`\" pulumi-lang-yaml=\"`backup`\" pulumi-lang-java=\"`backup`\"\u003e`backup`\u003c/span\u003e (VM backups), \u003cspan pulumi-lang-nodejs=\"`images`\" pulumi-lang-dotnet=\"`Images`\" pulumi-lang-go=\"`images`\" pulumi-lang-python=\"`images`\" pulumi-lang-yaml=\"`images`\" pulumi-lang-java=\"`images`\"\u003e`images`\u003c/span\u003e (VM disk images), \u003cspan pulumi-lang-nodejs=\"`import`\" pulumi-lang-dotnet=\"`Import`\" pulumi-lang-go=\"`import`\" pulumi-lang-python=\"`import`\" pulumi-lang-yaml=\"`import`\" pulumi-lang-java=\"`import`\"\u003e`import`\u003c/span\u003e (VM disk images for import), \u003cspan pulumi-lang-nodejs=\"`iso`\" pulumi-lang-dotnet=\"`Iso`\" pulumi-lang-go=\"`iso`\" pulumi-lang-python=\"`iso`\" pulumi-lang-yaml=\"`iso`\" pulumi-lang-java=\"`iso`\"\u003e`iso`\u003c/span\u003e (ISO images), \u003cspan pulumi-lang-nodejs=\"`rootdir`\" pulumi-lang-dotnet=\"`Rootdir`\" pulumi-lang-go=\"`rootdir`\" pulumi-lang-python=\"`rootdir`\" pulumi-lang-yaml=\"`rootdir`\" pulumi-lang-java=\"`rootdir`\"\u003e`rootdir`\u003c/span\u003e (container root directories), \u003cspan pulumi-lang-nodejs=\"`snippets`\" pulumi-lang-dotnet=\"`Snippets`\" pulumi-lang-go=\"`snippets`\" pulumi-lang-python=\"`snippets`\" pulumi-lang-yaml=\"`snippets`\" pulumi-lang-java=\"`snippets`\"\u003e`snippets`\u003c/span\u003e (cloud-init, hook scripts, etc.), \u003cspan pulumi-lang-nodejs=\"`vztmpl`\" pulumi-lang-dotnet=\"`Vztmpl`\" pulumi-lang-go=\"`vztmpl`\" pulumi-lang-python=\"`vztmpl`\" pulumi-lang-yaml=\"`vztmpl`\" pulumi-lang-java=\"`vztmpl`\"\u003e`vztmpl`\u003c/span\u003e (container templates).\n"},"disable":{"type":"boolean","description":"Whether the storage is disabled.\n"},"export":{"type":"string","description":"The path of the NFS export.\n"},"nfsId":{"type":"string","description":"The unique identifier of the storage.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"A list of nodes where this storage is available.\n"},"options":{"type":"string","description":"The options to pass to the NFS service.\n"},"preallocation":{"type":"string","description":"The preallocation mode for raw and qcow2 images.\n"},"server":{"type":"string","description":"The IP address or DNS name of the NFS server.\n"},"snapshotAsVolumeChain":{"type":"boolean","description":"Enable support for creating snapshots through volume backing-chains.\n"}},"requiredInputs":["export","nfsId","server"],"stateInputs":{"description":"Input properties used for looking up and filtering NFS resources.\n","properties":{"backups":{"$ref":"#/types/proxmoxve:Storage/NFSBackups:NFSBackups","description":"Configure backup retention settings for the storage type.\n"},"contents":{"type":"array","items":{"type":"string"},"description":"The content types that can be stored on this storage. Valid values: \u003cspan pulumi-lang-nodejs=\"`backup`\" pulumi-lang-dotnet=\"`Backup`\" pulumi-lang-go=\"`backup`\" pulumi-lang-python=\"`backup`\" pulumi-lang-yaml=\"`backup`\" pulumi-lang-java=\"`backup`\"\u003e`backup`\u003c/span\u003e (VM backups), \u003cspan pulumi-lang-nodejs=\"`images`\" pulumi-lang-dotnet=\"`Images`\" pulumi-lang-go=\"`images`\" pulumi-lang-python=\"`images`\" pulumi-lang-yaml=\"`images`\" pulumi-lang-java=\"`images`\"\u003e`images`\u003c/span\u003e (VM disk images), \u003cspan pulumi-lang-nodejs=\"`import`\" pulumi-lang-dotnet=\"`Import`\" pulumi-lang-go=\"`import`\" pulumi-lang-python=\"`import`\" pulumi-lang-yaml=\"`import`\" pulumi-lang-java=\"`import`\"\u003e`import`\u003c/span\u003e (VM disk images for import), \u003cspan pulumi-lang-nodejs=\"`iso`\" pulumi-lang-dotnet=\"`Iso`\" pulumi-lang-go=\"`iso`\" pulumi-lang-python=\"`iso`\" pulumi-lang-yaml=\"`iso`\" pulumi-lang-java=\"`iso`\"\u003e`iso`\u003c/span\u003e (ISO images), \u003cspan pulumi-lang-nodejs=\"`rootdir`\" pulumi-lang-dotnet=\"`Rootdir`\" pulumi-lang-go=\"`rootdir`\" pulumi-lang-python=\"`rootdir`\" pulumi-lang-yaml=\"`rootdir`\" pulumi-lang-java=\"`rootdir`\"\u003e`rootdir`\u003c/span\u003e (container root directories), \u003cspan pulumi-lang-nodejs=\"`snippets`\" pulumi-lang-dotnet=\"`Snippets`\" pulumi-lang-go=\"`snippets`\" pulumi-lang-python=\"`snippets`\" pulumi-lang-yaml=\"`snippets`\" pulumi-lang-java=\"`snippets`\"\u003e`snippets`\u003c/span\u003e (cloud-init, hook scripts, etc.), \u003cspan pulumi-lang-nodejs=\"`vztmpl`\" pulumi-lang-dotnet=\"`Vztmpl`\" pulumi-lang-go=\"`vztmpl`\" pulumi-lang-python=\"`vztmpl`\" pulumi-lang-yaml=\"`vztmpl`\" pulumi-lang-java=\"`vztmpl`\"\u003e`vztmpl`\u003c/span\u003e (container templates).\n"},"disable":{"type":"boolean","description":"Whether the storage is disabled.\n"},"export":{"type":"string","description":"The path of the NFS export.\n"},"nfsId":{"type":"string","description":"The unique identifier of the storage.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"A list of nodes where this storage is available.\n"},"options":{"type":"string","description":"The options to pass to the NFS service.\n"},"preallocation":{"type":"string","description":"The preallocation mode for raw and qcow2 images.\n"},"server":{"type":"string","description":"The IP address or DNS name of the NFS server.\n"},"shared":{"type":"boolean","description":"Whether the storage is shared across all nodes.\n"},"snapshotAsVolumeChain":{"type":"boolean","description":"Enable support for creating snapshots through volume backing-chains.\n"}},"type":"object"}},"proxmoxve:Storage/pBS:PBS":{"description":"Manages a Proxmox Backup Server (PBS) storage in Proxmox VE.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.storage.PBS(\"example\", {\n    pbsId: \"example-pbs\",\n    nodes: [\"pve\"],\n    server: \"pbs.example.local\",\n    datastore: \"backup\",\n    username: \"pbs-user\",\n    password: \"pbs-password\",\n    fingerprint: \"AA:BB:CC:DD:EE:FF\",\n    contents: [\"backup\"],\n    generateEncryptionKey: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.storage.PBS(\"example\",\n    pbs_id=\"example-pbs\",\n    nodes=[\"pve\"],\n    server=\"pbs.example.local\",\n    datastore=\"backup\",\n    username=\"pbs-user\",\n    password=\"pbs-password\",\n    fingerprint=\"AA:BB:CC:DD:EE:FF\",\n    contents=[\"backup\"],\n    generate_encryption_key=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ProxmoxVE.Storage.PBS(\"example\", new()\n    {\n        PbsId = \"example-pbs\",\n        Nodes = new[]\n        {\n            \"pve\",\n        },\n        Server = \"pbs.example.local\",\n        Datastore = \"backup\",\n        Username = \"pbs-user\",\n        Password = \"pbs-password\",\n        Fingerprint = \"AA:BB:CC:DD:EE:FF\",\n        Contents = new[]\n        {\n            \"backup\",\n        },\n        GenerateEncryptionKey = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := storage.NewPBS(ctx, \"example\", \u0026storage.PBSArgs{\n\t\t\tPbsId: pulumi.String(\"example-pbs\"),\n\t\t\tNodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"pve\"),\n\t\t\t},\n\t\t\tServer:      pulumi.String(\"pbs.example.local\"),\n\t\t\tDatastore:   pulumi.String(\"backup\"),\n\t\t\tUsername:    pulumi.String(\"pbs-user\"),\n\t\t\tPassword:    pulumi.String(\"pbs-password\"),\n\t\t\tFingerprint: pulumi.String(\"AA:BB:CC:DD:EE:FF\"),\n\t\t\tContents: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"backup\"),\n\t\t\t},\n\t\t\tGenerateEncryptionKey: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Storage.PBS;\nimport io.muehlbachler.pulumi.proxmoxve.Storage.PBSArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new PBS(\"example\", PBSArgs.builder()\n            .pbsId(\"example-pbs\")\n            .nodes(\"pve\")\n            .server(\"pbs.example.local\")\n            .datastore(\"backup\")\n            .username(\"pbs-user\")\n            .password(\"pbs-password\")\n            .fingerprint(\"AA:BB:CC:DD:EE:FF\")\n            .contents(\"backup\")\n            .generateEncryptionKey(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:Storage:PBS\n    properties:\n      pbsId: example-pbs\n      nodes:\n        - pve\n      server: pbs.example.local\n      datastore: backup\n      username: pbs-user\n      password: pbs-password\n      fingerprint: AA:BB:CC:DD:EE:FF\n      contents:\n        - backup\n      generateEncryptionKey: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"backups":{"$ref":"#/types/proxmoxve:Storage/PBSBackups:PBSBackups","description":"Configure backup retention settings for the storage type.\n"},"contents":{"type":"array","items":{"type":"string"},"description":"The content types that can be stored on this storage. Valid values: \u003cspan pulumi-lang-nodejs=\"`backup`\" pulumi-lang-dotnet=\"`Backup`\" pulumi-lang-go=\"`backup`\" pulumi-lang-python=\"`backup`\" pulumi-lang-yaml=\"`backup`\" pulumi-lang-java=\"`backup`\"\u003e`backup`\u003c/span\u003e (VM backups), \u003cspan pulumi-lang-nodejs=\"`images`\" pulumi-lang-dotnet=\"`Images`\" pulumi-lang-go=\"`images`\" pulumi-lang-python=\"`images`\" pulumi-lang-yaml=\"`images`\" pulumi-lang-java=\"`images`\"\u003e`images`\u003c/span\u003e (VM disk images), \u003cspan pulumi-lang-nodejs=\"`import`\" pulumi-lang-dotnet=\"`Import`\" pulumi-lang-go=\"`import`\" pulumi-lang-python=\"`import`\" pulumi-lang-yaml=\"`import`\" pulumi-lang-java=\"`import`\"\u003e`import`\u003c/span\u003e (VM disk images for import), \u003cspan pulumi-lang-nodejs=\"`iso`\" pulumi-lang-dotnet=\"`Iso`\" pulumi-lang-go=\"`iso`\" pulumi-lang-python=\"`iso`\" pulumi-lang-yaml=\"`iso`\" pulumi-lang-java=\"`iso`\"\u003e`iso`\u003c/span\u003e (ISO images), \u003cspan pulumi-lang-nodejs=\"`rootdir`\" pulumi-lang-dotnet=\"`Rootdir`\" pulumi-lang-go=\"`rootdir`\" pulumi-lang-python=\"`rootdir`\" pulumi-lang-yaml=\"`rootdir`\" pulumi-lang-java=\"`rootdir`\"\u003e`rootdir`\u003c/span\u003e (container root directories), \u003cspan pulumi-lang-nodejs=\"`snippets`\" pulumi-lang-dotnet=\"`Snippets`\" pulumi-lang-go=\"`snippets`\" pulumi-lang-python=\"`snippets`\" pulumi-lang-yaml=\"`snippets`\" pulumi-lang-java=\"`snippets`\"\u003e`snippets`\u003c/span\u003e (cloud-init, hook scripts, etc.), \u003cspan pulumi-lang-nodejs=\"`vztmpl`\" pulumi-lang-dotnet=\"`Vztmpl`\" pulumi-lang-go=\"`vztmpl`\" pulumi-lang-python=\"`vztmpl`\" pulumi-lang-yaml=\"`vztmpl`\" pulumi-lang-java=\"`vztmpl`\"\u003e`vztmpl`\u003c/span\u003e (container templates).\n"},"datastore":{"type":"string","description":"The name of the datastore on the Proxmox Backup Server.\n"},"disable":{"type":"boolean","description":"Whether the storage is disabled.\n"},"encryptionKey":{"type":"string","description":"An existing encryption key for the datastore. This is a sensitive value. Conflicts with \u003cspan pulumi-lang-nodejs=\"`generateEncryptionKey`\" pulumi-lang-dotnet=\"`GenerateEncryptionKey`\" pulumi-lang-go=\"`generateEncryptionKey`\" pulumi-lang-python=\"`generate_encryption_key`\" pulumi-lang-yaml=\"`generateEncryptionKey`\" pulumi-lang-java=\"`generateEncryptionKey`\"\u003e`generate_encryption_key`\u003c/span\u003e.\n","secret":true},"encryptionKeyFingerprint":{"type":"string","description":"The SHA256 fingerprint of the encryption key currently in use.\n"},"fingerprint":{"type":"string","description":"The SHA256 fingerprint of the Proxmox Backup Server's certificate.\n"},"generateEncryptionKey":{"type":"boolean","description":"If set to true, Proxmox will generate a new encryption key. The key will be stored in the \u003cspan pulumi-lang-nodejs=\"`generatedEncryptionKey`\" pulumi-lang-dotnet=\"`GeneratedEncryptionKey`\" pulumi-lang-go=\"`generatedEncryptionKey`\" pulumi-lang-python=\"`generated_encryption_key`\" pulumi-lang-yaml=\"`generatedEncryptionKey`\" pulumi-lang-java=\"`generatedEncryptionKey`\"\u003e`generated_encryption_key`\u003c/span\u003e attribute. Conflicts with \u003cspan pulumi-lang-nodejs=\"`encryptionKey`\" pulumi-lang-dotnet=\"`EncryptionKey`\" pulumi-lang-go=\"`encryptionKey`\" pulumi-lang-python=\"`encryption_key`\" pulumi-lang-yaml=\"`encryptionKey`\" pulumi-lang-java=\"`encryptionKey`\"\u003e`encryption_key`\u003c/span\u003e.\n"},"generatedEncryptionKey":{"type":"string","description":"The encryption key returned by Proxmox when \u003cspan pulumi-lang-nodejs=\"`generateEncryptionKey`\" pulumi-lang-dotnet=\"`GenerateEncryptionKey`\" pulumi-lang-go=\"`generateEncryptionKey`\" pulumi-lang-python=\"`generate_encryption_key`\" pulumi-lang-yaml=\"`generateEncryptionKey`\" pulumi-lang-java=\"`generateEncryptionKey`\"\u003e`generate_encryption_key`\u003c/span\u003e is true.\n","secret":true},"namespace":{"type":"string","description":"The namespace to use on the Proxmox Backup Server.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"A list of nodes where this storage is available.\n"},"password":{"type":"string","description":"The password for authenticating with the Proxmox Backup Server.\n","secret":true},"pbsId":{"type":"string","description":"The unique identifier of the storage.\n"},"server":{"type":"string","description":"The IP address or DNS name of the Proxmox Backup Server.\n"},"shared":{"type":"boolean","description":"Whether the storage is shared across all nodes.\n"},"username":{"type":"string","description":"The username for authenticating with the Proxmox Backup Server.\n"}},"required":["contents","datastore","disable","encryptionKeyFingerprint","generatedEncryptionKey","pbsId","nodes","password","server","shared","username"],"inputProperties":{"backups":{"$ref":"#/types/proxmoxve:Storage/PBSBackups:PBSBackups","description":"Configure backup retention settings for the storage type.\n"},"contents":{"type":"array","items":{"type":"string"},"description":"The content types that can be stored on this storage. Valid values: \u003cspan pulumi-lang-nodejs=\"`backup`\" pulumi-lang-dotnet=\"`Backup`\" pulumi-lang-go=\"`backup`\" pulumi-lang-python=\"`backup`\" pulumi-lang-yaml=\"`backup`\" pulumi-lang-java=\"`backup`\"\u003e`backup`\u003c/span\u003e (VM backups), \u003cspan pulumi-lang-nodejs=\"`images`\" pulumi-lang-dotnet=\"`Images`\" pulumi-lang-go=\"`images`\" pulumi-lang-python=\"`images`\" pulumi-lang-yaml=\"`images`\" pulumi-lang-java=\"`images`\"\u003e`images`\u003c/span\u003e (VM disk images), \u003cspan pulumi-lang-nodejs=\"`import`\" pulumi-lang-dotnet=\"`Import`\" pulumi-lang-go=\"`import`\" pulumi-lang-python=\"`import`\" pulumi-lang-yaml=\"`import`\" pulumi-lang-java=\"`import`\"\u003e`import`\u003c/span\u003e (VM disk images for import), \u003cspan pulumi-lang-nodejs=\"`iso`\" pulumi-lang-dotnet=\"`Iso`\" pulumi-lang-go=\"`iso`\" pulumi-lang-python=\"`iso`\" pulumi-lang-yaml=\"`iso`\" pulumi-lang-java=\"`iso`\"\u003e`iso`\u003c/span\u003e (ISO images), \u003cspan pulumi-lang-nodejs=\"`rootdir`\" pulumi-lang-dotnet=\"`Rootdir`\" pulumi-lang-go=\"`rootdir`\" pulumi-lang-python=\"`rootdir`\" pulumi-lang-yaml=\"`rootdir`\" pulumi-lang-java=\"`rootdir`\"\u003e`rootdir`\u003c/span\u003e (container root directories), \u003cspan pulumi-lang-nodejs=\"`snippets`\" pulumi-lang-dotnet=\"`Snippets`\" pulumi-lang-go=\"`snippets`\" pulumi-lang-python=\"`snippets`\" pulumi-lang-yaml=\"`snippets`\" pulumi-lang-java=\"`snippets`\"\u003e`snippets`\u003c/span\u003e (cloud-init, hook scripts, etc.), \u003cspan pulumi-lang-nodejs=\"`vztmpl`\" pulumi-lang-dotnet=\"`Vztmpl`\" pulumi-lang-go=\"`vztmpl`\" pulumi-lang-python=\"`vztmpl`\" pulumi-lang-yaml=\"`vztmpl`\" pulumi-lang-java=\"`vztmpl`\"\u003e`vztmpl`\u003c/span\u003e (container templates).\n"},"datastore":{"type":"string","description":"The name of the datastore on the Proxmox Backup Server.\n"},"disable":{"type":"boolean","description":"Whether the storage is disabled.\n"},"encryptionKey":{"type":"string","description":"An existing encryption key for the datastore. This is a sensitive value. Conflicts with \u003cspan pulumi-lang-nodejs=\"`generateEncryptionKey`\" pulumi-lang-dotnet=\"`GenerateEncryptionKey`\" pulumi-lang-go=\"`generateEncryptionKey`\" pulumi-lang-python=\"`generate_encryption_key`\" pulumi-lang-yaml=\"`generateEncryptionKey`\" pulumi-lang-java=\"`generateEncryptionKey`\"\u003e`generate_encryption_key`\u003c/span\u003e.\n","secret":true},"fingerprint":{"type":"string","description":"The SHA256 fingerprint of the Proxmox Backup Server's certificate.\n"},"generateEncryptionKey":{"type":"boolean","description":"If set to true, Proxmox will generate a new encryption key. The key will be stored in the \u003cspan pulumi-lang-nodejs=\"`generatedEncryptionKey`\" pulumi-lang-dotnet=\"`GeneratedEncryptionKey`\" pulumi-lang-go=\"`generatedEncryptionKey`\" pulumi-lang-python=\"`generated_encryption_key`\" pulumi-lang-yaml=\"`generatedEncryptionKey`\" pulumi-lang-java=\"`generatedEncryptionKey`\"\u003e`generated_encryption_key`\u003c/span\u003e attribute. Conflicts with \u003cspan pulumi-lang-nodejs=\"`encryptionKey`\" pulumi-lang-dotnet=\"`EncryptionKey`\" pulumi-lang-go=\"`encryptionKey`\" pulumi-lang-python=\"`encryption_key`\" pulumi-lang-yaml=\"`encryptionKey`\" pulumi-lang-java=\"`encryptionKey`\"\u003e`encryption_key`\u003c/span\u003e.\n"},"namespace":{"type":"string","description":"The namespace to use on the Proxmox Backup Server.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"A list of nodes where this storage is available.\n"},"password":{"type":"string","description":"The password for authenticating with the Proxmox Backup Server.\n","secret":true},"pbsId":{"type":"string","description":"The unique identifier of the storage.\n"},"server":{"type":"string","description":"The IP address or DNS name of the Proxmox Backup Server.\n"},"username":{"type":"string","description":"The username for authenticating with the Proxmox Backup Server.\n"}},"requiredInputs":["datastore","pbsId","password","server","username"],"stateInputs":{"description":"Input properties used for looking up and filtering PBS resources.\n","properties":{"backups":{"$ref":"#/types/proxmoxve:Storage/PBSBackups:PBSBackups","description":"Configure backup retention settings for the storage type.\n"},"contents":{"type":"array","items":{"type":"string"},"description":"The content types that can be stored on this storage. Valid values: \u003cspan pulumi-lang-nodejs=\"`backup`\" pulumi-lang-dotnet=\"`Backup`\" pulumi-lang-go=\"`backup`\" pulumi-lang-python=\"`backup`\" pulumi-lang-yaml=\"`backup`\" pulumi-lang-java=\"`backup`\"\u003e`backup`\u003c/span\u003e (VM backups), \u003cspan pulumi-lang-nodejs=\"`images`\" pulumi-lang-dotnet=\"`Images`\" pulumi-lang-go=\"`images`\" pulumi-lang-python=\"`images`\" pulumi-lang-yaml=\"`images`\" pulumi-lang-java=\"`images`\"\u003e`images`\u003c/span\u003e (VM disk images), \u003cspan pulumi-lang-nodejs=\"`import`\" pulumi-lang-dotnet=\"`Import`\" pulumi-lang-go=\"`import`\" pulumi-lang-python=\"`import`\" pulumi-lang-yaml=\"`import`\" pulumi-lang-java=\"`import`\"\u003e`import`\u003c/span\u003e (VM disk images for import), \u003cspan pulumi-lang-nodejs=\"`iso`\" pulumi-lang-dotnet=\"`Iso`\" pulumi-lang-go=\"`iso`\" pulumi-lang-python=\"`iso`\" pulumi-lang-yaml=\"`iso`\" pulumi-lang-java=\"`iso`\"\u003e`iso`\u003c/span\u003e (ISO images), \u003cspan pulumi-lang-nodejs=\"`rootdir`\" pulumi-lang-dotnet=\"`Rootdir`\" pulumi-lang-go=\"`rootdir`\" pulumi-lang-python=\"`rootdir`\" pulumi-lang-yaml=\"`rootdir`\" pulumi-lang-java=\"`rootdir`\"\u003e`rootdir`\u003c/span\u003e (container root directories), \u003cspan pulumi-lang-nodejs=\"`snippets`\" pulumi-lang-dotnet=\"`Snippets`\" pulumi-lang-go=\"`snippets`\" pulumi-lang-python=\"`snippets`\" pulumi-lang-yaml=\"`snippets`\" pulumi-lang-java=\"`snippets`\"\u003e`snippets`\u003c/span\u003e (cloud-init, hook scripts, etc.), \u003cspan pulumi-lang-nodejs=\"`vztmpl`\" pulumi-lang-dotnet=\"`Vztmpl`\" pulumi-lang-go=\"`vztmpl`\" pulumi-lang-python=\"`vztmpl`\" pulumi-lang-yaml=\"`vztmpl`\" pulumi-lang-java=\"`vztmpl`\"\u003e`vztmpl`\u003c/span\u003e (container templates).\n"},"datastore":{"type":"string","description":"The name of the datastore on the Proxmox Backup Server.\n"},"disable":{"type":"boolean","description":"Whether the storage is disabled.\n"},"encryptionKey":{"type":"string","description":"An existing encryption key for the datastore. This is a sensitive value. Conflicts with \u003cspan pulumi-lang-nodejs=\"`generateEncryptionKey`\" pulumi-lang-dotnet=\"`GenerateEncryptionKey`\" pulumi-lang-go=\"`generateEncryptionKey`\" pulumi-lang-python=\"`generate_encryption_key`\" pulumi-lang-yaml=\"`generateEncryptionKey`\" pulumi-lang-java=\"`generateEncryptionKey`\"\u003e`generate_encryption_key`\u003c/span\u003e.\n","secret":true},"encryptionKeyFingerprint":{"type":"string","description":"The SHA256 fingerprint of the encryption key currently in use.\n"},"fingerprint":{"type":"string","description":"The SHA256 fingerprint of the Proxmox Backup Server's certificate.\n"},"generateEncryptionKey":{"type":"boolean","description":"If set to true, Proxmox will generate a new encryption key. The key will be stored in the \u003cspan pulumi-lang-nodejs=\"`generatedEncryptionKey`\" pulumi-lang-dotnet=\"`GeneratedEncryptionKey`\" pulumi-lang-go=\"`generatedEncryptionKey`\" pulumi-lang-python=\"`generated_encryption_key`\" pulumi-lang-yaml=\"`generatedEncryptionKey`\" pulumi-lang-java=\"`generatedEncryptionKey`\"\u003e`generated_encryption_key`\u003c/span\u003e attribute. Conflicts with \u003cspan pulumi-lang-nodejs=\"`encryptionKey`\" pulumi-lang-dotnet=\"`EncryptionKey`\" pulumi-lang-go=\"`encryptionKey`\" pulumi-lang-python=\"`encryption_key`\" pulumi-lang-yaml=\"`encryptionKey`\" pulumi-lang-java=\"`encryptionKey`\"\u003e`encryption_key`\u003c/span\u003e.\n"},"generatedEncryptionKey":{"type":"string","description":"The encryption key returned by Proxmox when \u003cspan pulumi-lang-nodejs=\"`generateEncryptionKey`\" pulumi-lang-dotnet=\"`GenerateEncryptionKey`\" pulumi-lang-go=\"`generateEncryptionKey`\" pulumi-lang-python=\"`generate_encryption_key`\" pulumi-lang-yaml=\"`generateEncryptionKey`\" pulumi-lang-java=\"`generateEncryptionKey`\"\u003e`generate_encryption_key`\u003c/span\u003e is true.\n","secret":true},"namespace":{"type":"string","description":"The namespace to use on the Proxmox Backup Server.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"A list of nodes where this storage is available.\n"},"password":{"type":"string","description":"The password for authenticating with the Proxmox Backup Server.\n","secret":true},"pbsId":{"type":"string","description":"The unique identifier of the storage.\n"},"server":{"type":"string","description":"The IP address or DNS name of the Proxmox Backup Server.\n"},"shared":{"type":"boolean","description":"Whether the storage is shared across all nodes.\n"},"username":{"type":"string","description":"The username for authenticating with the Proxmox Backup Server.\n"}},"type":"object"}},"proxmoxve:Storage/zFSPool:ZFSPool":{"description":"Manages ZFS-based storage in Proxmox VE.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.storage.ZFSPool(\"example\", {\n    zfsPoolId: \"example-zfs\",\n    nodes: [\"pve\"],\n    zfsPool: \"rpool/data\",\n    contents: [\"images\"],\n    thinProvision: true,\n    blocksize: \"64k\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.storage.ZFSPool(\"example\",\n    zfs_pool_id=\"example-zfs\",\n    nodes=[\"pve\"],\n    zfs_pool=\"rpool/data\",\n    contents=[\"images\"],\n    thin_provision=True,\n    blocksize=\"64k\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ProxmoxVE.Storage.ZFSPool(\"example\", new()\n    {\n        ZfsPoolId = \"example-zfs\",\n        Nodes = new[]\n        {\n            \"pve\",\n        },\n        ZfsPool = \"rpool/data\",\n        Contents = new[]\n        {\n            \"images\",\n        },\n        ThinProvision = true,\n        Blocksize = \"64k\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := storage.NewZFSPool(ctx, \"example\", \u0026storage.ZFSPoolArgs{\n\t\t\tZfsPoolId: pulumi.String(\"example-zfs\"),\n\t\t\tNodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"pve\"),\n\t\t\t},\n\t\t\tZfsPool: pulumi.String(\"rpool/data\"),\n\t\t\tContents: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"images\"),\n\t\t\t},\n\t\t\tThinProvision: pulumi.Bool(true),\n\t\t\tBlocksize:     pulumi.String(\"64k\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Storage.ZFSPool;\nimport io.muehlbachler.pulumi.proxmoxve.Storage.ZFSPoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new ZFSPool(\"example\", ZFSPoolArgs.builder()\n            .zfsPoolId(\"example-zfs\")\n            .nodes(\"pve\")\n            .zfsPool(\"rpool/data\")\n            .contents(\"images\")\n            .thinProvision(true)\n            .blocksize(\"64k\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:Storage:ZFSPool\n    properties:\n      zfsPoolId: example-zfs\n      nodes:\n        - pve\n      zfsPool: rpool/data\n      contents:\n        - images\n      thinProvision: true\n      blocksize: 64k\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"blocksize":{"type":"string","description":"Block size for newly created volumes (e.g. \u003cspan pulumi-lang-nodejs=\"`4k`\" pulumi-lang-dotnet=\"`4k`\" pulumi-lang-go=\"`4k`\" pulumi-lang-python=\"`4k`\" pulumi-lang-yaml=\"`4k`\" pulumi-lang-java=\"`4k`\"\u003e`4k`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`8k`\" pulumi-lang-dotnet=\"`8k`\" pulumi-lang-go=\"`8k`\" pulumi-lang-python=\"`8k`\" pulumi-lang-yaml=\"`8k`\" pulumi-lang-java=\"`8k`\"\u003e`8k`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`16k`\" pulumi-lang-dotnet=\"`16k`\" pulumi-lang-go=\"`16k`\" pulumi-lang-python=\"`16k`\" pulumi-lang-yaml=\"`16k`\" pulumi-lang-java=\"`16k`\"\u003e`16k`\u003c/span\u003e). Larger values may improve throughput for large I/O, while smaller values optimize space efficiency.\n"},"contents":{"type":"array","items":{"type":"string"},"description":"The content types that can be stored on this storage. Valid values: \u003cspan pulumi-lang-nodejs=\"`backup`\" pulumi-lang-dotnet=\"`Backup`\" pulumi-lang-go=\"`backup`\" pulumi-lang-python=\"`backup`\" pulumi-lang-yaml=\"`backup`\" pulumi-lang-java=\"`backup`\"\u003e`backup`\u003c/span\u003e (VM backups), \u003cspan pulumi-lang-nodejs=\"`images`\" pulumi-lang-dotnet=\"`Images`\" pulumi-lang-go=\"`images`\" pulumi-lang-python=\"`images`\" pulumi-lang-yaml=\"`images`\" pulumi-lang-java=\"`images`\"\u003e`images`\u003c/span\u003e (VM disk images), \u003cspan pulumi-lang-nodejs=\"`import`\" pulumi-lang-dotnet=\"`Import`\" pulumi-lang-go=\"`import`\" pulumi-lang-python=\"`import`\" pulumi-lang-yaml=\"`import`\" pulumi-lang-java=\"`import`\"\u003e`import`\u003c/span\u003e (VM disk images for import), \u003cspan pulumi-lang-nodejs=\"`iso`\" pulumi-lang-dotnet=\"`Iso`\" pulumi-lang-go=\"`iso`\" pulumi-lang-python=\"`iso`\" pulumi-lang-yaml=\"`iso`\" pulumi-lang-java=\"`iso`\"\u003e`iso`\u003c/span\u003e (ISO images), \u003cspan pulumi-lang-nodejs=\"`rootdir`\" pulumi-lang-dotnet=\"`Rootdir`\" pulumi-lang-go=\"`rootdir`\" pulumi-lang-python=\"`rootdir`\" pulumi-lang-yaml=\"`rootdir`\" pulumi-lang-java=\"`rootdir`\"\u003e`rootdir`\u003c/span\u003e (container root directories), \u003cspan pulumi-lang-nodejs=\"`snippets`\" pulumi-lang-dotnet=\"`Snippets`\" pulumi-lang-go=\"`snippets`\" pulumi-lang-python=\"`snippets`\" pulumi-lang-yaml=\"`snippets`\" pulumi-lang-java=\"`snippets`\"\u003e`snippets`\u003c/span\u003e (cloud-init, hook scripts, etc.), \u003cspan pulumi-lang-nodejs=\"`vztmpl`\" pulumi-lang-dotnet=\"`Vztmpl`\" pulumi-lang-go=\"`vztmpl`\" pulumi-lang-python=\"`vztmpl`\" pulumi-lang-yaml=\"`vztmpl`\" pulumi-lang-java=\"`vztmpl`\"\u003e`vztmpl`\u003c/span\u003e (container templates).\n"},"disable":{"type":"boolean","description":"Whether the storage is disabled.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"A list of nodes where this storage is available.\n"},"shared":{"type":"boolean","description":"Whether the storage is shared across all nodes.\n"},"thinProvision":{"type":"boolean","description":"Whether to enable thin provisioning (\u003cspan pulumi-lang-nodejs=\"`on`\" pulumi-lang-dotnet=\"`On`\" pulumi-lang-go=\"`on`\" pulumi-lang-python=\"`on`\" pulumi-lang-yaml=\"`on`\" pulumi-lang-java=\"`on`\"\u003e`on`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`off`\" pulumi-lang-dotnet=\"`Off`\" pulumi-lang-go=\"`off`\" pulumi-lang-python=\"`off`\" pulumi-lang-yaml=\"`off`\" pulumi-lang-java=\"`off`\"\u003e`off`\u003c/span\u003e). Thin provisioning allows flexible disk allocation without pre-allocating full space.\n"},"zfsPool":{"type":"string","description":"The name of the ZFS storage pool to use (e.g. \u003cspan pulumi-lang-nodejs=\"`tank`\" pulumi-lang-dotnet=\"`Tank`\" pulumi-lang-go=\"`tank`\" pulumi-lang-python=\"`tank`\" pulumi-lang-yaml=\"`tank`\" pulumi-lang-java=\"`tank`\"\u003e`tank`\u003c/span\u003e, `rpool/data`).\n"},"zfsPoolId":{"type":"string","description":"The unique identifier of the storage.\n"}},"required":["contents","disable","zfsPoolId","nodes","shared","zfsPool"],"inputProperties":{"blocksize":{"type":"string","description":"Block size for newly created volumes (e.g. \u003cspan pulumi-lang-nodejs=\"`4k`\" pulumi-lang-dotnet=\"`4k`\" pulumi-lang-go=\"`4k`\" pulumi-lang-python=\"`4k`\" pulumi-lang-yaml=\"`4k`\" pulumi-lang-java=\"`4k`\"\u003e`4k`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`8k`\" pulumi-lang-dotnet=\"`8k`\" pulumi-lang-go=\"`8k`\" pulumi-lang-python=\"`8k`\" pulumi-lang-yaml=\"`8k`\" pulumi-lang-java=\"`8k`\"\u003e`8k`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`16k`\" pulumi-lang-dotnet=\"`16k`\" pulumi-lang-go=\"`16k`\" pulumi-lang-python=\"`16k`\" pulumi-lang-yaml=\"`16k`\" pulumi-lang-java=\"`16k`\"\u003e`16k`\u003c/span\u003e). Larger values may improve throughput for large I/O, while smaller values optimize space efficiency.\n"},"contents":{"type":"array","items":{"type":"string"},"description":"The content types that can be stored on this storage. Valid values: \u003cspan pulumi-lang-nodejs=\"`backup`\" pulumi-lang-dotnet=\"`Backup`\" pulumi-lang-go=\"`backup`\" pulumi-lang-python=\"`backup`\" pulumi-lang-yaml=\"`backup`\" pulumi-lang-java=\"`backup`\"\u003e`backup`\u003c/span\u003e (VM backups), \u003cspan pulumi-lang-nodejs=\"`images`\" pulumi-lang-dotnet=\"`Images`\" pulumi-lang-go=\"`images`\" pulumi-lang-python=\"`images`\" pulumi-lang-yaml=\"`images`\" pulumi-lang-java=\"`images`\"\u003e`images`\u003c/span\u003e (VM disk images), \u003cspan pulumi-lang-nodejs=\"`import`\" pulumi-lang-dotnet=\"`Import`\" pulumi-lang-go=\"`import`\" pulumi-lang-python=\"`import`\" pulumi-lang-yaml=\"`import`\" pulumi-lang-java=\"`import`\"\u003e`import`\u003c/span\u003e (VM disk images for import), \u003cspan pulumi-lang-nodejs=\"`iso`\" pulumi-lang-dotnet=\"`Iso`\" pulumi-lang-go=\"`iso`\" pulumi-lang-python=\"`iso`\" pulumi-lang-yaml=\"`iso`\" pulumi-lang-java=\"`iso`\"\u003e`iso`\u003c/span\u003e (ISO images), \u003cspan pulumi-lang-nodejs=\"`rootdir`\" pulumi-lang-dotnet=\"`Rootdir`\" pulumi-lang-go=\"`rootdir`\" pulumi-lang-python=\"`rootdir`\" pulumi-lang-yaml=\"`rootdir`\" pulumi-lang-java=\"`rootdir`\"\u003e`rootdir`\u003c/span\u003e (container root directories), \u003cspan pulumi-lang-nodejs=\"`snippets`\" pulumi-lang-dotnet=\"`Snippets`\" pulumi-lang-go=\"`snippets`\" pulumi-lang-python=\"`snippets`\" pulumi-lang-yaml=\"`snippets`\" pulumi-lang-java=\"`snippets`\"\u003e`snippets`\u003c/span\u003e (cloud-init, hook scripts, etc.), \u003cspan pulumi-lang-nodejs=\"`vztmpl`\" pulumi-lang-dotnet=\"`Vztmpl`\" pulumi-lang-go=\"`vztmpl`\" pulumi-lang-python=\"`vztmpl`\" pulumi-lang-yaml=\"`vztmpl`\" pulumi-lang-java=\"`vztmpl`\"\u003e`vztmpl`\u003c/span\u003e (container templates).\n"},"disable":{"type":"boolean","description":"Whether the storage is disabled.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"A list of nodes where this storage is available.\n"},"thinProvision":{"type":"boolean","description":"Whether to enable thin provisioning (\u003cspan pulumi-lang-nodejs=\"`on`\" pulumi-lang-dotnet=\"`On`\" pulumi-lang-go=\"`on`\" pulumi-lang-python=\"`on`\" pulumi-lang-yaml=\"`on`\" pulumi-lang-java=\"`on`\"\u003e`on`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`off`\" pulumi-lang-dotnet=\"`Off`\" pulumi-lang-go=\"`off`\" pulumi-lang-python=\"`off`\" pulumi-lang-yaml=\"`off`\" pulumi-lang-java=\"`off`\"\u003e`off`\u003c/span\u003e). Thin provisioning allows flexible disk allocation without pre-allocating full space.\n"},"zfsPool":{"type":"string","description":"The name of the ZFS storage pool to use (e.g. \u003cspan pulumi-lang-nodejs=\"`tank`\" pulumi-lang-dotnet=\"`Tank`\" pulumi-lang-go=\"`tank`\" pulumi-lang-python=\"`tank`\" pulumi-lang-yaml=\"`tank`\" pulumi-lang-java=\"`tank`\"\u003e`tank`\u003c/span\u003e, `rpool/data`).\n"},"zfsPoolId":{"type":"string","description":"The unique identifier of the storage.\n"}},"requiredInputs":["zfsPoolId","zfsPool"],"stateInputs":{"description":"Input properties used for looking up and filtering ZFSPool resources.\n","properties":{"blocksize":{"type":"string","description":"Block size for newly created volumes (e.g. \u003cspan pulumi-lang-nodejs=\"`4k`\" pulumi-lang-dotnet=\"`4k`\" pulumi-lang-go=\"`4k`\" pulumi-lang-python=\"`4k`\" pulumi-lang-yaml=\"`4k`\" pulumi-lang-java=\"`4k`\"\u003e`4k`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`8k`\" pulumi-lang-dotnet=\"`8k`\" pulumi-lang-go=\"`8k`\" pulumi-lang-python=\"`8k`\" pulumi-lang-yaml=\"`8k`\" pulumi-lang-java=\"`8k`\"\u003e`8k`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`16k`\" pulumi-lang-dotnet=\"`16k`\" pulumi-lang-go=\"`16k`\" pulumi-lang-python=\"`16k`\" pulumi-lang-yaml=\"`16k`\" pulumi-lang-java=\"`16k`\"\u003e`16k`\u003c/span\u003e). Larger values may improve throughput for large I/O, while smaller values optimize space efficiency.\n"},"contents":{"type":"array","items":{"type":"string"},"description":"The content types that can be stored on this storage. Valid values: \u003cspan pulumi-lang-nodejs=\"`backup`\" pulumi-lang-dotnet=\"`Backup`\" pulumi-lang-go=\"`backup`\" pulumi-lang-python=\"`backup`\" pulumi-lang-yaml=\"`backup`\" pulumi-lang-java=\"`backup`\"\u003e`backup`\u003c/span\u003e (VM backups), \u003cspan pulumi-lang-nodejs=\"`images`\" pulumi-lang-dotnet=\"`Images`\" pulumi-lang-go=\"`images`\" pulumi-lang-python=\"`images`\" pulumi-lang-yaml=\"`images`\" pulumi-lang-java=\"`images`\"\u003e`images`\u003c/span\u003e (VM disk images), \u003cspan pulumi-lang-nodejs=\"`import`\" pulumi-lang-dotnet=\"`Import`\" pulumi-lang-go=\"`import`\" pulumi-lang-python=\"`import`\" pulumi-lang-yaml=\"`import`\" pulumi-lang-java=\"`import`\"\u003e`import`\u003c/span\u003e (VM disk images for import), \u003cspan pulumi-lang-nodejs=\"`iso`\" pulumi-lang-dotnet=\"`Iso`\" pulumi-lang-go=\"`iso`\" pulumi-lang-python=\"`iso`\" pulumi-lang-yaml=\"`iso`\" pulumi-lang-java=\"`iso`\"\u003e`iso`\u003c/span\u003e (ISO images), \u003cspan pulumi-lang-nodejs=\"`rootdir`\" pulumi-lang-dotnet=\"`Rootdir`\" pulumi-lang-go=\"`rootdir`\" pulumi-lang-python=\"`rootdir`\" pulumi-lang-yaml=\"`rootdir`\" pulumi-lang-java=\"`rootdir`\"\u003e`rootdir`\u003c/span\u003e (container root directories), \u003cspan pulumi-lang-nodejs=\"`snippets`\" pulumi-lang-dotnet=\"`Snippets`\" pulumi-lang-go=\"`snippets`\" pulumi-lang-python=\"`snippets`\" pulumi-lang-yaml=\"`snippets`\" pulumi-lang-java=\"`snippets`\"\u003e`snippets`\u003c/span\u003e (cloud-init, hook scripts, etc.), \u003cspan pulumi-lang-nodejs=\"`vztmpl`\" pulumi-lang-dotnet=\"`Vztmpl`\" pulumi-lang-go=\"`vztmpl`\" pulumi-lang-python=\"`vztmpl`\" pulumi-lang-yaml=\"`vztmpl`\" pulumi-lang-java=\"`vztmpl`\"\u003e`vztmpl`\u003c/span\u003e (container templates).\n"},"disable":{"type":"boolean","description":"Whether the storage is disabled.\n"},"nodes":{"type":"array","items":{"type":"string"},"description":"A list of nodes where this storage is available.\n"},"shared":{"type":"boolean","description":"Whether the storage is shared across all nodes.\n"},"thinProvision":{"type":"boolean","description":"Whether to enable thin provisioning (\u003cspan pulumi-lang-nodejs=\"`on`\" pulumi-lang-dotnet=\"`On`\" pulumi-lang-go=\"`on`\" pulumi-lang-python=\"`on`\" pulumi-lang-yaml=\"`on`\" pulumi-lang-java=\"`on`\"\u003e`on`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`off`\" pulumi-lang-dotnet=\"`Off`\" pulumi-lang-go=\"`off`\" pulumi-lang-python=\"`off`\" pulumi-lang-yaml=\"`off`\" pulumi-lang-java=\"`off`\"\u003e`off`\u003c/span\u003e). Thin provisioning allows flexible disk allocation without pre-allocating full space.\n"},"zfsPool":{"type":"string","description":"The name of the ZFS storage pool to use (e.g. \u003cspan pulumi-lang-nodejs=\"`tank`\" pulumi-lang-dotnet=\"`Tank`\" pulumi-lang-go=\"`tank`\" pulumi-lang-python=\"`tank`\" pulumi-lang-yaml=\"`tank`\" pulumi-lang-java=\"`tank`\"\u003e`tank`\u003c/span\u003e, `rpool/data`).\n"},"zfsPoolId":{"type":"string","description":"The unique identifier of the storage.\n"}},"type":"object"}},"proxmoxve:User/token:Token":{"description":"User API tokens.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\n// if creating a user token, the user must be created first\nconst user = new proxmoxve.permission.User(\"user\", {\n    comment: \"Managed by Pulumi\",\n    email: \"user@pve\",\n    enabled: true,\n    expirationDate: \"2034-01-01T22:00:00Z\",\n    userId: \"user@pve\",\n});\nconst userToken = new proxmoxve.user.Token(\"user_token\", {\n    comment: \"Managed by Pulumi\",\n    expirationDate: \"2033-01-01T22:00:00Z\",\n    tokenName: \"tk1\",\n    userId: user.userId,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# if creating a user token, the user must be created first\nuser = proxmoxve.permission.User(\"user\",\n    comment=\"Managed by Pulumi\",\n    email=\"user@pve\",\n    enabled=True,\n    expiration_date=\"2034-01-01T22:00:00Z\",\n    user_id=\"user@pve\")\nuser_token = proxmoxve.user.Token(\"user_token\",\n    comment=\"Managed by Pulumi\",\n    expiration_date=\"2033-01-01T22:00:00Z\",\n    token_name=\"tk1\",\n    user_id=user.user_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // if creating a user token, the user must be created first\n    var user = new ProxmoxVE.Permission.User(\"user\", new()\n    {\n        Comment = \"Managed by Pulumi\",\n        Email = \"user@pve\",\n        Enabled = true,\n        ExpirationDate = \"2034-01-01T22:00:00Z\",\n        UserId = \"user@pve\",\n    });\n\n    var userToken = new ProxmoxVE.User.Token(\"user_token\", new()\n    {\n        Comment = \"Managed by Pulumi\",\n        ExpirationDate = \"2033-01-01T22:00:00Z\",\n        TokenName = \"tk1\",\n        UserId = user.UserId,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/permission\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/user\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// if creating a user token, the user must be created first\n\t\tuser, err := permission.NewUser(ctx, \"user\", \u0026permission.UserArgs{\n\t\t\tComment:        pulumi.String(\"Managed by Pulumi\"),\n\t\t\tEmail:          pulumi.String(\"user@pve\"),\n\t\t\tEnabled:        pulumi.Bool(true),\n\t\t\tExpirationDate: pulumi.String(\"2034-01-01T22:00:00Z\"),\n\t\t\tUserId:         pulumi.String(\"user@pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = user.NewToken(ctx, \"user_token\", \u0026user.TokenArgs{\n\t\t\tComment:        pulumi.String(\"Managed by Pulumi\"),\n\t\t\tExpirationDate: pulumi.String(\"2033-01-01T22:00:00Z\"),\n\t\t\tTokenName:      pulumi.String(\"tk1\"),\n\t\t\tUserId:         user.UserId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Permission.User;\nimport io.muehlbachler.pulumi.proxmoxve.Permission.UserArgs;\nimport io.muehlbachler.pulumi.proxmoxve.User.Token;\nimport io.muehlbachler.pulumi.proxmoxve.User.TokenArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // if creating a user token, the user must be created first\n        var user = new User(\"user\", UserArgs.builder()\n            .comment(\"Managed by Pulumi\")\n            .email(\"user@pve\")\n            .enabled(true)\n            .expirationDate(\"2034-01-01T22:00:00Z\")\n            .userId(\"user@pve\")\n            .build());\n\n        var userToken = new Token(\"userToken\", TokenArgs.builder()\n            .comment(\"Managed by Pulumi\")\n            .expirationDate(\"2033-01-01T22:00:00Z\")\n            .tokenName(\"tk1\")\n            .userId(user.userId())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # if creating a user token, the user must be created first\n  user:\n    type: proxmoxve:Permission:User\n    properties:\n      comment: Managed by Pulumi\n      email: user@pve\n      enabled: true\n      expirationDate: 2034-01-01T22:00:00Z\n      userId: user@pve\n  userToken:\n    type: proxmoxve:User:Token\n    name: user_token\n    properties:\n      comment: Managed by Pulumi\n      expirationDate: 2033-01-01T22:00:00Z\n      tokenName: tk1\n      userId: ${user.userId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\n#Tokens can be imported using they identifiers in format `user_id!token_name` format, e.g.:\n\n```sh\n$ pulumi import proxmoxve:User/token:Token token1 user@pve!token1\n```\n\n","properties":{"comment":{"type":"string","description":"Comment for the token.\n"},"expirationDate":{"type":"string","description":"Expiration date for the token.\n"},"privilegesSeparation":{"type":"boolean","description":"Restrict API token privileges with separate ACLs (default), or give full privileges of corresponding user.\n"},"tokenName":{"type":"string","description":"User-specific token identifier.\n"},"userId":{"type":"string","description":"User identifier.\n"},"value":{"type":"string","description":"API token value used for authentication. It is populated only when creating a new token, and can't be retrieved at import.\n","secret":true}},"required":["privilegesSeparation","tokenName","userId","value"],"inputProperties":{"comment":{"type":"string","description":"Comment for the token.\n"},"expirationDate":{"type":"string","description":"Expiration date for the token.\n"},"privilegesSeparation":{"type":"boolean","description":"Restrict API token privileges with separate ACLs (default), or give full privileges of corresponding user.\n"},"tokenName":{"type":"string","description":"User-specific token identifier.\n"},"userId":{"type":"string","description":"User identifier.\n"}},"requiredInputs":["tokenName","userId"],"stateInputs":{"description":"Input properties used for looking up and filtering Token resources.\n","properties":{"comment":{"type":"string","description":"Comment for the token.\n"},"expirationDate":{"type":"string","description":"Expiration date for the token.\n"},"privilegesSeparation":{"type":"boolean","description":"Restrict API token privileges with separate ACLs (default), or give full privileges of corresponding user.\n"},"tokenName":{"type":"string","description":"User-specific token identifier.\n"},"userId":{"type":"string","description":"User identifier.\n"},"value":{"type":"string","description":"API token value used for authentication. It is populated only when creating a new token, and can't be retrieved at import.\n","secret":true}},"type":"object"}},"proxmoxve:VM/clonedVirtualMachine:ClonedVirtualMachine":{"description":"## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\n// Example 1: Basic clone with minimal management\nconst basicClone = new proxmoxve.vm.ClonedVirtualMachine(\"basic_clone\", {\n    nodeName: \"pve\",\n    name: \"basic-clone\",\n    clone: {\n        sourceVmId: 100,\n        full: true,\n    },\n    cpu: {\n        cores: 4,\n    },\n});\n// Example 2: Clone with explicit network management\nconst networkManaged = new proxmoxve.vm.ClonedVirtualMachine(\"network_managed\", {\n    nodeName: \"pve\",\n    name: \"network-clone\",\n    clone: {\n        sourceVmId: 100,\n    },\n    network: {\n        net0: {\n            bridge: \"vmbr0\",\n            model: \"virtio\",\n            tag: 100,\n        },\n        net1: {\n            bridge: \"vmbr1\",\n            model: \"virtio\",\n            firewall: true,\n            macAddress: \"BC:24:11:2E:C5:00\",\n        },\n    },\n    cpu: {\n        cores: 2,\n    },\n});\n// Example 3: Clone with disk management\nconst diskManaged = new proxmoxve.vm.ClonedVirtualMachine(\"disk_managed\", {\n    nodeName: \"pve\",\n    name: \"disk-clone\",\n    clone: {\n        sourceVmId: 100,\n        targetDatastore: \"local-lvm\",\n    },\n    disk: {\n        scsi0: {\n            datastoreId: \"local-lvm\",\n            sizeGb: 50,\n            discard: \"on\",\n            ssd: true,\n        },\n        scsi1: {\n            datastoreId: \"local-lvm\",\n            sizeGb: 100,\n            backup: false,\n        },\n    },\n});\n// Example 4: Clone with explicit device deletion\nconst selectiveDelete = new proxmoxve.vm.ClonedVirtualMachine(\"selective_delete\", {\n    nodeName: \"pve\",\n    name: \"minimal-clone\",\n    clone: {\n        sourceVmId: 100,\n    },\n    network: {\n        net0: {\n            bridge: \"vmbr0\",\n            model: \"virtio\",\n        },\n    },\n    \"delete\": {\n        networks: [\n            \"net1\",\n            \"net2\",\n        ],\n    },\n});\n// Example 5: Full-featured clone with multiple settings\nconst fullFeatured = new proxmoxve.vm.ClonedVirtualMachine(\"full_featured\", {\n    nodeName: \"pve\",\n    name: \"production-vm\",\n    description: \"Production VM cloned from template\",\n    tags: [\n        \"production\",\n        \"web\",\n    ],\n    clone: {\n        sourceVmId: 100,\n        sourceNodeName: \"pve\",\n        full: true,\n        targetDatastore: \"local-lvm\",\n        retries: 3,\n    },\n    cpu: {\n        cores: 8,\n        sockets: 1,\n        architecture: \"x86_64\",\n        type: \"host\",\n    },\n    memory: {\n        size: 8192,\n        balloon: 2048,\n        shares: 2000,\n    },\n    network: {\n        net0: {\n            bridge: \"vmbr0\",\n            model: \"virtio\",\n            tag: 100,\n            firewall: true,\n            rateLimit: 100,\n        },\n    },\n    disk: {\n        scsi0: {\n            datastoreId: \"local-lvm\",\n            sizeGb: 100,\n            discard: \"on\",\n            iothread: true,\n            ssd: true,\n            cache: \"writethrough\",\n        },\n    },\n    vga: {\n        type: \"std\",\n        memory: 16,\n    },\n    \"delete\": {\n        disks: [\"ide2\"],\n    },\n    stopOnDestroy: false,\n    purgeOnDestroy: true,\n    deleteUnreferencedDisksOnDestroy: false,\n    timeouts: {\n        create: \"30m\",\n        update: \"30m\",\n        \"delete\": \"10m\",\n    },\n});\n// Example 6: Linked clone for testing\nconst testClone = new proxmoxve.vm.ClonedVirtualMachine(\"test_clone\", {\n    nodeName: \"pve\",\n    name: \"test-vm\",\n    clone: {\n        sourceVmId: 100,\n        full: false,\n    },\n    cpu: {\n        cores: 2,\n    },\n    network: {\n        net0: {\n            bridge: \"vmbr0\",\n            model: \"virtio\",\n        },\n    },\n});\n// Example 7: Clone with pool assignment\nconst pooledClone = new proxmoxve.vm.ClonedVirtualMachine(\"pooled_clone\", {\n    nodeName: \"pve\",\n    name: \"pooled-vm\",\n    clone: {\n        sourceVmId: 100,\n        poolId: \"production\",\n    },\n    cpu: {\n        cores: 4,\n    },\n});\n// Example 8: Import existing cloned VM\nconst imported = new proxmoxve.vm.ClonedVirtualMachine(\"imported\", {\n    vmId: \"123\",\n    nodeName: \"pve\",\n    clone: {\n        sourceVmId: 100,\n    },\n    cpu: {\n        cores: 4,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# Example 1: Basic clone with minimal management\nbasic_clone = proxmoxve.vm.ClonedVirtualMachine(\"basic_clone\",\n    node_name=\"pve\",\n    name=\"basic-clone\",\n    clone={\n        \"source_vm_id\": 100,\n        \"full\": True,\n    },\n    cpu={\n        \"cores\": 4,\n    })\n# Example 2: Clone with explicit network management\nnetwork_managed = proxmoxve.vm.ClonedVirtualMachine(\"network_managed\",\n    node_name=\"pve\",\n    name=\"network-clone\",\n    clone={\n        \"source_vm_id\": 100,\n    },\n    network={\n        \"net0\": {\n            \"bridge\": \"vmbr0\",\n            \"model\": \"virtio\",\n            \"tag\": 100,\n        },\n        \"net1\": {\n            \"bridge\": \"vmbr1\",\n            \"model\": \"virtio\",\n            \"firewall\": True,\n            \"mac_address\": \"BC:24:11:2E:C5:00\",\n        },\n    },\n    cpu={\n        \"cores\": 2,\n    })\n# Example 3: Clone with disk management\ndisk_managed = proxmoxve.vm.ClonedVirtualMachine(\"disk_managed\",\n    node_name=\"pve\",\n    name=\"disk-clone\",\n    clone={\n        \"source_vm_id\": 100,\n        \"target_datastore\": \"local-lvm\",\n    },\n    disk={\n        \"scsi0\": {\n            \"datastore_id\": \"local-lvm\",\n            \"size_gb\": 50,\n            \"discard\": \"on\",\n            \"ssd\": True,\n        },\n        \"scsi1\": {\n            \"datastore_id\": \"local-lvm\",\n            \"size_gb\": 100,\n            \"backup\": False,\n        },\n    })\n# Example 4: Clone with explicit device deletion\nselective_delete = proxmoxve.vm.ClonedVirtualMachine(\"selective_delete\",\n    node_name=\"pve\",\n    name=\"minimal-clone\",\n    clone={\n        \"source_vm_id\": 100,\n    },\n    network={\n        \"net0\": {\n            \"bridge\": \"vmbr0\",\n            \"model\": \"virtio\",\n        },\n    },\n    delete={\n        \"networks\": [\n            \"net1\",\n            \"net2\",\n        ],\n    })\n# Example 5: Full-featured clone with multiple settings\nfull_featured = proxmoxve.vm.ClonedVirtualMachine(\"full_featured\",\n    node_name=\"pve\",\n    name=\"production-vm\",\n    description=\"Production VM cloned from template\",\n    tags=[\n        \"production\",\n        \"web\",\n    ],\n    clone={\n        \"source_vm_id\": 100,\n        \"source_node_name\": \"pve\",\n        \"full\": True,\n        \"target_datastore\": \"local-lvm\",\n        \"retries\": 3,\n    },\n    cpu={\n        \"cores\": 8,\n        \"sockets\": 1,\n        \"architecture\": \"x86_64\",\n        \"type\": \"host\",\n    },\n    memory={\n        \"size\": 8192,\n        \"balloon\": 2048,\n        \"shares\": 2000,\n    },\n    network={\n        \"net0\": {\n            \"bridge\": \"vmbr0\",\n            \"model\": \"virtio\",\n            \"tag\": 100,\n            \"firewall\": True,\n            \"rate_limit\": 100,\n        },\n    },\n    disk={\n        \"scsi0\": {\n            \"datastore_id\": \"local-lvm\",\n            \"size_gb\": 100,\n            \"discard\": \"on\",\n            \"iothread\": True,\n            \"ssd\": True,\n            \"cache\": \"writethrough\",\n        },\n    },\n    vga={\n        \"type\": \"std\",\n        \"memory\": 16,\n    },\n    delete={\n        \"disks\": [\"ide2\"],\n    },\n    stop_on_destroy=False,\n    purge_on_destroy=True,\n    delete_unreferenced_disks_on_destroy=False,\n    timeouts={\n        \"create\": \"30m\",\n        \"update\": \"30m\",\n        \"delete\": \"10m\",\n    })\n# Example 6: Linked clone for testing\ntest_clone = proxmoxve.vm.ClonedVirtualMachine(\"test_clone\",\n    node_name=\"pve\",\n    name=\"test-vm\",\n    clone={\n        \"source_vm_id\": 100,\n        \"full\": False,\n    },\n    cpu={\n        \"cores\": 2,\n    },\n    network={\n        \"net0\": {\n            \"bridge\": \"vmbr0\",\n            \"model\": \"virtio\",\n        },\n    })\n# Example 7: Clone with pool assignment\npooled_clone = proxmoxve.vm.ClonedVirtualMachine(\"pooled_clone\",\n    node_name=\"pve\",\n    name=\"pooled-vm\",\n    clone={\n        \"source_vm_id\": 100,\n        \"pool_id\": \"production\",\n    },\n    cpu={\n        \"cores\": 4,\n    })\n# Example 8: Import existing cloned VM\nimported = proxmoxve.vm.ClonedVirtualMachine(\"imported\",\n    vm_id=\"123\",\n    node_name=\"pve\",\n    clone={\n        \"source_vm_id\": 100,\n    },\n    cpu={\n        \"cores\": 4,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Example 1: Basic clone with minimal management\n    var basicClone = new ProxmoxVE.VM.ClonedVirtualMachine(\"basic_clone\", new()\n    {\n        NodeName = \"pve\",\n        Name = \"basic-clone\",\n        Clone = new ProxmoxVE.VM.Inputs.ClonedVirtualMachineCloneArgs\n        {\n            SourceVmId = 100,\n            Full = true,\n        },\n        Cpu = new ProxmoxVE.VM.Inputs.ClonedVirtualMachineCpuArgs\n        {\n            Cores = 4,\n        },\n    });\n\n    // Example 2: Clone with explicit network management\n    var networkManaged = new ProxmoxVE.VM.ClonedVirtualMachine(\"network_managed\", new()\n    {\n        NodeName = \"pve\",\n        Name = \"network-clone\",\n        Clone = new ProxmoxVE.VM.Inputs.ClonedVirtualMachineCloneArgs\n        {\n            SourceVmId = 100,\n        },\n        Network = \n        {\n            { \"net0\", new ProxmoxVE.VM.Inputs.ClonedVirtualMachineNetworkArgs\n            {\n                Bridge = \"vmbr0\",\n                Model = \"virtio\",\n                Tag = 100,\n            } },\n            { \"net1\", new ProxmoxVE.VM.Inputs.ClonedVirtualMachineNetworkArgs\n            {\n                Bridge = \"vmbr1\",\n                Model = \"virtio\",\n                Firewall = true,\n                MacAddress = \"BC:24:11:2E:C5:00\",\n            } },\n        },\n        Cpu = new ProxmoxVE.VM.Inputs.ClonedVirtualMachineCpuArgs\n        {\n            Cores = 2,\n        },\n    });\n\n    // Example 3: Clone with disk management\n    var diskManaged = new ProxmoxVE.VM.ClonedVirtualMachine(\"disk_managed\", new()\n    {\n        NodeName = \"pve\",\n        Name = \"disk-clone\",\n        Clone = new ProxmoxVE.VM.Inputs.ClonedVirtualMachineCloneArgs\n        {\n            SourceVmId = 100,\n            TargetDatastore = \"local-lvm\",\n        },\n        Disk = \n        {\n            { \"scsi0\", new ProxmoxVE.VM.Inputs.ClonedVirtualMachineDiskArgs\n            {\n                DatastoreId = \"local-lvm\",\n                SizeGb = 50,\n                Discard = \"on\",\n                Ssd = true,\n            } },\n            { \"scsi1\", new ProxmoxVE.VM.Inputs.ClonedVirtualMachineDiskArgs\n            {\n                DatastoreId = \"local-lvm\",\n                SizeGb = 100,\n                Backup = false,\n            } },\n        },\n    });\n\n    // Example 4: Clone with explicit device deletion\n    var selectiveDelete = new ProxmoxVE.VM.ClonedVirtualMachine(\"selective_delete\", new()\n    {\n        NodeName = \"pve\",\n        Name = \"minimal-clone\",\n        Clone = new ProxmoxVE.VM.Inputs.ClonedVirtualMachineCloneArgs\n        {\n            SourceVmId = 100,\n        },\n        Network = \n        {\n            { \"net0\", new ProxmoxVE.VM.Inputs.ClonedVirtualMachineNetworkArgs\n            {\n                Bridge = \"vmbr0\",\n                Model = \"virtio\",\n            } },\n        },\n        Delete = new ProxmoxVE.VM.Inputs.ClonedVirtualMachineDeleteArgs\n        {\n            Networks = new[]\n            {\n                \"net1\",\n                \"net2\",\n            },\n        },\n    });\n\n    // Example 5: Full-featured clone with multiple settings\n    var fullFeatured = new ProxmoxVE.VM.ClonedVirtualMachine(\"full_featured\", new()\n    {\n        NodeName = \"pve\",\n        Name = \"production-vm\",\n        Description = \"Production VM cloned from template\",\n        Tags = new[]\n        {\n            \"production\",\n            \"web\",\n        },\n        Clone = new ProxmoxVE.VM.Inputs.ClonedVirtualMachineCloneArgs\n        {\n            SourceVmId = 100,\n            SourceNodeName = \"pve\",\n            Full = true,\n            TargetDatastore = \"local-lvm\",\n            Retries = 3,\n        },\n        Cpu = new ProxmoxVE.VM.Inputs.ClonedVirtualMachineCpuArgs\n        {\n            Cores = 8,\n            Sockets = 1,\n            Architecture = \"x86_64\",\n            Type = \"host\",\n        },\n        Memory = new ProxmoxVE.VM.Inputs.ClonedVirtualMachineMemoryArgs\n        {\n            Size = 8192,\n            Balloon = 2048,\n            Shares = 2000,\n        },\n        Network = \n        {\n            { \"net0\", new ProxmoxVE.VM.Inputs.ClonedVirtualMachineNetworkArgs\n            {\n                Bridge = \"vmbr0\",\n                Model = \"virtio\",\n                Tag = 100,\n                Firewall = true,\n                RateLimit = 100,\n            } },\n        },\n        Disk = \n        {\n            { \"scsi0\", new ProxmoxVE.VM.Inputs.ClonedVirtualMachineDiskArgs\n            {\n                DatastoreId = \"local-lvm\",\n                SizeGb = 100,\n                Discard = \"on\",\n                Iothread = true,\n                Ssd = true,\n                Cache = \"writethrough\",\n            } },\n        },\n        Vga = new ProxmoxVE.VM.Inputs.ClonedVirtualMachineVgaArgs\n        {\n            Type = \"std\",\n            Memory = 16,\n        },\n        Delete = new ProxmoxVE.VM.Inputs.ClonedVirtualMachineDeleteArgs\n        {\n            Disks = new[]\n            {\n                \"ide2\",\n            },\n        },\n        StopOnDestroy = false,\n        PurgeOnDestroy = true,\n        DeleteUnreferencedDisksOnDestroy = false,\n        Timeouts = new ProxmoxVE.VM.Inputs.ClonedVirtualMachineTimeoutsArgs\n        {\n            Create = \"30m\",\n            Update = \"30m\",\n            Delete = \"10m\",\n        },\n    });\n\n    // Example 6: Linked clone for testing\n    var testClone = new ProxmoxVE.VM.ClonedVirtualMachine(\"test_clone\", new()\n    {\n        NodeName = \"pve\",\n        Name = \"test-vm\",\n        Clone = new ProxmoxVE.VM.Inputs.ClonedVirtualMachineCloneArgs\n        {\n            SourceVmId = 100,\n            Full = false,\n        },\n        Cpu = new ProxmoxVE.VM.Inputs.ClonedVirtualMachineCpuArgs\n        {\n            Cores = 2,\n        },\n        Network = \n        {\n            { \"net0\", new ProxmoxVE.VM.Inputs.ClonedVirtualMachineNetworkArgs\n            {\n                Bridge = \"vmbr0\",\n                Model = \"virtio\",\n            } },\n        },\n    });\n\n    // Example 7: Clone with pool assignment\n    var pooledClone = new ProxmoxVE.VM.ClonedVirtualMachine(\"pooled_clone\", new()\n    {\n        NodeName = \"pve\",\n        Name = \"pooled-vm\",\n        Clone = new ProxmoxVE.VM.Inputs.ClonedVirtualMachineCloneArgs\n        {\n            SourceVmId = 100,\n            PoolId = \"production\",\n        },\n        Cpu = new ProxmoxVE.VM.Inputs.ClonedVirtualMachineCpuArgs\n        {\n            Cores = 4,\n        },\n    });\n\n    // Example 8: Import existing cloned VM\n    var imported = new ProxmoxVE.VM.ClonedVirtualMachine(\"imported\", new()\n    {\n        VmId = \"123\",\n        NodeName = \"pve\",\n        Clone = new ProxmoxVE.VM.Inputs.ClonedVirtualMachineCloneArgs\n        {\n            SourceVmId = 100,\n        },\n        Cpu = new ProxmoxVE.VM.Inputs.ClonedVirtualMachineCpuArgs\n        {\n            Cores = 4,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/vm\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Example 1: Basic clone with minimal management\n\t\t_, err := vm.NewClonedVirtualMachine(ctx, \"basic_clone\", \u0026vm.ClonedVirtualMachineArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tName:     pulumi.String(\"basic-clone\"),\n\t\t\tClone: \u0026vm.ClonedVirtualMachineCloneArgs{\n\t\t\t\tSourceVmId: pulumi.Int(100),\n\t\t\t\tFull:       pulumi.Bool(true),\n\t\t\t},\n\t\t\tCpu: \u0026vm.ClonedVirtualMachineCpuArgs{\n\t\t\t\tCores: pulumi.Int(4),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Example 2: Clone with explicit network management\n\t\t_, err = vm.NewClonedVirtualMachine(ctx, \"network_managed\", \u0026vm.ClonedVirtualMachineArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tName:     pulumi.String(\"network-clone\"),\n\t\t\tClone: \u0026vm.ClonedVirtualMachineCloneArgs{\n\t\t\t\tSourceVmId: pulumi.Int(100),\n\t\t\t},\n\t\t\tNetwork: vm.ClonedVirtualMachineNetworkMap{\n\t\t\t\t\"net0\": \u0026vm.ClonedVirtualMachineNetworkArgs{\n\t\t\t\t\tBridge: pulumi.String(\"vmbr0\"),\n\t\t\t\t\tModel:  pulumi.String(\"virtio\"),\n\t\t\t\t\tTag:    pulumi.Int(100),\n\t\t\t\t},\n\t\t\t\t\"net1\": \u0026vm.ClonedVirtualMachineNetworkArgs{\n\t\t\t\t\tBridge:     pulumi.String(\"vmbr1\"),\n\t\t\t\t\tModel:      pulumi.String(\"virtio\"),\n\t\t\t\t\tFirewall:   pulumi.Bool(true),\n\t\t\t\t\tMacAddress: pulumi.String(\"BC:24:11:2E:C5:00\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tCpu: \u0026vm.ClonedVirtualMachineCpuArgs{\n\t\t\t\tCores: pulumi.Int(2),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Example 3: Clone with disk management\n\t\t_, err = vm.NewClonedVirtualMachine(ctx, \"disk_managed\", \u0026vm.ClonedVirtualMachineArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tName:     pulumi.String(\"disk-clone\"),\n\t\t\tClone: \u0026vm.ClonedVirtualMachineCloneArgs{\n\t\t\t\tSourceVmId:      pulumi.Int(100),\n\t\t\t\tTargetDatastore: pulumi.String(\"local-lvm\"),\n\t\t\t},\n\t\t\tDisk: vm.ClonedVirtualMachineDiskMap{\n\t\t\t\t\"scsi0\": \u0026vm.ClonedVirtualMachineDiskArgs{\n\t\t\t\t\tDatastoreId: pulumi.String(\"local-lvm\"),\n\t\t\t\t\tSizeGb:      pulumi.Int(50),\n\t\t\t\t\tDiscard:     pulumi.String(\"on\"),\n\t\t\t\t\tSsd:         pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\t\"scsi1\": \u0026vm.ClonedVirtualMachineDiskArgs{\n\t\t\t\t\tDatastoreId: pulumi.String(\"local-lvm\"),\n\t\t\t\t\tSizeGb:      pulumi.Int(100),\n\t\t\t\t\tBackup:      pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Example 4: Clone with explicit device deletion\n\t\t_, err = vm.NewClonedVirtualMachine(ctx, \"selective_delete\", \u0026vm.ClonedVirtualMachineArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tName:     pulumi.String(\"minimal-clone\"),\n\t\t\tClone: \u0026vm.ClonedVirtualMachineCloneArgs{\n\t\t\t\tSourceVmId: pulumi.Int(100),\n\t\t\t},\n\t\t\tNetwork: vm.ClonedVirtualMachineNetworkMap{\n\t\t\t\t\"net0\": \u0026vm.ClonedVirtualMachineNetworkArgs{\n\t\t\t\t\tBridge: pulumi.String(\"vmbr0\"),\n\t\t\t\t\tModel:  pulumi.String(\"virtio\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDelete: \u0026vm.ClonedVirtualMachineDeleteArgs{\n\t\t\t\tNetworks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"net1\"),\n\t\t\t\t\tpulumi.String(\"net2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Example 5: Full-featured clone with multiple settings\n\t\t_, err = vm.NewClonedVirtualMachine(ctx, \"full_featured\", \u0026vm.ClonedVirtualMachineArgs{\n\t\t\tNodeName:    pulumi.String(\"pve\"),\n\t\t\tName:        pulumi.String(\"production-vm\"),\n\t\t\tDescription: pulumi.String(\"Production VM cloned from template\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"production\"),\n\t\t\t\tpulumi.String(\"web\"),\n\t\t\t},\n\t\t\tClone: \u0026vm.ClonedVirtualMachineCloneArgs{\n\t\t\t\tSourceVmId:      pulumi.Int(100),\n\t\t\t\tSourceNodeName:  pulumi.String(\"pve\"),\n\t\t\t\tFull:            pulumi.Bool(true),\n\t\t\t\tTargetDatastore: pulumi.String(\"local-lvm\"),\n\t\t\t\tRetries:         pulumi.Int(3),\n\t\t\t},\n\t\t\tCpu: \u0026vm.ClonedVirtualMachineCpuArgs{\n\t\t\t\tCores:        pulumi.Int(8),\n\t\t\t\tSockets:      pulumi.Int(1),\n\t\t\t\tArchitecture: pulumi.String(\"x86_64\"),\n\t\t\t\tType:         pulumi.String(\"host\"),\n\t\t\t},\n\t\t\tMemory: \u0026vm.ClonedVirtualMachineMemoryArgs{\n\t\t\t\tSize:    pulumi.Int(8192),\n\t\t\t\tBalloon: pulumi.Int(2048),\n\t\t\t\tShares:  pulumi.Int(2000),\n\t\t\t},\n\t\t\tNetwork: vm.ClonedVirtualMachineNetworkMap{\n\t\t\t\t\"net0\": \u0026vm.ClonedVirtualMachineNetworkArgs{\n\t\t\t\t\tBridge:    pulumi.String(\"vmbr0\"),\n\t\t\t\t\tModel:     pulumi.String(\"virtio\"),\n\t\t\t\t\tTag:       pulumi.Int(100),\n\t\t\t\t\tFirewall:  pulumi.Bool(true),\n\t\t\t\t\tRateLimit: pulumi.Float64(100),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisk: vm.ClonedVirtualMachineDiskMap{\n\t\t\t\t\"scsi0\": \u0026vm.ClonedVirtualMachineDiskArgs{\n\t\t\t\t\tDatastoreId: pulumi.String(\"local-lvm\"),\n\t\t\t\t\tSizeGb:      pulumi.Int(100),\n\t\t\t\t\tDiscard:     pulumi.String(\"on\"),\n\t\t\t\t\tIothread:    pulumi.Bool(true),\n\t\t\t\t\tSsd:         pulumi.Bool(true),\n\t\t\t\t\tCache:       pulumi.String(\"writethrough\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tVga: \u0026vm.ClonedVirtualMachineVgaArgs{\n\t\t\t\tType:   pulumi.String(\"std\"),\n\t\t\t\tMemory: pulumi.Int(16),\n\t\t\t},\n\t\t\tDelete: \u0026vm.ClonedVirtualMachineDeleteArgs{\n\t\t\t\tDisks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ide2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tStopOnDestroy:                    pulumi.Bool(false),\n\t\t\tPurgeOnDestroy:                   pulumi.Bool(true),\n\t\t\tDeleteUnreferencedDisksOnDestroy: pulumi.Bool(false),\n\t\t\tTimeouts: \u0026vm.ClonedVirtualMachineTimeoutsArgs{\n\t\t\t\tCreate: pulumi.String(\"30m\"),\n\t\t\t\tUpdate: pulumi.String(\"30m\"),\n\t\t\t\tDelete: pulumi.String(\"10m\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Example 6: Linked clone for testing\n\t\t_, err = vm.NewClonedVirtualMachine(ctx, \"test_clone\", \u0026vm.ClonedVirtualMachineArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tName:     pulumi.String(\"test-vm\"),\n\t\t\tClone: \u0026vm.ClonedVirtualMachineCloneArgs{\n\t\t\t\tSourceVmId: pulumi.Int(100),\n\t\t\t\tFull:       pulumi.Bool(false),\n\t\t\t},\n\t\t\tCpu: \u0026vm.ClonedVirtualMachineCpuArgs{\n\t\t\t\tCores: pulumi.Int(2),\n\t\t\t},\n\t\t\tNetwork: vm.ClonedVirtualMachineNetworkMap{\n\t\t\t\t\"net0\": \u0026vm.ClonedVirtualMachineNetworkArgs{\n\t\t\t\t\tBridge: pulumi.String(\"vmbr0\"),\n\t\t\t\t\tModel:  pulumi.String(\"virtio\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Example 7: Clone with pool assignment\n\t\t_, err = vm.NewClonedVirtualMachine(ctx, \"pooled_clone\", \u0026vm.ClonedVirtualMachineArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tName:     pulumi.String(\"pooled-vm\"),\n\t\t\tClone: \u0026vm.ClonedVirtualMachineCloneArgs{\n\t\t\t\tSourceVmId: pulumi.Int(100),\n\t\t\t\tPoolId:     pulumi.String(\"production\"),\n\t\t\t},\n\t\t\tCpu: \u0026vm.ClonedVirtualMachineCpuArgs{\n\t\t\t\tCores: pulumi.Int(4),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Example 8: Import existing cloned VM\n\t\t_, err = vm.NewClonedVirtualMachine(ctx, \"imported\", \u0026vm.ClonedVirtualMachineArgs{\n\t\t\tVmId:     pulumi.String(\"123\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tClone: \u0026vm.ClonedVirtualMachineCloneArgs{\n\t\t\t\tSourceVmId: pulumi.Int(100),\n\t\t\t},\n\t\t\tCpu: \u0026vm.ClonedVirtualMachineCpuArgs{\n\t\t\t\tCores: pulumi.Int(4),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.VM.ClonedVirtualMachine;\nimport io.muehlbachler.pulumi.proxmoxve.VM.ClonedVirtualMachineArgs;\nimport com.pulumi.proxmoxve.VM.inputs.ClonedVirtualMachineCloneArgs;\nimport com.pulumi.proxmoxve.VM.inputs.ClonedVirtualMachineCpuArgs;\nimport com.pulumi.proxmoxve.VM.inputs.ClonedVirtualMachineDeleteArgs;\nimport com.pulumi.proxmoxve.VM.inputs.ClonedVirtualMachineMemoryArgs;\nimport com.pulumi.proxmoxve.VM.inputs.ClonedVirtualMachineVgaArgs;\nimport com.pulumi.proxmoxve.VM.inputs.ClonedVirtualMachineTimeoutsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Example 1: Basic clone with minimal management\n        var basicClone = new ClonedVirtualMachine(\"basicClone\", ClonedVirtualMachineArgs.builder()\n            .nodeName(\"pve\")\n            .name(\"basic-clone\")\n            .clone(ClonedVirtualMachineCloneArgs.builder()\n                .sourceVmId(100)\n                .full(true)\n                .build())\n            .cpu(ClonedVirtualMachineCpuArgs.builder()\n                .cores(4)\n                .build())\n            .build());\n\n        // Example 2: Clone with explicit network management\n        var networkManaged = new ClonedVirtualMachine(\"networkManaged\", ClonedVirtualMachineArgs.builder()\n            .nodeName(\"pve\")\n            .name(\"network-clone\")\n            .clone(ClonedVirtualMachineCloneArgs.builder()\n                .sourceVmId(100)\n                .build())\n            .network(Map.ofEntries(\n                Map.entry(\"net0\", ClonedVirtualMachineNetworkArgs.builder()\n                    .bridge(\"vmbr0\")\n                    .model(\"virtio\")\n                    .tag(100)\n                    .build()),\n                Map.entry(\"net1\", ClonedVirtualMachineNetworkArgs.builder()\n                    .bridge(\"vmbr1\")\n                    .model(\"virtio\")\n                    .firewall(true)\n                    .macAddress(\"BC:24:11:2E:C5:00\")\n                    .build())\n            ))\n            .cpu(ClonedVirtualMachineCpuArgs.builder()\n                .cores(2)\n                .build())\n            .build());\n\n        // Example 3: Clone with disk management\n        var diskManaged = new ClonedVirtualMachine(\"diskManaged\", ClonedVirtualMachineArgs.builder()\n            .nodeName(\"pve\")\n            .name(\"disk-clone\")\n            .clone(ClonedVirtualMachineCloneArgs.builder()\n                .sourceVmId(100)\n                .targetDatastore(\"local-lvm\")\n                .build())\n            .disk(Map.ofEntries(\n                Map.entry(\"scsi0\", ClonedVirtualMachineDiskArgs.builder()\n                    .datastoreId(\"local-lvm\")\n                    .sizeGb(50)\n                    .discard(\"on\")\n                    .ssd(true)\n                    .build()),\n                Map.entry(\"scsi1\", ClonedVirtualMachineDiskArgs.builder()\n                    .datastoreId(\"local-lvm\")\n                    .sizeGb(100)\n                    .backup(false)\n                    .build())\n            ))\n            .build());\n\n        // Example 4: Clone with explicit device deletion\n        var selectiveDelete = new ClonedVirtualMachine(\"selectiveDelete\", ClonedVirtualMachineArgs.builder()\n            .nodeName(\"pve\")\n            .name(\"minimal-clone\")\n            .clone(ClonedVirtualMachineCloneArgs.builder()\n                .sourceVmId(100)\n                .build())\n            .network(Map.of(\"net0\", ClonedVirtualMachineNetworkArgs.builder()\n                .bridge(\"vmbr0\")\n                .model(\"virtio\")\n                .build()))\n            .delete(ClonedVirtualMachineDeleteArgs.builder()\n                .networks(                \n                    \"net1\",\n                    \"net2\")\n                .build())\n            .build());\n\n        // Example 5: Full-featured clone with multiple settings\n        var fullFeatured = new ClonedVirtualMachine(\"fullFeatured\", ClonedVirtualMachineArgs.builder()\n            .nodeName(\"pve\")\n            .name(\"production-vm\")\n            .description(\"Production VM cloned from template\")\n            .tags(            \n                \"production\",\n                \"web\")\n            .clone(ClonedVirtualMachineCloneArgs.builder()\n                .sourceVmId(100)\n                .sourceNodeName(\"pve\")\n                .full(true)\n                .targetDatastore(\"local-lvm\")\n                .retries(3)\n                .build())\n            .cpu(ClonedVirtualMachineCpuArgs.builder()\n                .cores(8)\n                .sockets(1)\n                .architecture(\"x86_64\")\n                .type(\"host\")\n                .build())\n            .memory(ClonedVirtualMachineMemoryArgs.builder()\n                .size(8192)\n                .balloon(2048)\n                .shares(2000)\n                .build())\n            .network(Map.of(\"net0\", ClonedVirtualMachineNetworkArgs.builder()\n                .bridge(\"vmbr0\")\n                .model(\"virtio\")\n                .tag(100)\n                .firewall(true)\n                .rateLimit(100.0)\n                .build()))\n            .disk(Map.of(\"scsi0\", ClonedVirtualMachineDiskArgs.builder()\n                .datastoreId(\"local-lvm\")\n                .sizeGb(100)\n                .discard(\"on\")\n                .iothread(true)\n                .ssd(true)\n                .cache(\"writethrough\")\n                .build()))\n            .vga(ClonedVirtualMachineVgaArgs.builder()\n                .type(\"std\")\n                .memory(16)\n                .build())\n            .delete(ClonedVirtualMachineDeleteArgs.builder()\n                .disks(\"ide2\")\n                .build())\n            .stopOnDestroy(false)\n            .purgeOnDestroy(true)\n            .deleteUnreferencedDisksOnDestroy(false)\n            .timeouts(ClonedVirtualMachineTimeoutsArgs.builder()\n                .create(\"30m\")\n                .update(\"30m\")\n                .delete(\"10m\")\n                .build())\n            .build());\n\n        // Example 6: Linked clone for testing\n        var testClone = new ClonedVirtualMachine(\"testClone\", ClonedVirtualMachineArgs.builder()\n            .nodeName(\"pve\")\n            .name(\"test-vm\")\n            .clone(ClonedVirtualMachineCloneArgs.builder()\n                .sourceVmId(100)\n                .full(false)\n                .build())\n            .cpu(ClonedVirtualMachineCpuArgs.builder()\n                .cores(2)\n                .build())\n            .network(Map.of(\"net0\", ClonedVirtualMachineNetworkArgs.builder()\n                .bridge(\"vmbr0\")\n                .model(\"virtio\")\n                .build()))\n            .build());\n\n        // Example 7: Clone with pool assignment\n        var pooledClone = new ClonedVirtualMachine(\"pooledClone\", ClonedVirtualMachineArgs.builder()\n            .nodeName(\"pve\")\n            .name(\"pooled-vm\")\n            .clone(ClonedVirtualMachineCloneArgs.builder()\n                .sourceVmId(100)\n                .poolId(\"production\")\n                .build())\n            .cpu(ClonedVirtualMachineCpuArgs.builder()\n                .cores(4)\n                .build())\n            .build());\n\n        // Example 8: Import existing cloned VM\n        var imported = new ClonedVirtualMachine(\"imported\", ClonedVirtualMachineArgs.builder()\n            .vmId(\"123\")\n            .nodeName(\"pve\")\n            .clone(ClonedVirtualMachineCloneArgs.builder()\n                .sourceVmId(100)\n                .build())\n            .cpu(ClonedVirtualMachineCpuArgs.builder()\n                .cores(4)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Example 1: Basic clone with minimal management\n  basicClone:\n    type: proxmoxve:VM:ClonedVirtualMachine\n    name: basic_clone\n    properties:\n      nodeName: pve\n      name: basic-clone\n      clone:\n        sourceVmId: 100\n        full: true\n      cpu:\n        cores: 4\n  # Example 2: Clone with explicit network management\n  networkManaged:\n    type: proxmoxve:VM:ClonedVirtualMachine\n    name: network_managed\n    properties:\n      nodeName: pve\n      name: network-clone\n      clone:\n        sourceVmId: 100\n      network:\n        net0:\n          bridge: vmbr0\n          model: virtio\n          tag: 100\n        net1:\n          bridge: vmbr1\n          model: virtio\n          firewall: true\n          macAddress: BC:24:11:2E:C5:00\n      cpu:\n        cores: 2\n  # Example 3: Clone with disk management\n  diskManaged:\n    type: proxmoxve:VM:ClonedVirtualMachine\n    name: disk_managed\n    properties:\n      nodeName: pve\n      name: disk-clone\n      clone:\n        sourceVmId: 100\n        targetDatastore: local-lvm\n      disk:\n        scsi0:\n          datastoreId: local-lvm\n          sizeGb: 50\n          discard: on\n          ssd: true\n        scsi1:\n          datastoreId: local-lvm\n          sizeGb: 100\n          backup: false\n  # Example 4: Clone with explicit device deletion\n  selectiveDelete:\n    type: proxmoxve:VM:ClonedVirtualMachine\n    name: selective_delete\n    properties:\n      nodeName: pve\n      name: minimal-clone\n      clone:\n        sourceVmId: 100\n      network:\n        net0:\n          bridge: vmbr0\n          model: virtio\n      delete:\n        networks:\n          - net1\n          - net2\n  # Example 5: Full-featured clone with multiple settings\n  fullFeatured:\n    type: proxmoxve:VM:ClonedVirtualMachine\n    name: full_featured\n    properties:\n      nodeName: pve\n      name: production-vm\n      description: Production VM cloned from template\n      tags:\n        - production\n        - web\n      clone:\n        sourceVmId: 100\n        sourceNodeName: pve\n        full: true\n        targetDatastore: local-lvm\n        retries: 3\n      cpu:\n        cores: 8\n        sockets: 1\n        architecture: x86_64\n        type: host\n      memory:\n        size: 8192\n        balloon: 2048\n        shares: 2000\n      network:\n        net0:\n          bridge: vmbr0\n          model: virtio\n          tag: 100\n          firewall: true\n          rateLimit: 100\n      disk:\n        scsi0:\n          datastoreId: local-lvm\n          sizeGb: 100\n          discard: on\n          iothread: true\n          ssd: true\n          cache: writethrough\n      vga:\n        type: std\n        memory: 16\n      delete:\n        disks:\n          - ide2\n      stopOnDestroy: false # Shutdown gracefully instead of force stop\n      purgeOnDestroy: true\n      deleteUnreferencedDisksOnDestroy: false # Safety: don't delete unmanaged disks\n      timeouts:\n        create: 30m\n        update: 30m\n        delete: 10m\n  # Example 6: Linked clone for testing\n  testClone:\n    type: proxmoxve:VM:ClonedVirtualMachine\n    name: test_clone\n    properties:\n      nodeName: pve\n      name: test-vm\n      clone:\n        sourceVmId: 100\n        full: false\n      cpu:\n        cores: 2\n      network:\n        net0:\n          bridge: vmbr0\n          model: virtio\n  # Example 7: Clone with pool assignment\n  pooledClone:\n    type: proxmoxve:VM:ClonedVirtualMachine\n    name: pooled_clone\n    properties:\n      nodeName: pve\n      name: pooled-vm\n      clone:\n        sourceVmId: 100\n        poolId: production\n      cpu:\n        cores: 4\n  # Example 8: Import existing cloned VM\n  imported:\n    type: proxmoxve:VM:ClonedVirtualMachine\n    properties:\n      vmId: 123 # VM ID to manage\n      nodeName: pve\n      clone:\n        sourceVmId: 100\n      cpu:\n        cores: 4\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"cdrom":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:VM/ClonedVirtualMachineCdrom:ClonedVirtualMachineCdrom"},"description":"The CD-ROM configuration. The key is the interface of the CD-ROM, could be one of `ideN`, `sataN`, `scsiN`, where N is the index of the interface. Note that \u003cspan pulumi-lang-nodejs=\"`q35`\" pulumi-lang-dotnet=\"`Q35`\" pulumi-lang-go=\"`q35`\" pulumi-lang-python=\"`q35`\" pulumi-lang-yaml=\"`q35`\" pulumi-lang-java=\"`q35`\"\u003e`q35`\u003c/span\u003e machine type only supports \u003cspan pulumi-lang-nodejs=\"`ide0`\" pulumi-lang-dotnet=\"`Ide0`\" pulumi-lang-go=\"`ide0`\" pulumi-lang-python=\"`ide0`\" pulumi-lang-yaml=\"`ide0`\" pulumi-lang-java=\"`ide0`\"\u003e`ide0`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`ide2`\" pulumi-lang-dotnet=\"`Ide2`\" pulumi-lang-go=\"`ide2`\" pulumi-lang-python=\"`ide2`\" pulumi-lang-yaml=\"`ide2`\" pulumi-lang-java=\"`ide2`\"\u003e`ide2`\u003c/span\u003e of IDE interfaces.\n"},"clone":{"$ref":"#/types/proxmoxve:VM/ClonedVirtualMachineClone:ClonedVirtualMachineClone","description":"Clone settings. Changes require recreation.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/ClonedVirtualMachineCpu:ClonedVirtualMachineCpu","description":"The CPU configuration.\n"},"delete":{"$ref":"#/types/proxmoxve:VM/ClonedVirtualMachineDelete:ClonedVirtualMachineDelete","description":"Explicit deletions to perform after cloning/updating. Entries persist across applies.\n"},"deleteUnreferencedDisksOnDestroy":{"type":"boolean"},"description":{"type":"string","description":"Optional VM description applied after cloning.\n"},"disk":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:VM/ClonedVirtualMachineDisk:ClonedVirtualMachineDisk"},"description":"Disks keyed by slot (scsi0, virtio0, sata0, ide0, ...). Only listed keys are managed.\n"},"memory":{"$ref":"#/types/proxmoxve:VM/ClonedVirtualMachineMemory:ClonedVirtualMachineMemory","description":"Memory configuration for the VM. Uses Proxmox memory ballooning to allow dynamic memory allocation. The \u003cspan pulumi-lang-nodejs=\"`size`\" pulumi-lang-dotnet=\"`Size`\" pulumi-lang-go=\"`size`\" pulumi-lang-python=\"`size`\" pulumi-lang-yaml=\"`size`\" pulumi-lang-java=\"`size`\"\u003e`size`\u003c/span\u003e sets the total available RAM, while \u003cspan pulumi-lang-nodejs=\"`balloon`\" pulumi-lang-dotnet=\"`Balloon`\" pulumi-lang-go=\"`balloon`\" pulumi-lang-python=\"`balloon`\" pulumi-lang-yaml=\"`balloon`\" pulumi-lang-java=\"`balloon`\"\u003e`balloon`\u003c/span\u003e sets the guaranteed floor. The host can reclaim memory between these values when needed.\n"},"name":{"type":"string","description":"Optional VM name override applied after cloning.\n"},"network":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:VM/ClonedVirtualMachineNetwork:ClonedVirtualMachineNetwork"},"description":"Network devices keyed by slot (net0, net1, ...). Only listed keys are managed.\n"},"nodeName":{"type":"string","description":"Target node for the cloned VM.\n"},"purgeOnDestroy":{"type":"boolean","description":"Purge backup configuration on destroy.\n"},"rng":{"$ref":"#/types/proxmoxve:VM/ClonedVirtualMachineRng:ClonedVirtualMachineRng","description":"Configure the RNG (Random Number Generator) device. The RNG device provides entropy to guests to ensure good quality random numbers for guest applications that require them. Can only be set by `root@pam.` See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) for more information.\n"},"stopOnDestroy":{"type":"boolean","description":"Stop the VM on destroy (instead of shutdown).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags applied after cloning.\n"},"timeouts":{"$ref":"#/types/proxmoxve:VM/ClonedVirtualMachineTimeouts:ClonedVirtualMachineTimeouts"},"vga":{"$ref":"#/types/proxmoxve:VM/ClonedVirtualMachineVga:ClonedVirtualMachineVga","description":"Configure the VGA Hardware. If you want to use high resolution modes (\u003e= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is \u003cspan pulumi-lang-nodejs=\"`std`\" pulumi-lang-dotnet=\"`Std`\" pulumi-lang-go=\"`std`\" pulumi-lang-python=\"`std`\" pulumi-lang-yaml=\"`std`\" pulumi-lang-java=\"`std`\"\u003e`std`\u003c/span\u003e for all OS types besides some Windows versions (XP and older) which use \u003cspan pulumi-lang-nodejs=\"`cirrus`\" pulumi-lang-dotnet=\"`Cirrus`\" pulumi-lang-go=\"`cirrus`\" pulumi-lang-python=\"`cirrus`\" pulumi-lang-yaml=\"`cirrus`\" pulumi-lang-java=\"`cirrus`\"\u003e`cirrus`\u003c/span\u003e. The \u003cspan pulumi-lang-nodejs=\"`qxl`\" pulumi-lang-dotnet=\"`Qxl`\" pulumi-lang-go=\"`qxl`\" pulumi-lang-python=\"`qxl`\" pulumi-lang-yaml=\"`qxl`\" pulumi-lang-java=\"`qxl`\"\u003e`qxl`\u003c/span\u003e option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays themself. You can also run without any graphic card, using a serial device as terminal. See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) section 10.2.8 for more information and available configuration parameters.\n"},"vmId":{"type":"string","description":"The VM identifier in the Proxmox cluster.\n"}},"required":["clone","deleteUnreferencedDisksOnDestroy","vmId","name","nodeName","purgeOnDestroy","stopOnDestroy"],"inputProperties":{"cdrom":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:VM/ClonedVirtualMachineCdrom:ClonedVirtualMachineCdrom"},"description":"The CD-ROM configuration. The key is the interface of the CD-ROM, could be one of `ideN`, `sataN`, `scsiN`, where N is the index of the interface. Note that \u003cspan pulumi-lang-nodejs=\"`q35`\" pulumi-lang-dotnet=\"`Q35`\" pulumi-lang-go=\"`q35`\" pulumi-lang-python=\"`q35`\" pulumi-lang-yaml=\"`q35`\" pulumi-lang-java=\"`q35`\"\u003e`q35`\u003c/span\u003e machine type only supports \u003cspan pulumi-lang-nodejs=\"`ide0`\" pulumi-lang-dotnet=\"`Ide0`\" pulumi-lang-go=\"`ide0`\" pulumi-lang-python=\"`ide0`\" pulumi-lang-yaml=\"`ide0`\" pulumi-lang-java=\"`ide0`\"\u003e`ide0`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`ide2`\" pulumi-lang-dotnet=\"`Ide2`\" pulumi-lang-go=\"`ide2`\" pulumi-lang-python=\"`ide2`\" pulumi-lang-yaml=\"`ide2`\" pulumi-lang-java=\"`ide2`\"\u003e`ide2`\u003c/span\u003e of IDE interfaces.\n"},"clone":{"$ref":"#/types/proxmoxve:VM/ClonedVirtualMachineClone:ClonedVirtualMachineClone","description":"Clone settings. Changes require recreation.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/ClonedVirtualMachineCpu:ClonedVirtualMachineCpu","description":"The CPU configuration.\n"},"delete":{"$ref":"#/types/proxmoxve:VM/ClonedVirtualMachineDelete:ClonedVirtualMachineDelete","description":"Explicit deletions to perform after cloning/updating. Entries persist across applies.\n"},"deleteUnreferencedDisksOnDestroy":{"type":"boolean"},"description":{"type":"string","description":"Optional VM description applied after cloning.\n"},"disk":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:VM/ClonedVirtualMachineDisk:ClonedVirtualMachineDisk"},"description":"Disks keyed by slot (scsi0, virtio0, sata0, ide0, ...). Only listed keys are managed.\n"},"memory":{"$ref":"#/types/proxmoxve:VM/ClonedVirtualMachineMemory:ClonedVirtualMachineMemory","description":"Memory configuration for the VM. Uses Proxmox memory ballooning to allow dynamic memory allocation. The \u003cspan pulumi-lang-nodejs=\"`size`\" pulumi-lang-dotnet=\"`Size`\" pulumi-lang-go=\"`size`\" pulumi-lang-python=\"`size`\" pulumi-lang-yaml=\"`size`\" pulumi-lang-java=\"`size`\"\u003e`size`\u003c/span\u003e sets the total available RAM, while \u003cspan pulumi-lang-nodejs=\"`balloon`\" pulumi-lang-dotnet=\"`Balloon`\" pulumi-lang-go=\"`balloon`\" pulumi-lang-python=\"`balloon`\" pulumi-lang-yaml=\"`balloon`\" pulumi-lang-java=\"`balloon`\"\u003e`balloon`\u003c/span\u003e sets the guaranteed floor. The host can reclaim memory between these values when needed.\n"},"name":{"type":"string","description":"Optional VM name override applied after cloning.\n"},"network":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:VM/ClonedVirtualMachineNetwork:ClonedVirtualMachineNetwork"},"description":"Network devices keyed by slot (net0, net1, ...). Only listed keys are managed.\n"},"nodeName":{"type":"string","description":"Target node for the cloned VM.\n"},"purgeOnDestroy":{"type":"boolean","description":"Purge backup configuration on destroy.\n"},"rng":{"$ref":"#/types/proxmoxve:VM/ClonedVirtualMachineRng:ClonedVirtualMachineRng","description":"Configure the RNG (Random Number Generator) device. The RNG device provides entropy to guests to ensure good quality random numbers for guest applications that require them. Can only be set by `root@pam.` See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) for more information.\n"},"stopOnDestroy":{"type":"boolean","description":"Stop the VM on destroy (instead of shutdown).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags applied after cloning.\n"},"timeouts":{"$ref":"#/types/proxmoxve:VM/ClonedVirtualMachineTimeouts:ClonedVirtualMachineTimeouts"},"vga":{"$ref":"#/types/proxmoxve:VM/ClonedVirtualMachineVga:ClonedVirtualMachineVga","description":"Configure the VGA Hardware. If you want to use high resolution modes (\u003e= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is \u003cspan pulumi-lang-nodejs=\"`std`\" pulumi-lang-dotnet=\"`Std`\" pulumi-lang-go=\"`std`\" pulumi-lang-python=\"`std`\" pulumi-lang-yaml=\"`std`\" pulumi-lang-java=\"`std`\"\u003e`std`\u003c/span\u003e for all OS types besides some Windows versions (XP and older) which use \u003cspan pulumi-lang-nodejs=\"`cirrus`\" pulumi-lang-dotnet=\"`Cirrus`\" pulumi-lang-go=\"`cirrus`\" pulumi-lang-python=\"`cirrus`\" pulumi-lang-yaml=\"`cirrus`\" pulumi-lang-java=\"`cirrus`\"\u003e`cirrus`\u003c/span\u003e. The \u003cspan pulumi-lang-nodejs=\"`qxl`\" pulumi-lang-dotnet=\"`Qxl`\" pulumi-lang-go=\"`qxl`\" pulumi-lang-python=\"`qxl`\" pulumi-lang-yaml=\"`qxl`\" pulumi-lang-java=\"`qxl`\"\u003e`qxl`\u003c/span\u003e option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays themself. You can also run without any graphic card, using a serial device as terminal. See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) section 10.2.8 for more information and available configuration parameters.\n"},"vmId":{"type":"string","description":"The VM identifier in the Proxmox cluster.\n"}},"requiredInputs":["clone","nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering ClonedVirtualMachine resources.\n","properties":{"cdrom":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:VM/ClonedVirtualMachineCdrom:ClonedVirtualMachineCdrom"},"description":"The CD-ROM configuration. The key is the interface of the CD-ROM, could be one of `ideN`, `sataN`, `scsiN`, where N is the index of the interface. Note that \u003cspan pulumi-lang-nodejs=\"`q35`\" pulumi-lang-dotnet=\"`Q35`\" pulumi-lang-go=\"`q35`\" pulumi-lang-python=\"`q35`\" pulumi-lang-yaml=\"`q35`\" pulumi-lang-java=\"`q35`\"\u003e`q35`\u003c/span\u003e machine type only supports \u003cspan pulumi-lang-nodejs=\"`ide0`\" pulumi-lang-dotnet=\"`Ide0`\" pulumi-lang-go=\"`ide0`\" pulumi-lang-python=\"`ide0`\" pulumi-lang-yaml=\"`ide0`\" pulumi-lang-java=\"`ide0`\"\u003e`ide0`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`ide2`\" pulumi-lang-dotnet=\"`Ide2`\" pulumi-lang-go=\"`ide2`\" pulumi-lang-python=\"`ide2`\" pulumi-lang-yaml=\"`ide2`\" pulumi-lang-java=\"`ide2`\"\u003e`ide2`\u003c/span\u003e of IDE interfaces.\n"},"clone":{"$ref":"#/types/proxmoxve:VM/ClonedVirtualMachineClone:ClonedVirtualMachineClone","description":"Clone settings. Changes require recreation.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/ClonedVirtualMachineCpu:ClonedVirtualMachineCpu","description":"The CPU configuration.\n"},"delete":{"$ref":"#/types/proxmoxve:VM/ClonedVirtualMachineDelete:ClonedVirtualMachineDelete","description":"Explicit deletions to perform after cloning/updating. Entries persist across applies.\n"},"deleteUnreferencedDisksOnDestroy":{"type":"boolean"},"description":{"type":"string","description":"Optional VM description applied after cloning.\n"},"disk":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:VM/ClonedVirtualMachineDisk:ClonedVirtualMachineDisk"},"description":"Disks keyed by slot (scsi0, virtio0, sata0, ide0, ...). Only listed keys are managed.\n"},"memory":{"$ref":"#/types/proxmoxve:VM/ClonedVirtualMachineMemory:ClonedVirtualMachineMemory","description":"Memory configuration for the VM. Uses Proxmox memory ballooning to allow dynamic memory allocation. The \u003cspan pulumi-lang-nodejs=\"`size`\" pulumi-lang-dotnet=\"`Size`\" pulumi-lang-go=\"`size`\" pulumi-lang-python=\"`size`\" pulumi-lang-yaml=\"`size`\" pulumi-lang-java=\"`size`\"\u003e`size`\u003c/span\u003e sets the total available RAM, while \u003cspan pulumi-lang-nodejs=\"`balloon`\" pulumi-lang-dotnet=\"`Balloon`\" pulumi-lang-go=\"`balloon`\" pulumi-lang-python=\"`balloon`\" pulumi-lang-yaml=\"`balloon`\" pulumi-lang-java=\"`balloon`\"\u003e`balloon`\u003c/span\u003e sets the guaranteed floor. The host can reclaim memory between these values when needed.\n"},"name":{"type":"string","description":"Optional VM name override applied after cloning.\n"},"network":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:VM/ClonedVirtualMachineNetwork:ClonedVirtualMachineNetwork"},"description":"Network devices keyed by slot (net0, net1, ...). Only listed keys are managed.\n"},"nodeName":{"type":"string","description":"Target node for the cloned VM.\n"},"purgeOnDestroy":{"type":"boolean","description":"Purge backup configuration on destroy.\n"},"rng":{"$ref":"#/types/proxmoxve:VM/ClonedVirtualMachineRng:ClonedVirtualMachineRng","description":"Configure the RNG (Random Number Generator) device. The RNG device provides entropy to guests to ensure good quality random numbers for guest applications that require them. Can only be set by `root@pam.` See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) for more information.\n"},"stopOnDestroy":{"type":"boolean","description":"Stop the VM on destroy (instead of shutdown).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags applied after cloning.\n"},"timeouts":{"$ref":"#/types/proxmoxve:VM/ClonedVirtualMachineTimeouts:ClonedVirtualMachineTimeouts"},"vga":{"$ref":"#/types/proxmoxve:VM/ClonedVirtualMachineVga:ClonedVirtualMachineVga","description":"Configure the VGA Hardware. If you want to use high resolution modes (\u003e= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is \u003cspan pulumi-lang-nodejs=\"`std`\" pulumi-lang-dotnet=\"`Std`\" pulumi-lang-go=\"`std`\" pulumi-lang-python=\"`std`\" pulumi-lang-yaml=\"`std`\" pulumi-lang-java=\"`std`\"\u003e`std`\u003c/span\u003e for all OS types besides some Windows versions (XP and older) which use \u003cspan pulumi-lang-nodejs=\"`cirrus`\" pulumi-lang-dotnet=\"`Cirrus`\" pulumi-lang-go=\"`cirrus`\" pulumi-lang-python=\"`cirrus`\" pulumi-lang-yaml=\"`cirrus`\" pulumi-lang-java=\"`cirrus`\"\u003e`cirrus`\u003c/span\u003e. The \u003cspan pulumi-lang-nodejs=\"`qxl`\" pulumi-lang-dotnet=\"`Qxl`\" pulumi-lang-go=\"`qxl`\" pulumi-lang-python=\"`qxl`\" pulumi-lang-yaml=\"`qxl`\" pulumi-lang-java=\"`qxl`\"\u003e`qxl`\u003c/span\u003e option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays themself. You can also run without any graphic card, using a serial device as terminal. See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) section 10.2.8 for more information and available configuration parameters.\n"},"vmId":{"type":"string","description":"The VM identifier in the Proxmox cluster.\n"}},"type":"object"}},"proxmoxve:VM/virtualMachine2:VirtualMachine2":{"description":"!\u003e **DO NOT USE**\nThis is an experimental implementation of a Proxmox VM resource using Plugin Framework.\u003cbr\u003e\u003cbr\u003eIt is a Proof of Concept, highly experimental and **will** change in future. It does not support all features of the Proxmox API for VMs and **MUST NOT** be used in production.\n\n\u003e Many attributes are marked as **optional** _and_ **computed** in the schema,\nhence you may seem added to the plan with \"(known after apply)\" status, even if they are not set in the configuration.\nThis is done to support the \u003cspan pulumi-lang-nodejs=\"`clone`\" pulumi-lang-dotnet=\"`Clone`\" pulumi-lang-go=\"`clone`\" pulumi-lang-python=\"`clone`\" pulumi-lang-yaml=\"`clone`\" pulumi-lang-java=\"`clone`\"\u003e`clone`\u003c/span\u003e operation, when a VM is created from an existing VM or template,\nand the source attributes are copied to the clone.\u003cbr\u003e\u003cbr\u003e\nComputed attributes allow the provider to set those attributes without user input.\nThe attributes are also marked as optional to allow the practitioner to set (or overwrite) them if needed.\n","properties":{"cdrom":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Cdrom:VirtualMachine2Cdrom"},"description":"The CD-ROM configuration. The key is the interface of the CD-ROM, could be one of `ideN`, `sataN`, `scsiN`, where N is the index of the interface. Note that \u003cspan pulumi-lang-nodejs=\"`q35`\" pulumi-lang-dotnet=\"`Q35`\" pulumi-lang-go=\"`q35`\" pulumi-lang-python=\"`q35`\" pulumi-lang-yaml=\"`q35`\" pulumi-lang-java=\"`q35`\"\u003e`q35`\u003c/span\u003e machine type only supports \u003cspan pulumi-lang-nodejs=\"`ide0`\" pulumi-lang-dotnet=\"`Ide0`\" pulumi-lang-go=\"`ide0`\" pulumi-lang-python=\"`ide0`\" pulumi-lang-yaml=\"`ide0`\" pulumi-lang-java=\"`ide0`\"\u003e`ide0`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`ide2`\" pulumi-lang-dotnet=\"`Ide2`\" pulumi-lang-go=\"`ide2`\" pulumi-lang-python=\"`ide2`\" pulumi-lang-yaml=\"`ide2`\" pulumi-lang-java=\"`ide2`\"\u003e`ide2`\u003c/span\u003e of IDE interfaces.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Cpu:VirtualMachine2Cpu","description":"The CPU configuration.\n"},"deleteUnreferencedDisksOnDestroy":{"type":"boolean","description":"Set to true to delete unreferenced disks on destroy (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"description":{"type":"string","description":"The description of the VM.\n"},"name":{"type":"string","description":"The name of the VM. Doesn't have to be unique.\n"},"nodeName":{"type":"string","description":"The name of the node where the VM is provisioned.\n"},"purgeOnDestroy":{"type":"boolean","description":"Set to true to purge the VM from backup configurations on destroy (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"rng":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Rng:VirtualMachine2Rng","description":"Configure the RNG (Random Number Generator) device. The RNG device provides entropy to guests to ensure good quality random numbers for guest applications that require them. Can only be set by `root@pam.` See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) for more information.\n"},"stopOnDestroy":{"type":"boolean","description":"Set to true to stop (rather than shutdown) the VM on destroy (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags assigned to the VM.\n"},"template":{"type":"boolean","description":"Set to true to create a VM template.\n"},"timeouts":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Timeouts:VirtualMachine2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Vga:VirtualMachine2Vga","description":"Configure the VGA Hardware. If you want to use high resolution modes (\u003e= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is \u003cspan pulumi-lang-nodejs=\"`std`\" pulumi-lang-dotnet=\"`Std`\" pulumi-lang-go=\"`std`\" pulumi-lang-python=\"`std`\" pulumi-lang-yaml=\"`std`\" pulumi-lang-java=\"`std`\"\u003e`std`\u003c/span\u003e for all OS types besides some Windows versions (XP and older) which use \u003cspan pulumi-lang-nodejs=\"`cirrus`\" pulumi-lang-dotnet=\"`Cirrus`\" pulumi-lang-go=\"`cirrus`\" pulumi-lang-python=\"`cirrus`\" pulumi-lang-yaml=\"`cirrus`\" pulumi-lang-java=\"`cirrus`\"\u003e`cirrus`\u003c/span\u003e. The \u003cspan pulumi-lang-nodejs=\"`qxl`\" pulumi-lang-dotnet=\"`Qxl`\" pulumi-lang-go=\"`qxl`\" pulumi-lang-python=\"`qxl`\" pulumi-lang-yaml=\"`qxl`\" pulumi-lang-java=\"`qxl`\"\u003e`qxl`\u003c/span\u003e option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays themself. You can also run without any graphic card, using a serial device as terminal. See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) section 10.2.8 for more information and available configuration parameters.\n"}},"required":["cdrom","cpu","deleteUnreferencedDisksOnDestroy","name","nodeName","purgeOnDestroy","rng","stopOnDestroy","tags","vga"],"inputProperties":{"cdrom":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Cdrom:VirtualMachine2Cdrom"},"description":"The CD-ROM configuration. The key is the interface of the CD-ROM, could be one of `ideN`, `sataN`, `scsiN`, where N is the index of the interface. Note that \u003cspan pulumi-lang-nodejs=\"`q35`\" pulumi-lang-dotnet=\"`Q35`\" pulumi-lang-go=\"`q35`\" pulumi-lang-python=\"`q35`\" pulumi-lang-yaml=\"`q35`\" pulumi-lang-java=\"`q35`\"\u003e`q35`\u003c/span\u003e machine type only supports \u003cspan pulumi-lang-nodejs=\"`ide0`\" pulumi-lang-dotnet=\"`Ide0`\" pulumi-lang-go=\"`ide0`\" pulumi-lang-python=\"`ide0`\" pulumi-lang-yaml=\"`ide0`\" pulumi-lang-java=\"`ide0`\"\u003e`ide0`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`ide2`\" pulumi-lang-dotnet=\"`Ide2`\" pulumi-lang-go=\"`ide2`\" pulumi-lang-python=\"`ide2`\" pulumi-lang-yaml=\"`ide2`\" pulumi-lang-java=\"`ide2`\"\u003e`ide2`\u003c/span\u003e of IDE interfaces.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Cpu:VirtualMachine2Cpu","description":"The CPU configuration.\n"},"deleteUnreferencedDisksOnDestroy":{"type":"boolean","description":"Set to true to delete unreferenced disks on destroy (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"description":{"type":"string","description":"The description of the VM.\n"},"name":{"type":"string","description":"The name of the VM. Doesn't have to be unique.\n"},"nodeName":{"type":"string","description":"The name of the node where the VM is provisioned.\n"},"purgeOnDestroy":{"type":"boolean","description":"Set to true to purge the VM from backup configurations on destroy (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"rng":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Rng:VirtualMachine2Rng","description":"Configure the RNG (Random Number Generator) device. The RNG device provides entropy to guests to ensure good quality random numbers for guest applications that require them. Can only be set by `root@pam.` See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) for more information.\n"},"stopOnDestroy":{"type":"boolean","description":"Set to true to stop (rather than shutdown) the VM on destroy (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags assigned to the VM.\n"},"template":{"type":"boolean","description":"Set to true to create a VM template.\n"},"timeouts":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Timeouts:VirtualMachine2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Vga:VirtualMachine2Vga","description":"Configure the VGA Hardware. If you want to use high resolution modes (\u003e= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is \u003cspan pulumi-lang-nodejs=\"`std`\" pulumi-lang-dotnet=\"`Std`\" pulumi-lang-go=\"`std`\" pulumi-lang-python=\"`std`\" pulumi-lang-yaml=\"`std`\" pulumi-lang-java=\"`std`\"\u003e`std`\u003c/span\u003e for all OS types besides some Windows versions (XP and older) which use \u003cspan pulumi-lang-nodejs=\"`cirrus`\" pulumi-lang-dotnet=\"`Cirrus`\" pulumi-lang-go=\"`cirrus`\" pulumi-lang-python=\"`cirrus`\" pulumi-lang-yaml=\"`cirrus`\" pulumi-lang-java=\"`cirrus`\"\u003e`cirrus`\u003c/span\u003e. The \u003cspan pulumi-lang-nodejs=\"`qxl`\" pulumi-lang-dotnet=\"`Qxl`\" pulumi-lang-go=\"`qxl`\" pulumi-lang-python=\"`qxl`\" pulumi-lang-yaml=\"`qxl`\" pulumi-lang-java=\"`qxl`\"\u003e`qxl`\u003c/span\u003e option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays themself. You can also run without any graphic card, using a serial device as terminal. See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) section 10.2.8 for more information and available configuration parameters.\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering VirtualMachine2 resources.\n","properties":{"cdrom":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Cdrom:VirtualMachine2Cdrom"},"description":"The CD-ROM configuration. The key is the interface of the CD-ROM, could be one of `ideN`, `sataN`, `scsiN`, where N is the index of the interface. Note that \u003cspan pulumi-lang-nodejs=\"`q35`\" pulumi-lang-dotnet=\"`Q35`\" pulumi-lang-go=\"`q35`\" pulumi-lang-python=\"`q35`\" pulumi-lang-yaml=\"`q35`\" pulumi-lang-java=\"`q35`\"\u003e`q35`\u003c/span\u003e machine type only supports \u003cspan pulumi-lang-nodejs=\"`ide0`\" pulumi-lang-dotnet=\"`Ide0`\" pulumi-lang-go=\"`ide0`\" pulumi-lang-python=\"`ide0`\" pulumi-lang-yaml=\"`ide0`\" pulumi-lang-java=\"`ide0`\"\u003e`ide0`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`ide2`\" pulumi-lang-dotnet=\"`Ide2`\" pulumi-lang-go=\"`ide2`\" pulumi-lang-python=\"`ide2`\" pulumi-lang-yaml=\"`ide2`\" pulumi-lang-java=\"`ide2`\"\u003e`ide2`\u003c/span\u003e of IDE interfaces.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Cpu:VirtualMachine2Cpu","description":"The CPU configuration.\n"},"deleteUnreferencedDisksOnDestroy":{"type":"boolean","description":"Set to true to delete unreferenced disks on destroy (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"description":{"type":"string","description":"The description of the VM.\n"},"name":{"type":"string","description":"The name of the VM. Doesn't have to be unique.\n"},"nodeName":{"type":"string","description":"The name of the node where the VM is provisioned.\n"},"purgeOnDestroy":{"type":"boolean","description":"Set to true to purge the VM from backup configurations on destroy (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"rng":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Rng:VirtualMachine2Rng","description":"Configure the RNG (Random Number Generator) device. The RNG device provides entropy to guests to ensure good quality random numbers for guest applications that require them. Can only be set by `root@pam.` See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) for more information.\n"},"stopOnDestroy":{"type":"boolean","description":"Set to true to stop (rather than shutdown) the VM on destroy (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags assigned to the VM.\n"},"template":{"type":"boolean","description":"Set to true to create a VM template.\n"},"timeouts":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Timeouts:VirtualMachine2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Vga:VirtualMachine2Vga","description":"Configure the VGA Hardware. If you want to use high resolution modes (\u003e= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is \u003cspan pulumi-lang-nodejs=\"`std`\" pulumi-lang-dotnet=\"`Std`\" pulumi-lang-go=\"`std`\" pulumi-lang-python=\"`std`\" pulumi-lang-yaml=\"`std`\" pulumi-lang-java=\"`std`\"\u003e`std`\u003c/span\u003e for all OS types besides some Windows versions (XP and older) which use \u003cspan pulumi-lang-nodejs=\"`cirrus`\" pulumi-lang-dotnet=\"`Cirrus`\" pulumi-lang-go=\"`cirrus`\" pulumi-lang-python=\"`cirrus`\" pulumi-lang-yaml=\"`cirrus`\" pulumi-lang-java=\"`cirrus`\"\u003e`cirrus`\u003c/span\u003e. The \u003cspan pulumi-lang-nodejs=\"`qxl`\" pulumi-lang-dotnet=\"`Qxl`\" pulumi-lang-go=\"`qxl`\" pulumi-lang-python=\"`qxl`\" pulumi-lang-yaml=\"`qxl`\" pulumi-lang-java=\"`qxl`\"\u003e`qxl`\u003c/span\u003e option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays themself. You can also run without any graphic card, using a serial device as terminal. See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) section 10.2.8 for more information and available configuration parameters.\n"}},"type":"object"}},"proxmoxve:VM/virtualMachine:VirtualMachine":{"description":"\n\n## Import\n\nInstances can be imported using the `node_name` and the `vm_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:VM/virtualMachine:VirtualMachine ubuntu_vm first-node/4321\n```\n\n","properties":{"acpi":{"type":"boolean","description":"Whether to enable ACPI (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"agent":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAgent:VirtualMachineAgent","description":"The QEMU agent configuration.\n"},"amdSev":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAmdSev:VirtualMachineAmdSev","description":"Secure Encrypted Virtualization (SEV) features by AMD CPUs.\n"},"audioDevice":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAudioDevice:VirtualMachineAudioDevice","description":"An audio device.\n"},"bios":{"type":"string","description":"The BIOS implementation (defaults to \u003cspan pulumi-lang-nodejs=\"`seabios`\" pulumi-lang-dotnet=\"`Seabios`\" pulumi-lang-go=\"`seabios`\" pulumi-lang-python=\"`seabios`\" pulumi-lang-yaml=\"`seabios`\" pulumi-lang-java=\"`seabios`\"\u003e`seabios`\u003c/span\u003e).\n"},"bootOrders":{"type":"array","items":{"type":"string"},"description":"Specify a list of devices to boot from in the order they appear in the list.\n"},"cdrom":{"$ref":"#/types/proxmoxve:VM/VirtualMachineCdrom:VirtualMachineCdrom","description":"The CD-ROM configuration.\n"},"clone":{"$ref":"#/types/proxmoxve:VM/VirtualMachineClone:VirtualMachineClone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/VirtualMachineCpu:VirtualMachineCpu","description":"The CPU configuration.\n"},"deleteUnreferencedDisksOnDestroy":{"type":"boolean","description":"Whether to delete unreferenced disks on destroy (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e)\n"},"description":{"type":"string","description":"The description.\n"},"disks":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineDisk:VirtualMachineDisk"},"description":"A disk (multiple blocks supported).\n"},"efiDisk":{"$ref":"#/types/proxmoxve:VM/VirtualMachineEfiDisk:VirtualMachineEfiDisk","description":"The efi disk device (required if \u003cspan pulumi-lang-nodejs=\"`bios`\" pulumi-lang-dotnet=\"`Bios`\" pulumi-lang-go=\"`bios`\" pulumi-lang-python=\"`bios`\" pulumi-lang-yaml=\"`bios`\" pulumi-lang-java=\"`bios`\"\u003e`bios`\u003c/span\u003e is set\nto \u003cspan pulumi-lang-nodejs=\"`ovmf`\" pulumi-lang-dotnet=\"`Ovmf`\" pulumi-lang-go=\"`ovmf`\" pulumi-lang-python=\"`ovmf`\" pulumi-lang-yaml=\"`ovmf`\" pulumi-lang-java=\"`ovmf`\"\u003e`ovmf`\u003c/span\u003e)\n"},"hookScriptFileId":{"type":"string","description":"The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).\n"},"hostpcis":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineHostpci:VirtualMachineHostpci"},"description":"A host PCI device mapping (multiple blocks supported).\n"},"hotplug":{"type":"string","description":"Selectively enable hotplug features. Use \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e to\ndisable, \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e to enable all. Valid features: \u003cspan pulumi-lang-nodejs=\"`disk`\" pulumi-lang-dotnet=\"`Disk`\" pulumi-lang-go=\"`disk`\" pulumi-lang-python=\"`disk`\" pulumi-lang-yaml=\"`disk`\" pulumi-lang-java=\"`disk`\"\u003e`disk`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`usb`\" pulumi-lang-dotnet=\"`Usb`\" pulumi-lang-go=\"`usb`\" pulumi-lang-python=\"`usb`\" pulumi-lang-yaml=\"`usb`\" pulumi-lang-java=\"`usb`\"\u003e`usb`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`memory`\" pulumi-lang-dotnet=\"`Memory`\" pulumi-lang-go=\"`memory`\" pulumi-lang-python=\"`memory`\" pulumi-lang-yaml=\"`memory`\" pulumi-lang-java=\"`memory`\"\u003e`memory`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cpu`\" pulumi-lang-dotnet=\"`Cpu`\" pulumi-lang-go=\"`cpu`\" pulumi-lang-python=\"`cpu`\" pulumi-lang-yaml=\"`cpu`\" pulumi-lang-java=\"`cpu`\"\u003e`cpu`\u003c/span\u003e. Memory hotplug requires NUMA to be enabled. If not set,\nPVE defaults to `network,disk,usb`.\n"},"initialization":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitialization:VirtualMachineInitialization","description":"The cloud-init configuration.\n"},"ipv4Addresses":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"The IPv4 addresses per network interface published by the\nQEMU agent (empty list when `agent.enabled` is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e)\n"},"ipv6Addresses":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"The IPv6 addresses per network interface published by the\nQEMU agent (empty list when `agent.enabled` is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e)\n"},"keyboardLayout":{"type":"string","description":"The keyboard layout (defaults to `en-us`).\n"},"kvmArguments":{"type":"string","description":"Arbitrary arguments passed to kvm.\n"},"macAddresses":{"type":"array","items":{"type":"string"},"description":"The MAC addresses published by the QEMU agent with fallback\nto the network device configuration, if the agent is disabled\n"},"machine":{"type":"string","description":"The VM machine type (defaults to \u003cspan pulumi-lang-nodejs=\"`pc`\" pulumi-lang-dotnet=\"`Pc`\" pulumi-lang-go=\"`pc`\" pulumi-lang-python=\"`pc`\" pulumi-lang-yaml=\"`pc`\" pulumi-lang-java=\"`pc`\"\u003e`pc`\u003c/span\u003e).\n"},"memory":{"$ref":"#/types/proxmoxve:VM/VirtualMachineMemory:VirtualMachineMemory","description":"The memory configuration.\n"},"migrate":{"type":"boolean","description":"Migrate the VM on node change instead of re-creating\nit (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"name":{"type":"string","description":"The virtual machine name.\n"},"networkDevices":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineNetworkDevice:VirtualMachineNetworkDevice"},"description":"A network device (multiple blocks supported).\n"},"networkInterfaceNames":{"type":"array","items":{"type":"string"},"description":"The network interface names published by the QEMU\nagent (empty list when `agent.enabled` is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e)\n"},"nodeName":{"type":"string","description":"The name of the node to assign the virtual machine\nto.\n"},"numas":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineNuma:VirtualMachineNuma"},"description":"The NUMA configuration.\n"},"onBoot":{"type":"boolean","description":"Specifies whether a VM will be started during system\nboot. (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e)\n"},"operatingSystem":{"$ref":"#/types/proxmoxve:VM/VirtualMachineOperatingSystem:VirtualMachineOperatingSystem","description":"The Operating System configuration.\n"},"poolId":{"type":"string","description":"The identifier for a pool to assign the virtual machine to.\n"},"protection":{"type":"boolean","description":"Sets the protection flag of the VM. This will disable the remove VM and remove disk operations (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"purgeOnDestroy":{"type":"boolean","description":"Whether to purge the VM from backup configurations on destroy (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e)\n"},"reboot":{"type":"boolean","description":"Reboot the VM after initial creation (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"rebootAfterUpdate":{"type":"boolean","description":"Reboot the VM after update if needed (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"rngs":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineRng:VirtualMachineRng"},"description":"The random number generator configuration. Can only be set by `root@pam.`\n"},"scsiHardware":{"type":"string","description":"The SCSI hardware type (defaults to\n`virtio-scsi-pci`).\n"},"serialDevices":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineSerialDevice:VirtualMachineSerialDevice"},"description":"A serial device (multiple blocks supported).\n"},"smbios":{"$ref":"#/types/proxmoxve:VM/VirtualMachineSmbios:VirtualMachineSmbios","description":"The SMBIOS (type1) settings for the VM.\n"},"started":{"type":"boolean","description":"Whether to start the virtual machine (defaults\nto \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"startup":{"$ref":"#/types/proxmoxve:VM/VirtualMachineStartup:VirtualMachineStartup","description":"Defines startup and shutdown behavior of the VM.\n"},"stopOnDestroy":{"type":"boolean","description":"Whether to stop rather than shutdown on VM destroy (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e)\n"},"tabletDevice":{"type":"boolean","description":"Whether to enable the USB tablet device (defaults\nto \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags of the VM. This is only meta information (\ndefaults to `[]`). Note: Proxmox always sorts the VM tags. If the list in\ntemplate is not sorted, then Proxmox will always report a difference on the\nresource. You may use the \u003cspan pulumi-lang-nodejs=\"`ignoreChanges`\" pulumi-lang-dotnet=\"`IgnoreChanges`\" pulumi-lang-go=\"`ignoreChanges`\" pulumi-lang-python=\"`ignore_changes`\" pulumi-lang-yaml=\"`ignoreChanges`\" pulumi-lang-java=\"`ignoreChanges`\"\u003e`ignore_changes`\u003c/span\u003e lifecycle meta-argument to ignore\nchanges to this attribute.\n"},"template":{"type":"boolean","description":"Whether to create a template (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"timeoutClone":{"type":"integer","description":"Timeout for cloning a VM in seconds (defaults to\n1800).\n"},"timeoutCreate":{"type":"integer","description":"Timeout for creating a VM in seconds (defaults to\n1800).\n"},"timeoutMigrate":{"type":"integer","description":"Timeout for migrating the VM (defaults to\n1800).\n"},"timeoutMoveDisk":{"type":"integer","description":"Disk move timeout","deprecationMessage":"This field is deprecated and will be removed in a future release. An overall operation timeout (timeout_create /\u003cspan pulumi-lang-nodejs=\" timeoutClone \" pulumi-lang-dotnet=\" TimeoutClone \" pulumi-lang-go=\" timeoutClone \" pulumi-lang-python=\" timeout_clone \" pulumi-lang-yaml=\" timeoutClone \" pulumi-lang-java=\" timeoutClone \"\u003e timeout_clone \u003c/span\u003e/ timeout_migrate) is used instead."},"timeoutReboot":{"type":"integer","description":"Timeout for rebooting a VM in seconds (defaults\nto 1800).\n"},"timeoutShutdownVm":{"type":"integer","description":"Timeout for shutting down a VM in seconds (\ndefaults to 1800).\n"},"timeoutStartVm":{"type":"integer","description":"Timeout for starting a VM in seconds (defaults\nto 1800).\n"},"timeoutStopVm":{"type":"integer","description":"Timeout for stopping a VM in seconds (defaults\nto 300).\n"},"tpmState":{"$ref":"#/types/proxmoxve:VM/VirtualMachineTpmState:VirtualMachineTpmState","description":"The TPM state device. The VM must be stopped before\nadding, removing, or moving a TPM state device; the provider automatically\nhandles the shutdown/start cycle. Changing \u003cspan pulumi-lang-nodejs=\"`version`\" pulumi-lang-dotnet=\"`Version`\" pulumi-lang-go=\"`version`\" pulumi-lang-python=\"`version`\" pulumi-lang-yaml=\"`version`\" pulumi-lang-java=\"`version`\"\u003e`version`\u003c/span\u003e requires recreating the\nVM because Proxmox only supports setting the TPM version at creation time.\n"},"usbs":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineUsb:VirtualMachineUsb"},"description":"A host USB device mapping (multiple blocks supported).\n"},"vga":{"$ref":"#/types/proxmoxve:VM/VirtualMachineVga:VirtualMachineVga","description":"The VGA configuration.\n"},"virtiofs":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineVirtiof:VirtualMachineVirtiof"},"description":"Virtiofs share\n"},"vmId":{"type":"integer","description":"The VM identifier.\n"},"watchdog":{"$ref":"#/types/proxmoxve:VM/VirtualMachineWatchdog:VirtualMachineWatchdog","description":"The watchdog configuration. Once enabled (by a guest action), the watchdog must be periodically polled by an agent inside the guest or else the watchdog will reset the guest (or execute the respective action specified).\n"}},"required":["bootOrders","hotplug","ipv4Addresses","ipv6Addresses","macAddresses","name","networkDevices","networkInterfaceNames","nodeName","vga","vmId"],"inputProperties":{"acpi":{"type":"boolean","description":"Whether to enable ACPI (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"agent":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAgent:VirtualMachineAgent","description":"The QEMU agent configuration.\n"},"amdSev":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAmdSev:VirtualMachineAmdSev","description":"Secure Encrypted Virtualization (SEV) features by AMD CPUs.\n","willReplaceOnChanges":true},"audioDevice":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAudioDevice:VirtualMachineAudioDevice","description":"An audio device.\n"},"bios":{"type":"string","description":"The BIOS implementation (defaults to \u003cspan pulumi-lang-nodejs=\"`seabios`\" pulumi-lang-dotnet=\"`Seabios`\" pulumi-lang-go=\"`seabios`\" pulumi-lang-python=\"`seabios`\" pulumi-lang-yaml=\"`seabios`\" pulumi-lang-java=\"`seabios`\"\u003e`seabios`\u003c/span\u003e).\n"},"bootOrders":{"type":"array","items":{"type":"string"},"description":"Specify a list of devices to boot from in the order they appear in the list.\n"},"cdrom":{"$ref":"#/types/proxmoxve:VM/VirtualMachineCdrom:VirtualMachineCdrom","description":"The CD-ROM configuration.\n"},"clone":{"$ref":"#/types/proxmoxve:VM/VirtualMachineClone:VirtualMachineClone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/VirtualMachineCpu:VirtualMachineCpu","description":"The CPU configuration.\n"},"deleteUnreferencedDisksOnDestroy":{"type":"boolean","description":"Whether to delete unreferenced disks on destroy (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e)\n"},"description":{"type":"string","description":"The description.\n"},"disks":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineDisk:VirtualMachineDisk"},"description":"A disk (multiple blocks supported).\n"},"efiDisk":{"$ref":"#/types/proxmoxve:VM/VirtualMachineEfiDisk:VirtualMachineEfiDisk","description":"The efi disk device (required if \u003cspan pulumi-lang-nodejs=\"`bios`\" pulumi-lang-dotnet=\"`Bios`\" pulumi-lang-go=\"`bios`\" pulumi-lang-python=\"`bios`\" pulumi-lang-yaml=\"`bios`\" pulumi-lang-java=\"`bios`\"\u003e`bios`\u003c/span\u003e is set\nto \u003cspan pulumi-lang-nodejs=\"`ovmf`\" pulumi-lang-dotnet=\"`Ovmf`\" pulumi-lang-go=\"`ovmf`\" pulumi-lang-python=\"`ovmf`\" pulumi-lang-yaml=\"`ovmf`\" pulumi-lang-java=\"`ovmf`\"\u003e`ovmf`\u003c/span\u003e)\n"},"hookScriptFileId":{"type":"string","description":"The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).\n"},"hostpcis":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineHostpci:VirtualMachineHostpci"},"description":"A host PCI device mapping (multiple blocks supported).\n"},"hotplug":{"type":"string","description":"Selectively enable hotplug features. Use \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e to\ndisable, \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e to enable all. Valid features: \u003cspan pulumi-lang-nodejs=\"`disk`\" pulumi-lang-dotnet=\"`Disk`\" pulumi-lang-go=\"`disk`\" pulumi-lang-python=\"`disk`\" pulumi-lang-yaml=\"`disk`\" pulumi-lang-java=\"`disk`\"\u003e`disk`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`usb`\" pulumi-lang-dotnet=\"`Usb`\" pulumi-lang-go=\"`usb`\" pulumi-lang-python=\"`usb`\" pulumi-lang-yaml=\"`usb`\" pulumi-lang-java=\"`usb`\"\u003e`usb`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`memory`\" pulumi-lang-dotnet=\"`Memory`\" pulumi-lang-go=\"`memory`\" pulumi-lang-python=\"`memory`\" pulumi-lang-yaml=\"`memory`\" pulumi-lang-java=\"`memory`\"\u003e`memory`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cpu`\" pulumi-lang-dotnet=\"`Cpu`\" pulumi-lang-go=\"`cpu`\" pulumi-lang-python=\"`cpu`\" pulumi-lang-yaml=\"`cpu`\" pulumi-lang-java=\"`cpu`\"\u003e`cpu`\u003c/span\u003e. Memory hotplug requires NUMA to be enabled. If not set,\nPVE defaults to `network,disk,usb`.\n"},"initialization":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitialization:VirtualMachineInitialization","description":"The cloud-init configuration.\n"},"keyboardLayout":{"type":"string","description":"The keyboard layout (defaults to `en-us`).\n"},"kvmArguments":{"type":"string","description":"Arbitrary arguments passed to kvm.\n"},"macAddresses":{"type":"array","items":{"type":"string"},"description":"The MAC addresses published by the QEMU agent with fallback\nto the network device configuration, if the agent is disabled\n"},"machine":{"type":"string","description":"The VM machine type (defaults to \u003cspan pulumi-lang-nodejs=\"`pc`\" pulumi-lang-dotnet=\"`Pc`\" pulumi-lang-go=\"`pc`\" pulumi-lang-python=\"`pc`\" pulumi-lang-yaml=\"`pc`\" pulumi-lang-java=\"`pc`\"\u003e`pc`\u003c/span\u003e).\n"},"memory":{"$ref":"#/types/proxmoxve:VM/VirtualMachineMemory:VirtualMachineMemory","description":"The memory configuration.\n"},"migrate":{"type":"boolean","description":"Migrate the VM on node change instead of re-creating\nit (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"name":{"type":"string","description":"The virtual machine name.\n"},"networkDevices":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineNetworkDevice:VirtualMachineNetworkDevice"},"description":"A network device (multiple blocks supported).\n"},"nodeName":{"type":"string","description":"The name of the node to assign the virtual machine\nto.\n"},"numas":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineNuma:VirtualMachineNuma"},"description":"The NUMA configuration.\n"},"onBoot":{"type":"boolean","description":"Specifies whether a VM will be started during system\nboot. (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e)\n"},"operatingSystem":{"$ref":"#/types/proxmoxve:VM/VirtualMachineOperatingSystem:VirtualMachineOperatingSystem","description":"The Operating System configuration.\n"},"poolId":{"type":"string","description":"The identifier for a pool to assign the virtual machine to.\n"},"protection":{"type":"boolean","description":"Sets the protection flag of the VM. This will disable the remove VM and remove disk operations (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"purgeOnDestroy":{"type":"boolean","description":"Whether to purge the VM from backup configurations on destroy (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e)\n"},"reboot":{"type":"boolean","description":"Reboot the VM after initial creation (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"rebootAfterUpdate":{"type":"boolean","description":"Reboot the VM after update if needed (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"rngs":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineRng:VirtualMachineRng"},"description":"The random number generator configuration. Can only be set by `root@pam.`\n"},"scsiHardware":{"type":"string","description":"The SCSI hardware type (defaults to\n`virtio-scsi-pci`).\n"},"serialDevices":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineSerialDevice:VirtualMachineSerialDevice"},"description":"A serial device (multiple blocks supported).\n"},"smbios":{"$ref":"#/types/proxmoxve:VM/VirtualMachineSmbios:VirtualMachineSmbios","description":"The SMBIOS (type1) settings for the VM.\n"},"started":{"type":"boolean","description":"Whether to start the virtual machine (defaults\nto \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"startup":{"$ref":"#/types/proxmoxve:VM/VirtualMachineStartup:VirtualMachineStartup","description":"Defines startup and shutdown behavior of the VM.\n"},"stopOnDestroy":{"type":"boolean","description":"Whether to stop rather than shutdown on VM destroy (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e)\n"},"tabletDevice":{"type":"boolean","description":"Whether to enable the USB tablet device (defaults\nto \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags of the VM. This is only meta information (\ndefaults to `[]`). Note: Proxmox always sorts the VM tags. If the list in\ntemplate is not sorted, then Proxmox will always report a difference on the\nresource. You may use the \u003cspan pulumi-lang-nodejs=\"`ignoreChanges`\" pulumi-lang-dotnet=\"`IgnoreChanges`\" pulumi-lang-go=\"`ignoreChanges`\" pulumi-lang-python=\"`ignore_changes`\" pulumi-lang-yaml=\"`ignoreChanges`\" pulumi-lang-java=\"`ignoreChanges`\"\u003e`ignore_changes`\u003c/span\u003e lifecycle meta-argument to ignore\nchanges to this attribute.\n"},"template":{"type":"boolean","description":"Whether to create a template (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n","willReplaceOnChanges":true},"timeoutClone":{"type":"integer","description":"Timeout for cloning a VM in seconds (defaults to\n1800).\n"},"timeoutCreate":{"type":"integer","description":"Timeout for creating a VM in seconds (defaults to\n1800).\n"},"timeoutMigrate":{"type":"integer","description":"Timeout for migrating the VM (defaults to\n1800).\n"},"timeoutMoveDisk":{"type":"integer","description":"Disk move timeout","deprecationMessage":"This field is deprecated and will be removed in a future release. An overall operation timeout (timeout_create /\u003cspan pulumi-lang-nodejs=\" timeoutClone \" pulumi-lang-dotnet=\" TimeoutClone \" pulumi-lang-go=\" timeoutClone \" pulumi-lang-python=\" timeout_clone \" pulumi-lang-yaml=\" timeoutClone \" pulumi-lang-java=\" timeoutClone \"\u003e timeout_clone \u003c/span\u003e/ timeout_migrate) is used instead."},"timeoutReboot":{"type":"integer","description":"Timeout for rebooting a VM in seconds (defaults\nto 1800).\n"},"timeoutShutdownVm":{"type":"integer","description":"Timeout for shutting down a VM in seconds (\ndefaults to 1800).\n"},"timeoutStartVm":{"type":"integer","description":"Timeout for starting a VM in seconds (defaults\nto 1800).\n"},"timeoutStopVm":{"type":"integer","description":"Timeout for stopping a VM in seconds (defaults\nto 300).\n"},"tpmState":{"$ref":"#/types/proxmoxve:VM/VirtualMachineTpmState:VirtualMachineTpmState","description":"The TPM state device. The VM must be stopped before\nadding, removing, or moving a TPM state device; the provider automatically\nhandles the shutdown/start cycle. Changing \u003cspan pulumi-lang-nodejs=\"`version`\" pulumi-lang-dotnet=\"`Version`\" pulumi-lang-go=\"`version`\" pulumi-lang-python=\"`version`\" pulumi-lang-yaml=\"`version`\" pulumi-lang-java=\"`version`\"\u003e`version`\u003c/span\u003e requires recreating the\nVM because Proxmox only supports setting the TPM version at creation time.\n"},"usbs":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineUsb:VirtualMachineUsb"},"description":"A host USB device mapping (multiple blocks supported).\n"},"vga":{"$ref":"#/types/proxmoxve:VM/VirtualMachineVga:VirtualMachineVga","description":"The VGA configuration.\n"},"virtiofs":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineVirtiof:VirtualMachineVirtiof"},"description":"Virtiofs share\n"},"vmId":{"type":"integer","description":"The VM identifier.\n"},"watchdog":{"$ref":"#/types/proxmoxve:VM/VirtualMachineWatchdog:VirtualMachineWatchdog","description":"The watchdog configuration. Once enabled (by a guest action), the watchdog must be periodically polled by an agent inside the guest or else the watchdog will reset the guest (or execute the respective action specified).\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering VirtualMachine resources.\n","properties":{"acpi":{"type":"boolean","description":"Whether to enable ACPI (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"agent":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAgent:VirtualMachineAgent","description":"The QEMU agent configuration.\n"},"amdSev":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAmdSev:VirtualMachineAmdSev","description":"Secure Encrypted Virtualization (SEV) features by AMD CPUs.\n","willReplaceOnChanges":true},"audioDevice":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAudioDevice:VirtualMachineAudioDevice","description":"An audio device.\n"},"bios":{"type":"string","description":"The BIOS implementation (defaults to \u003cspan pulumi-lang-nodejs=\"`seabios`\" pulumi-lang-dotnet=\"`Seabios`\" pulumi-lang-go=\"`seabios`\" pulumi-lang-python=\"`seabios`\" pulumi-lang-yaml=\"`seabios`\" pulumi-lang-java=\"`seabios`\"\u003e`seabios`\u003c/span\u003e).\n"},"bootOrders":{"type":"array","items":{"type":"string"},"description":"Specify a list of devices to boot from in the order they appear in the list.\n"},"cdrom":{"$ref":"#/types/proxmoxve:VM/VirtualMachineCdrom:VirtualMachineCdrom","description":"The CD-ROM configuration.\n"},"clone":{"$ref":"#/types/proxmoxve:VM/VirtualMachineClone:VirtualMachineClone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/VirtualMachineCpu:VirtualMachineCpu","description":"The CPU configuration.\n"},"deleteUnreferencedDisksOnDestroy":{"type":"boolean","description":"Whether to delete unreferenced disks on destroy (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e)\n"},"description":{"type":"string","description":"The description.\n"},"disks":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineDisk:VirtualMachineDisk"},"description":"A disk (multiple blocks supported).\n"},"efiDisk":{"$ref":"#/types/proxmoxve:VM/VirtualMachineEfiDisk:VirtualMachineEfiDisk","description":"The efi disk device (required if \u003cspan pulumi-lang-nodejs=\"`bios`\" pulumi-lang-dotnet=\"`Bios`\" pulumi-lang-go=\"`bios`\" pulumi-lang-python=\"`bios`\" pulumi-lang-yaml=\"`bios`\" pulumi-lang-java=\"`bios`\"\u003e`bios`\u003c/span\u003e is set\nto \u003cspan pulumi-lang-nodejs=\"`ovmf`\" pulumi-lang-dotnet=\"`Ovmf`\" pulumi-lang-go=\"`ovmf`\" pulumi-lang-python=\"`ovmf`\" pulumi-lang-yaml=\"`ovmf`\" pulumi-lang-java=\"`ovmf`\"\u003e`ovmf`\u003c/span\u003e)\n"},"hookScriptFileId":{"type":"string","description":"The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).\n"},"hostpcis":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineHostpci:VirtualMachineHostpci"},"description":"A host PCI device mapping (multiple blocks supported).\n"},"hotplug":{"type":"string","description":"Selectively enable hotplug features. Use \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e to\ndisable, \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e to enable all. Valid features: \u003cspan pulumi-lang-nodejs=\"`disk`\" pulumi-lang-dotnet=\"`Disk`\" pulumi-lang-go=\"`disk`\" pulumi-lang-python=\"`disk`\" pulumi-lang-yaml=\"`disk`\" pulumi-lang-java=\"`disk`\"\u003e`disk`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`usb`\" pulumi-lang-dotnet=\"`Usb`\" pulumi-lang-go=\"`usb`\" pulumi-lang-python=\"`usb`\" pulumi-lang-yaml=\"`usb`\" pulumi-lang-java=\"`usb`\"\u003e`usb`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`memory`\" pulumi-lang-dotnet=\"`Memory`\" pulumi-lang-go=\"`memory`\" pulumi-lang-python=\"`memory`\" pulumi-lang-yaml=\"`memory`\" pulumi-lang-java=\"`memory`\"\u003e`memory`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cpu`\" pulumi-lang-dotnet=\"`Cpu`\" pulumi-lang-go=\"`cpu`\" pulumi-lang-python=\"`cpu`\" pulumi-lang-yaml=\"`cpu`\" pulumi-lang-java=\"`cpu`\"\u003e`cpu`\u003c/span\u003e. Memory hotplug requires NUMA to be enabled. If not set,\nPVE defaults to `network,disk,usb`.\n"},"initialization":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitialization:VirtualMachineInitialization","description":"The cloud-init configuration.\n"},"ipv4Addresses":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"The IPv4 addresses per network interface published by the\nQEMU agent (empty list when `agent.enabled` is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e)\n"},"ipv6Addresses":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"The IPv6 addresses per network interface published by the\nQEMU agent (empty list when `agent.enabled` is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e)\n"},"keyboardLayout":{"type":"string","description":"The keyboard layout (defaults to `en-us`).\n"},"kvmArguments":{"type":"string","description":"Arbitrary arguments passed to kvm.\n"},"macAddresses":{"type":"array","items":{"type":"string"},"description":"The MAC addresses published by the QEMU agent with fallback\nto the network device configuration, if the agent is disabled\n"},"machine":{"type":"string","description":"The VM machine type (defaults to \u003cspan pulumi-lang-nodejs=\"`pc`\" pulumi-lang-dotnet=\"`Pc`\" pulumi-lang-go=\"`pc`\" pulumi-lang-python=\"`pc`\" pulumi-lang-yaml=\"`pc`\" pulumi-lang-java=\"`pc`\"\u003e`pc`\u003c/span\u003e).\n"},"memory":{"$ref":"#/types/proxmoxve:VM/VirtualMachineMemory:VirtualMachineMemory","description":"The memory configuration.\n"},"migrate":{"type":"boolean","description":"Migrate the VM on node change instead of re-creating\nit (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"name":{"type":"string","description":"The virtual machine name.\n"},"networkDevices":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineNetworkDevice:VirtualMachineNetworkDevice"},"description":"A network device (multiple blocks supported).\n"},"networkInterfaceNames":{"type":"array","items":{"type":"string"},"description":"The network interface names published by the QEMU\nagent (empty list when `agent.enabled` is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e)\n"},"nodeName":{"type":"string","description":"The name of the node to assign the virtual machine\nto.\n"},"numas":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineNuma:VirtualMachineNuma"},"description":"The NUMA configuration.\n"},"onBoot":{"type":"boolean","description":"Specifies whether a VM will be started during system\nboot. (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e)\n"},"operatingSystem":{"$ref":"#/types/proxmoxve:VM/VirtualMachineOperatingSystem:VirtualMachineOperatingSystem","description":"The Operating System configuration.\n"},"poolId":{"type":"string","description":"The identifier for a pool to assign the virtual machine to.\n"},"protection":{"type":"boolean","description":"Sets the protection flag of the VM. This will disable the remove VM and remove disk operations (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"purgeOnDestroy":{"type":"boolean","description":"Whether to purge the VM from backup configurations on destroy (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e)\n"},"reboot":{"type":"boolean","description":"Reboot the VM after initial creation (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n"},"rebootAfterUpdate":{"type":"boolean","description":"Reboot the VM after update if needed (defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"rngs":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineRng:VirtualMachineRng"},"description":"The random number generator configuration. Can only be set by `root@pam.`\n"},"scsiHardware":{"type":"string","description":"The SCSI hardware type (defaults to\n`virtio-scsi-pci`).\n"},"serialDevices":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineSerialDevice:VirtualMachineSerialDevice"},"description":"A serial device (multiple blocks supported).\n"},"smbios":{"$ref":"#/types/proxmoxve:VM/VirtualMachineSmbios:VirtualMachineSmbios","description":"The SMBIOS (type1) settings for the VM.\n"},"started":{"type":"boolean","description":"Whether to start the virtual machine (defaults\nto \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"startup":{"$ref":"#/types/proxmoxve:VM/VirtualMachineStartup:VirtualMachineStartup","description":"Defines startup and shutdown behavior of the VM.\n"},"stopOnDestroy":{"type":"boolean","description":"Whether to stop rather than shutdown on VM destroy (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e)\n"},"tabletDevice":{"type":"boolean","description":"Whether to enable the USB tablet device (defaults\nto \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags of the VM. This is only meta information (\ndefaults to `[]`). Note: Proxmox always sorts the VM tags. If the list in\ntemplate is not sorted, then Proxmox will always report a difference on the\nresource. You may use the \u003cspan pulumi-lang-nodejs=\"`ignoreChanges`\" pulumi-lang-dotnet=\"`IgnoreChanges`\" pulumi-lang-go=\"`ignoreChanges`\" pulumi-lang-python=\"`ignore_changes`\" pulumi-lang-yaml=\"`ignoreChanges`\" pulumi-lang-java=\"`ignoreChanges`\"\u003e`ignore_changes`\u003c/span\u003e lifecycle meta-argument to ignore\nchanges to this attribute.\n"},"template":{"type":"boolean","description":"Whether to create a template (defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e).\n","willReplaceOnChanges":true},"timeoutClone":{"type":"integer","description":"Timeout for cloning a VM in seconds (defaults to\n1800).\n"},"timeoutCreate":{"type":"integer","description":"Timeout for creating a VM in seconds (defaults to\n1800).\n"},"timeoutMigrate":{"type":"integer","description":"Timeout for migrating the VM (defaults to\n1800).\n"},"timeoutMoveDisk":{"type":"integer","description":"Disk move timeout","deprecationMessage":"This field is deprecated and will be removed in a future release. An overall operation timeout (timeout_create /\u003cspan pulumi-lang-nodejs=\" timeoutClone \" pulumi-lang-dotnet=\" TimeoutClone \" pulumi-lang-go=\" timeoutClone \" pulumi-lang-python=\" timeout_clone \" pulumi-lang-yaml=\" timeoutClone \" pulumi-lang-java=\" timeoutClone \"\u003e timeout_clone \u003c/span\u003e/ timeout_migrate) is used instead."},"timeoutReboot":{"type":"integer","description":"Timeout for rebooting a VM in seconds (defaults\nto 1800).\n"},"timeoutShutdownVm":{"type":"integer","description":"Timeout for shutting down a VM in seconds (\ndefaults to 1800).\n"},"timeoutStartVm":{"type":"integer","description":"Timeout for starting a VM in seconds (defaults\nto 1800).\n"},"timeoutStopVm":{"type":"integer","description":"Timeout for stopping a VM in seconds (defaults\nto 300).\n"},"tpmState":{"$ref":"#/types/proxmoxve:VM/VirtualMachineTpmState:VirtualMachineTpmState","description":"The TPM state device. The VM must be stopped before\nadding, removing, or moving a TPM state device; the provider automatically\nhandles the shutdown/start cycle. Changing \u003cspan pulumi-lang-nodejs=\"`version`\" pulumi-lang-dotnet=\"`Version`\" pulumi-lang-go=\"`version`\" pulumi-lang-python=\"`version`\" pulumi-lang-yaml=\"`version`\" pulumi-lang-java=\"`version`\"\u003e`version`\u003c/span\u003e requires recreating the\nVM because Proxmox only supports setting the TPM version at creation time.\n"},"usbs":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineUsb:VirtualMachineUsb"},"description":"A host USB device mapping (multiple blocks supported).\n"},"vga":{"$ref":"#/types/proxmoxve:VM/VirtualMachineVga:VirtualMachineVga","description":"The VGA configuration.\n"},"virtiofs":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineVirtiof:VirtualMachineVirtiof"},"description":"Virtiofs share\n"},"vmId":{"type":"integer","description":"The VM identifier.\n"},"watchdog":{"$ref":"#/types/proxmoxve:VM/VirtualMachineWatchdog:VirtualMachineWatchdog","description":"The watchdog configuration. Once enabled (by a guest action), the watchdog must be periodically polled by an agent inside the guest or else the watchdog will reset the guest (or execute the respective action specified).\n"}},"type":"object"}},"proxmoxve:index/acl:Acl":{"description":"Manages ACLs on the Proxmox cluster.\n\nACLs are used to control access to resources in the Proxmox cluster.\nEach ACL consists of a path, a user, group or token, a role, and a flag to allow propagation of permissions.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsAutomation = new proxmoxve.permission.User(\"operations_automation\", {\n    comment: \"Managed by Pulumi\",\n    password: \"a-strong-password\",\n    userId: \"operations-automation@pve\",\n});\nconst operationsMonitoring = new proxmoxve.permission.Role(\"operations_monitoring\", {\n    roleId: \"operations-monitoring\",\n    privileges: [\"VM.GuestAgent.Audit\"],\n});\nconst operationsAutomationMonitoring = new proxmoxve.Acl(\"operations_automation_monitoring\", {\n    userId: operationsAutomation.userId,\n    roleId: operationsMonitoring.roleId,\n    path: \"/vms/1234\",\n    propagate: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_automation = proxmoxve.permission.User(\"operations_automation\",\n    comment=\"Managed by Pulumi\",\n    password=\"a-strong-password\",\n    user_id=\"operations-automation@pve\")\noperations_monitoring = proxmoxve.permission.Role(\"operations_monitoring\",\n    role_id=\"operations-monitoring\",\n    privileges=[\"VM.GuestAgent.Audit\"])\noperations_automation_monitoring = proxmoxve.Acl(\"operations_automation_monitoring\",\n    user_id=operations_automation.user_id,\n    role_id=operations_monitoring.role_id,\n    path=\"/vms/1234\",\n    propagate=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var operationsAutomation = new ProxmoxVE.Permission.User(\"operations_automation\", new()\n    {\n        Comment = \"Managed by Pulumi\",\n        Password = \"a-strong-password\",\n        UserId = \"operations-automation@pve\",\n    });\n\n    var operationsMonitoring = new ProxmoxVE.Permission.Role(\"operations_monitoring\", new()\n    {\n        RoleId = \"operations-monitoring\",\n        Privileges = new[]\n        {\n            \"VM.GuestAgent.Audit\",\n        },\n    });\n\n    var operationsAutomationMonitoring = new ProxmoxVE.Acl(\"operations_automation_monitoring\", new()\n    {\n        UserId = operationsAutomation.UserId,\n        RoleId = operationsMonitoring.RoleId,\n        Path = \"/vms/1234\",\n        Propagate = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\toperationsAutomation, err := permission.NewUser(ctx, \"operations_automation\", \u0026permission.UserArgs{\n\t\t\tComment:  pulumi.String(\"Managed by Pulumi\"),\n\t\t\tPassword: pulumi.String(\"a-strong-password\"),\n\t\t\tUserId:   pulumi.String(\"operations-automation@pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\toperationsMonitoring, err := permission.NewRole(ctx, \"operations_monitoring\", \u0026permission.RoleArgs{\n\t\t\tRoleId: pulumi.String(\"operations-monitoring\"),\n\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"VM.GuestAgent.Audit\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = proxmoxve.NewAcl(ctx, \"operations_automation_monitoring\", \u0026proxmoxve.AclArgs{\n\t\t\tUserId:    operationsAutomation.UserId,\n\t\t\tRoleId:    operationsMonitoring.RoleId,\n\t\t\tPath:      pulumi.String(\"/vms/1234\"),\n\t\t\tPropagate: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Permission.User;\nimport io.muehlbachler.pulumi.proxmoxve.Permission.UserArgs;\nimport io.muehlbachler.pulumi.proxmoxve.Permission.Role;\nimport io.muehlbachler.pulumi.proxmoxve.Permission.RoleArgs;\nimport io.muehlbachler.pulumi.proxmoxve.Acl;\nimport io.muehlbachler.pulumi.proxmoxve.AclArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var operationsAutomation = new User(\"operationsAutomation\", UserArgs.builder()\n            .comment(\"Managed by Pulumi\")\n            .password(\"a-strong-password\")\n            .userId(\"operations-automation@pve\")\n            .build());\n\n        var operationsMonitoring = new Role(\"operationsMonitoring\", RoleArgs.builder()\n            .roleId(\"operations-monitoring\")\n            .privileges(\"VM.GuestAgent.Audit\")\n            .build());\n\n        var operationsAutomationMonitoring = new Acl(\"operationsAutomationMonitoring\", AclArgs.builder()\n            .userId(operationsAutomation.userId())\n            .roleId(operationsMonitoring.roleId())\n            .path(\"/vms/1234\")\n            .propagate(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  operationsAutomation:\n    type: proxmoxve:Permission:User\n    name: operations_automation\n    properties:\n      comment: Managed by Pulumi\n      password: a-strong-password\n      userId: operations-automation@pve\n  operationsMonitoring:\n    type: proxmoxve:Permission:Role\n    name: operations_monitoring\n    properties:\n      roleId: operations-monitoring\n      privileges:\n        - VM.GuestAgent.Audit\n  operationsAutomationMonitoring:\n    type: proxmoxve:Acl\n    name: operations_automation_monitoring\n    properties:\n      userId: ${operationsAutomation.userId}\n      roleId: ${operationsMonitoring.roleId}\n      path: /vms/1234\n      propagate: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nACL can be imported using its unique identifier, e.g.: {path}?{group|user@realm|user@realm!token}?{role}\n\n```sh\n$ pulumi import proxmoxve:index/acl:Acl operations_automation_monitoring /?monitor@pve?operations-monitoring\n```\n\n","properties":{"groupId":{"type":"string","description":"The group the ACL should apply to (mutually exclusive with \u003cspan pulumi-lang-nodejs=\"`tokenId`\" pulumi-lang-dotnet=\"`TokenId`\" pulumi-lang-go=\"`tokenId`\" pulumi-lang-python=\"`token_id`\" pulumi-lang-yaml=\"`tokenId`\" pulumi-lang-java=\"`tokenId`\"\u003e`token_id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`userId`\" pulumi-lang-dotnet=\"`UserId`\" pulumi-lang-go=\"`userId`\" pulumi-lang-python=\"`user_id`\" pulumi-lang-yaml=\"`userId`\" pulumi-lang-java=\"`userId`\"\u003e`user_id`\u003c/span\u003e)\n"},"path":{"type":"string","description":"Access control path\n"},"propagate":{"type":"boolean","description":"Allow to propagate (inherit) permissions.\n"},"roleId":{"type":"string","description":"The role to apply\n"},"tokenId":{"type":"string","description":"The token the ACL should apply to (mutually exclusive with \u003cspan pulumi-lang-nodejs=\"`groupId`\" pulumi-lang-dotnet=\"`GroupId`\" pulumi-lang-go=\"`groupId`\" pulumi-lang-python=\"`group_id`\" pulumi-lang-yaml=\"`groupId`\" pulumi-lang-java=\"`groupId`\"\u003e`group_id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`userId`\" pulumi-lang-dotnet=\"`UserId`\" pulumi-lang-go=\"`userId`\" pulumi-lang-python=\"`user_id`\" pulumi-lang-yaml=\"`userId`\" pulumi-lang-java=\"`userId`\"\u003e`user_id`\u003c/span\u003e)\n"},"userId":{"type":"string","description":"The user the ACL should apply to (mutually exclusive with \u003cspan pulumi-lang-nodejs=\"`groupId`\" pulumi-lang-dotnet=\"`GroupId`\" pulumi-lang-go=\"`groupId`\" pulumi-lang-python=\"`group_id`\" pulumi-lang-yaml=\"`groupId`\" pulumi-lang-java=\"`groupId`\"\u003e`group_id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`tokenId`\" pulumi-lang-dotnet=\"`TokenId`\" pulumi-lang-go=\"`tokenId`\" pulumi-lang-python=\"`token_id`\" pulumi-lang-yaml=\"`tokenId`\" pulumi-lang-java=\"`tokenId`\"\u003e`token_id`\u003c/span\u003e)\n"}},"required":["path","propagate","roleId"],"inputProperties":{"groupId":{"type":"string","description":"The group the ACL should apply to (mutually exclusive with \u003cspan pulumi-lang-nodejs=\"`tokenId`\" pulumi-lang-dotnet=\"`TokenId`\" pulumi-lang-go=\"`tokenId`\" pulumi-lang-python=\"`token_id`\" pulumi-lang-yaml=\"`tokenId`\" pulumi-lang-java=\"`tokenId`\"\u003e`token_id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`userId`\" pulumi-lang-dotnet=\"`UserId`\" pulumi-lang-go=\"`userId`\" pulumi-lang-python=\"`user_id`\" pulumi-lang-yaml=\"`userId`\" pulumi-lang-java=\"`userId`\"\u003e`user_id`\u003c/span\u003e)\n"},"path":{"type":"string","description":"Access control path\n"},"propagate":{"type":"boolean","description":"Allow to propagate (inherit) permissions.\n"},"roleId":{"type":"string","description":"The role to apply\n"},"tokenId":{"type":"string","description":"The token the ACL should apply to (mutually exclusive with \u003cspan pulumi-lang-nodejs=\"`groupId`\" pulumi-lang-dotnet=\"`GroupId`\" pulumi-lang-go=\"`groupId`\" pulumi-lang-python=\"`group_id`\" pulumi-lang-yaml=\"`groupId`\" pulumi-lang-java=\"`groupId`\"\u003e`group_id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`userId`\" pulumi-lang-dotnet=\"`UserId`\" pulumi-lang-go=\"`userId`\" pulumi-lang-python=\"`user_id`\" pulumi-lang-yaml=\"`userId`\" pulumi-lang-java=\"`userId`\"\u003e`user_id`\u003c/span\u003e)\n"},"userId":{"type":"string","description":"The user the ACL should apply to (mutually exclusive with \u003cspan pulumi-lang-nodejs=\"`groupId`\" pulumi-lang-dotnet=\"`GroupId`\" pulumi-lang-go=\"`groupId`\" pulumi-lang-python=\"`group_id`\" pulumi-lang-yaml=\"`groupId`\" pulumi-lang-java=\"`groupId`\"\u003e`group_id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`tokenId`\" pulumi-lang-dotnet=\"`TokenId`\" pulumi-lang-go=\"`tokenId`\" pulumi-lang-python=\"`token_id`\" pulumi-lang-yaml=\"`tokenId`\" pulumi-lang-java=\"`tokenId`\"\u003e`token_id`\u003c/span\u003e)\n"}},"requiredInputs":["path","roleId"],"stateInputs":{"description":"Input properties used for looking up and filtering Acl resources.\n","properties":{"groupId":{"type":"string","description":"The group the ACL should apply to (mutually exclusive with \u003cspan pulumi-lang-nodejs=\"`tokenId`\" pulumi-lang-dotnet=\"`TokenId`\" pulumi-lang-go=\"`tokenId`\" pulumi-lang-python=\"`token_id`\" pulumi-lang-yaml=\"`tokenId`\" pulumi-lang-java=\"`tokenId`\"\u003e`token_id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`userId`\" pulumi-lang-dotnet=\"`UserId`\" pulumi-lang-go=\"`userId`\" pulumi-lang-python=\"`user_id`\" pulumi-lang-yaml=\"`userId`\" pulumi-lang-java=\"`userId`\"\u003e`user_id`\u003c/span\u003e)\n"},"path":{"type":"string","description":"Access control path\n"},"propagate":{"type":"boolean","description":"Allow to propagate (inherit) permissions.\n"},"roleId":{"type":"string","description":"The role to apply\n"},"tokenId":{"type":"string","description":"The token the ACL should apply to (mutually exclusive with \u003cspan pulumi-lang-nodejs=\"`groupId`\" pulumi-lang-dotnet=\"`GroupId`\" pulumi-lang-go=\"`groupId`\" pulumi-lang-python=\"`group_id`\" pulumi-lang-yaml=\"`groupId`\" pulumi-lang-java=\"`groupId`\"\u003e`group_id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`userId`\" pulumi-lang-dotnet=\"`UserId`\" pulumi-lang-go=\"`userId`\" pulumi-lang-python=\"`user_id`\" pulumi-lang-yaml=\"`userId`\" pulumi-lang-java=\"`userId`\"\u003e`user_id`\u003c/span\u003e)\n"},"userId":{"type":"string","description":"The user the ACL should apply to (mutually exclusive with \u003cspan pulumi-lang-nodejs=\"`groupId`\" pulumi-lang-dotnet=\"`GroupId`\" pulumi-lang-go=\"`groupId`\" pulumi-lang-python=\"`group_id`\" pulumi-lang-yaml=\"`groupId`\" pulumi-lang-java=\"`groupId`\"\u003e`group_id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`tokenId`\" pulumi-lang-dotnet=\"`TokenId`\" pulumi-lang-go=\"`tokenId`\" pulumi-lang-python=\"`token_id`\" pulumi-lang-yaml=\"`tokenId`\" pulumi-lang-java=\"`tokenId`\"\u003e`token_id`\u003c/span\u003e)\n"}},"type":"object"}},"proxmoxve:index/acmeAccount:AcmeAccount":{"description":"Manages an ACME account in a Proxmox VE cluster.\n\n\u003e This resource requires `root@pam` authentication.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.AcmeAccount(\"example\", {\n    name: \"example\",\n    contact: \"example@email.com\",\n    directory: \"https://acme-staging-v02.api.letsencrypt.org/directory\",\n    tos: \"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.AcmeAccount(\"example\",\n    name=\"example\",\n    contact=\"example@email.com\",\n    directory=\"https://acme-staging-v02.api.letsencrypt.org/directory\",\n    tos=\"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ProxmoxVE.AcmeAccount(\"example\", new()\n    {\n        Name = \"example\",\n        Contact = \"example@email.com\",\n        Directory = \"https://acme-staging-v02.api.letsencrypt.org/directory\",\n        Tos = \"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := proxmoxve.NewAcmeAccount(ctx, \"example\", \u0026proxmoxve.AcmeAccountArgs{\n\t\t\tName:      pulumi.String(\"example\"),\n\t\t\tContact:   pulumi.String(\"example@email.com\"),\n\t\t\tDirectory: pulumi.String(\"https://acme-staging-v02.api.letsencrypt.org/directory\"),\n\t\t\tTos:       pulumi.String(\"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.AcmeAccount;\nimport io.muehlbachler.pulumi.proxmoxve.AcmeAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new AcmeAccount(\"example\", AcmeAccountArgs.builder()\n            .name(\"example\")\n            .contact(\"example@email.com\")\n            .directory(\"https://acme-staging-v02.api.letsencrypt.org/directory\")\n            .tos(\"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:AcmeAccount\n    properties:\n      name: example\n      contact: example@email.com\n      directory: https://acme-staging-v02.api.letsencrypt.org/directory\n      tos: https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nACME accounts can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:index/acmeAccount:AcmeAccount example example\n```\n\n","properties":{"contact":{"type":"string","description":"The contact email addresses.\n"},"createdAt":{"type":"string","description":"The timestamp of the ACME account creation.\n"},"directory":{"type":"string","description":"The URL of the ACME CA directory endpoint.\n"},"eabHmacKey":{"type":"string","description":"The HMAC key for External Account Binding.\n"},"eabKid":{"type":"string","description":"The Key Identifier for External Account Binding.\n"},"location":{"type":"string","description":"The location of the ACME account.\n"},"name":{"type":"string","description":"The ACME account config file name.\n"},"tos":{"type":"string","description":"The URL of CA TermsOfService - setting this indicates agreement.\n"}},"required":["contact","createdAt","location","name"],"inputProperties":{"contact":{"type":"string","description":"The contact email addresses.\n"},"directory":{"type":"string","description":"The URL of the ACME CA directory endpoint.\n"},"eabHmacKey":{"type":"string","description":"The HMAC key for External Account Binding.\n"},"eabKid":{"type":"string","description":"The Key Identifier for External Account Binding.\n"},"name":{"type":"string","description":"The ACME account config file name.\n"},"tos":{"type":"string","description":"The URL of CA TermsOfService - setting this indicates agreement.\n"}},"requiredInputs":["contact"],"stateInputs":{"description":"Input properties used for looking up and filtering AcmeAccount resources.\n","properties":{"contact":{"type":"string","description":"The contact email addresses.\n"},"createdAt":{"type":"string","description":"The timestamp of the ACME account creation.\n"},"directory":{"type":"string","description":"The URL of the ACME CA directory endpoint.\n"},"eabHmacKey":{"type":"string","description":"The HMAC key for External Account Binding.\n"},"eabKid":{"type":"string","description":"The Key Identifier for External Account Binding.\n"},"location":{"type":"string","description":"The location of the ACME account.\n"},"name":{"type":"string","description":"The ACME account config file name.\n"},"tos":{"type":"string","description":"The URL of CA TermsOfService - setting this indicates agreement.\n"}},"type":"object"}},"proxmoxve:index/acmeDnsPlugin:AcmeDnsPlugin":{"description":"Manages an ACME plugin in a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.AcmeDnsPlugin(\"example\", {\n    plugin: \"test\",\n    api: \"aws\",\n    data: {\n        AWS_ACCESS_KEY_ID: \"EXAMPLE\",\n        AWS_SECRET_ACCESS_KEY: \"EXAMPLE\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.AcmeDnsPlugin(\"example\",\n    plugin=\"test\",\n    api=\"aws\",\n    data={\n        \"AWS_ACCESS_KEY_ID\": \"EXAMPLE\",\n        \"AWS_SECRET_ACCESS_KEY\": \"EXAMPLE\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new ProxmoxVE.AcmeDnsPlugin(\"example\", new()\n    {\n        Plugin = \"test\",\n        Api = \"aws\",\n        Data = \n        {\n            { \"AWS_ACCESS_KEY_ID\", \"EXAMPLE\" },\n            { \"AWS_SECRET_ACCESS_KEY\", \"EXAMPLE\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := proxmoxve.NewAcmeDnsPlugin(ctx, \"example\", \u0026proxmoxve.AcmeDnsPluginArgs{\n\t\t\tPlugin: pulumi.String(\"test\"),\n\t\t\tApi:    pulumi.String(\"aws\"),\n\t\t\tData: pulumi.StringMap{\n\t\t\t\t\"AWS_ACCESS_KEY_ID\":     pulumi.String(\"EXAMPLE\"),\n\t\t\t\t\"AWS_SECRET_ACCESS_KEY\": pulumi.String(\"EXAMPLE\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.AcmeDnsPlugin;\nimport io.muehlbachler.pulumi.proxmoxve.AcmeDnsPluginArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new AcmeDnsPlugin(\"example\", AcmeDnsPluginArgs.builder()\n            .plugin(\"test\")\n            .api(\"aws\")\n            .data(Map.ofEntries(\n                Map.entry(\"AWS_ACCESS_KEY_ID\", \"EXAMPLE\"),\n                Map.entry(\"AWS_SECRET_ACCESS_KEY\", \"EXAMPLE\")\n            ))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:AcmeDnsPlugin\n    properties:\n      plugin: test\n      api: aws\n      data:\n        AWS_ACCESS_KEY_ID: EXAMPLE\n        AWS_SECRET_ACCESS_KEY: EXAMPLE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nACME accounts can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:index/acmeDnsPlugin:AcmeDnsPlugin example test\n```\n\n","properties":{"api":{"type":"string","description":"API plugin name.\n"},"data":{"type":"object","additionalProperties":{"type":"string"},"description":"DNS plugin data.\n"},"digest":{"type":"string","description":"SHA1 digest of the current configuration. Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.\n"},"disable":{"type":"boolean","description":"Flag to disable the config.\n"},"plugin":{"type":"string","description":"ACME Plugin ID name.\n"},"validationDelay":{"type":"integer","description":"Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records (0 - 172800).\n"}},"required":["api","digest","plugin","validationDelay"],"inputProperties":{"api":{"type":"string","description":"API plugin name.\n"},"data":{"type":"object","additionalProperties":{"type":"string"},"description":"DNS plugin data.\n"},"digest":{"type":"string","description":"SHA1 digest of the current configuration. Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.\n"},"disable":{"type":"boolean","description":"Flag to disable the config.\n"},"plugin":{"type":"string","description":"ACME Plugin ID name.\n"},"validationDelay":{"type":"integer","description":"Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records (0 - 172800).\n"}},"requiredInputs":["api","plugin"],"stateInputs":{"description":"Input properties used for looking up and filtering AcmeDnsPlugin resources.\n","properties":{"api":{"type":"string","description":"API plugin name.\n"},"data":{"type":"object","additionalProperties":{"type":"string"},"description":"DNS plugin data.\n"},"digest":{"type":"string","description":"SHA1 digest of the current configuration. Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.\n"},"disable":{"type":"boolean","description":"Flag to disable the config.\n"},"plugin":{"type":"string","description":"ACME Plugin ID name.\n"},"validationDelay":{"type":"integer","description":"Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records (0 - 172800).\n"}},"type":"object"}},"proxmoxve:index/certifi:Certifi":{"description":"Manages the custom SSL/TLS certificate for a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\nimport * as tls from \"@pulumi/tls\";\n\nconst proxmoxVirtualEnvironmentCertificate = new tls.PrivateKey(\"proxmox_virtual_environment_certificate\", {\n    algorithm: \"RSA\",\n    rsaBits: 2048,\n});\nconst proxmoxVirtualEnvironmentCertificateSelfSignedCert = new tls.SelfSignedCert(\"proxmox_virtual_environment_certificate\", {\n    keyAlgorithm: proxmoxVirtualEnvironmentCertificate.algorithm,\n    privateKeyPem: proxmoxVirtualEnvironmentCertificate.privateKeyPem,\n    subject: {\n        commonName: \"example.com\",\n        organization: \"Terraform Provider for Proxmox\",\n    },\n    validityPeriodHours: 8760,\n    allowedUses: [\n        \"key_encipherment\",\n        \"digital_signature\",\n        \"server_auth\",\n    ],\n});\nconst example = new proxmoxve.Certifi(\"example\", {\n    certificate: proxmoxVirtualEnvironmentCertificateSelfSignedCert.certPem,\n    nodeName: \"first-node\",\n    privateKey: proxmoxVirtualEnvironmentCertificate.privateKeyPem,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\nimport pulumi_tls as tls\n\nproxmox_virtual_environment_certificate = tls.PrivateKey(\"proxmox_virtual_environment_certificate\",\n    algorithm=\"RSA\",\n    rsa_bits=2048)\nproxmox_virtual_environment_certificate_self_signed_cert = tls.SelfSignedCert(\"proxmox_virtual_environment_certificate\",\n    key_algorithm=proxmox_virtual_environment_certificate.algorithm,\n    private_key_pem=proxmox_virtual_environment_certificate.private_key_pem,\n    subject={\n        \"common_name\": \"example.com\",\n        \"organization\": \"Terraform Provider for Proxmox\",\n    },\n    validity_period_hours=8760,\n    allowed_uses=[\n        \"key_encipherment\",\n        \"digital_signature\",\n        \"server_auth\",\n    ])\nexample = proxmoxve.Certifi(\"example\",\n    certificate=proxmox_virtual_environment_certificate_self_signed_cert.cert_pem,\n    node_name=\"first-node\",\n    private_key=proxmox_virtual_environment_certificate.private_key_pem)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\nusing Tls = Pulumi.Tls;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var proxmoxVirtualEnvironmentCertificate = new Tls.PrivateKey(\"proxmox_virtual_environment_certificate\", new()\n    {\n        Algorithm = \"RSA\",\n        RsaBits = 2048,\n    });\n\n    var proxmoxVirtualEnvironmentCertificateSelfSignedCert = new Tls.SelfSignedCert(\"proxmox_virtual_environment_certificate\", new()\n    {\n        KeyAlgorithm = proxmoxVirtualEnvironmentCertificate.Algorithm,\n        PrivateKeyPem = proxmoxVirtualEnvironmentCertificate.PrivateKeyPem,\n        Subject = new Tls.Inputs.SelfSignedCertSubjectArgs\n        {\n            CommonName = \"example.com\",\n            Organization = \"Terraform Provider for Proxmox\",\n        },\n        ValidityPeriodHours = 8760,\n        AllowedUses = new[]\n        {\n            \"key_encipherment\",\n            \"digital_signature\",\n            \"server_auth\",\n        },\n    });\n\n    var example = new ProxmoxVE.Certifi(\"example\", new()\n    {\n        Certificate = proxmoxVirtualEnvironmentCertificateSelfSignedCert.CertPem,\n        NodeName = \"first-node\",\n        PrivateKey = proxmoxVirtualEnvironmentCertificate.PrivateKeyPem,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve\"\n\t\"github.com/pulumi/pulumi-tls/sdk/v5/go/tls\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproxmoxVirtualEnvironmentCertificate, err := tls.NewPrivateKey(ctx, \"proxmox_virtual_environment_certificate\", \u0026tls.PrivateKeyArgs{\n\t\t\tAlgorithm: pulumi.String(\"RSA\"),\n\t\t\tRsaBits:   pulumi.Int(2048),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproxmoxVirtualEnvironmentCertificateSelfSignedCert, err := tls.NewSelfSignedCert(ctx, \"proxmox_virtual_environment_certificate\", \u0026tls.SelfSignedCertArgs{\n\t\t\tKeyAlgorithm:  proxmoxVirtualEnvironmentCertificate.Algorithm,\n\t\t\tPrivateKeyPem: proxmoxVirtualEnvironmentCertificate.PrivateKeyPem,\n\t\t\tSubject: \u0026tls.SelfSignedCertSubjectArgs{\n\t\t\t\tCommonName:   pulumi.String(\"example.com\"),\n\t\t\t\tOrganization: pulumi.String(\"Terraform Provider for Proxmox\"),\n\t\t\t},\n\t\t\tValidityPeriodHours: pulumi.Int(8760),\n\t\t\tAllowedUses: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"key_encipherment\"),\n\t\t\t\tpulumi.String(\"digital_signature\"),\n\t\t\t\tpulumi.String(\"server_auth\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = proxmoxve.NewCertifi(ctx, \"example\", \u0026proxmoxve.CertifiArgs{\n\t\t\tCertificate: proxmoxVirtualEnvironmentCertificateSelfSignedCert.CertPem,\n\t\t\tNodeName:    pulumi.String(\"first-node\"),\n\t\t\tPrivateKey:  proxmoxVirtualEnvironmentCertificate.PrivateKeyPem,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.tls.PrivateKey;\nimport com.pulumi.tls.PrivateKeyArgs;\nimport com.pulumi.tls.SelfSignedCert;\nimport com.pulumi.tls.SelfSignedCertArgs;\nimport com.pulumi.tls.inputs.SelfSignedCertSubjectArgs;\nimport io.muehlbachler.pulumi.proxmoxve.Certifi;\nimport io.muehlbachler.pulumi.proxmoxve.CertifiArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var proxmoxVirtualEnvironmentCertificate = new PrivateKey(\"proxmoxVirtualEnvironmentCertificate\", PrivateKeyArgs.builder()\n            .algorithm(\"RSA\")\n            .rsaBits(2048)\n            .build());\n\n        var proxmoxVirtualEnvironmentCertificateSelfSignedCert = new SelfSignedCert(\"proxmoxVirtualEnvironmentCertificateSelfSignedCert\", SelfSignedCertArgs.builder()\n            .keyAlgorithm(proxmoxVirtualEnvironmentCertificate.algorithm())\n            .privateKeyPem(proxmoxVirtualEnvironmentCertificate.privateKeyPem())\n            .subject(SelfSignedCertSubjectArgs.builder()\n                .commonName(\"example.com\")\n                .organization(\"Terraform Provider for Proxmox\")\n                .build())\n            .validityPeriodHours(8760)\n            .allowedUses(            \n                \"key_encipherment\",\n                \"digital_signature\",\n                \"server_auth\")\n            .build());\n\n        var example = new Certifi(\"example\", CertifiArgs.builder()\n            .certificate(proxmoxVirtualEnvironmentCertificateSelfSignedCert.certPem())\n            .nodeName(\"first-node\")\n            .privateKey(proxmoxVirtualEnvironmentCertificate.privateKeyPem())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:Certifi\n    properties:\n      certificate: ${proxmoxVirtualEnvironmentCertificateSelfSignedCert.certPem}\n      nodeName: first-node\n      privateKey: ${proxmoxVirtualEnvironmentCertificate.privateKeyPem}\n  proxmoxVirtualEnvironmentCertificate:\n    type: tls:PrivateKey\n    name: proxmox_virtual_environment_certificate\n    properties:\n      algorithm: RSA\n      rsaBits: 2048\n  proxmoxVirtualEnvironmentCertificateSelfSignedCert:\n    type: tls:SelfSignedCert\n    name: proxmox_virtual_environment_certificate\n    properties:\n      keyAlgorithm: ${proxmoxVirtualEnvironmentCertificate.algorithm}\n      privateKeyPem: ${proxmoxVirtualEnvironmentCertificate.privateKeyPem}\n      subject:\n        commonName: example.com\n        organization: Terraform Provider for Proxmox\n      validityPeriodHours: 8760\n      allowedUses:\n        - key_encipherment\n        - digital_signature\n        - server_auth\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"certificate":{"type":"string","description":"The PEM encoded certificate.\n"},"certificateChain":{"type":"string","description":"The PEM encoded certificate chain.\n"},"expirationDate":{"type":"string","description":"The expiration date (RFC 3339).\n"},"fileName":{"type":"string","description":"The file name.\n"},"issuer":{"type":"string","description":"The issuer.\n"},"nodeName":{"type":"string","description":"A node name.\n"},"overwrite":{"type":"boolean","description":"Whether to overwrite an existing certificate"},"privateKey":{"type":"string","description":"The PEM encoded private key.\n","secret":true},"publicKeySize":{"type":"integer","description":"The public key size.\n"},"publicKeyType":{"type":"string","description":"The public key type.\n"},"sslFingerprint":{"type":"string","description":"The SSL fingerprint.\n"},"startDate":{"type":"string","description":"The start date (RFC 3339).\n"},"subject":{"type":"string","description":"The subject.\n"},"subjectAlternativeNames":{"type":"array","items":{"type":"string"},"description":"The subject alternative names.\n"}},"required":["certificate","expirationDate","fileName","issuer","nodeName","privateKey","publicKeySize","publicKeyType","sslFingerprint","startDate","subject","subjectAlternativeNames"],"inputProperties":{"certificate":{"type":"string","description":"The PEM encoded certificate.\n"},"certificateChain":{"type":"string","description":"The PEM encoded certificate chain.\n"},"nodeName":{"type":"string","description":"A node name.\n","willReplaceOnChanges":true},"overwrite":{"type":"boolean","description":"Whether to overwrite an existing certificate"},"privateKey":{"type":"string","description":"The PEM encoded private key.\n","secret":true}},"requiredInputs":["certificate","nodeName","privateKey"],"stateInputs":{"description":"Input properties used for looking up and filtering Certifi resources.\n","properties":{"certificate":{"type":"string","description":"The PEM encoded certificate.\n"},"certificateChain":{"type":"string","description":"The PEM encoded certificate chain.\n"},"expirationDate":{"type":"string","description":"The expiration date (RFC 3339).\n"},"fileName":{"type":"string","description":"The file name.\n"},"issuer":{"type":"string","description":"The issuer.\n"},"nodeName":{"type":"string","description":"A node name.\n","willReplaceOnChanges":true},"overwrite":{"type":"boolean","description":"Whether to overwrite an existing certificate"},"privateKey":{"type":"string","description":"The PEM encoded private key.\n","secret":true},"publicKeySize":{"type":"integer","description":"The public key size.\n"},"publicKeyType":{"type":"string","description":"The public key type.\n"},"sslFingerprint":{"type":"string","description":"The SSL fingerprint.\n"},"startDate":{"type":"string","description":"The start date (RFC 3339).\n"},"subject":{"type":"string","description":"The subject.\n"},"subjectAlternativeNames":{"type":"array","items":{"type":"string"},"description":"The subject alternative names.\n"}},"type":"object"}},"proxmoxve:index/dNS:DNS":{"description":"Manages the DNS configuration for a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst firstNodeDnsConfiguration = proxmoxve.Network.getDNS({\n    nodeName: \"first-node\",\n});\nconst firstNodeDnsConfigurationDNS = new proxmoxve.DNS(\"first_node_dns_configuration\", {\n    domain: firstNodeDnsConfiguration.then(firstNodeDnsConfiguration =\u003e firstNodeDnsConfiguration.domain),\n    nodeName: firstNodeDnsConfiguration.then(firstNodeDnsConfiguration =\u003e firstNodeDnsConfiguration.nodeName),\n    servers: [\n        \"1.1.1.1\",\n        \"1.0.0.1\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfirst_node_dns_configuration = proxmoxve.Network.get_dns(node_name=\"first-node\")\nfirst_node_dns_configuration_dns = proxmoxve.DNS(\"first_node_dns_configuration\",\n    domain=first_node_dns_configuration.domain,\n    node_name=first_node_dns_configuration.node_name,\n    servers=[\n        \"1.1.1.1\",\n        \"1.0.0.1\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var firstNodeDnsConfiguration = ProxmoxVE.Network.GetDNS.Invoke(new()\n    {\n        NodeName = \"first-node\",\n    });\n\n    var firstNodeDnsConfigurationDNS = new ProxmoxVE.DNS(\"first_node_dns_configuration\", new()\n    {\n        Domain = firstNodeDnsConfiguration.Apply(getDNSResult =\u003e getDNSResult.Domain),\n        NodeName = firstNodeDnsConfiguration.Apply(getDNSResult =\u003e getDNSResult.NodeName),\n        Servers = new[]\n        {\n            \"1.1.1.1\",\n            \"1.0.0.1\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfirstNodeDnsConfiguration, err := network.GetDNS(ctx, \u0026network.GetDNSArgs{\n\t\t\tNodeName: \"first-node\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = proxmoxve.NewDNS(ctx, \"first_node_dns_configuration\", \u0026proxmoxve.DNSArgs{\n\t\t\tDomain:   pulumi.String(firstNodeDnsConfiguration.Domain),\n\t\t\tNodeName: pulumi.String(firstNodeDnsConfiguration.NodeName),\n\t\t\tServers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"1.1.1.1\"),\n\t\t\t\tpulumi.String(\"1.0.0.1\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.NetworkFunctions;\nimport com.pulumi.proxmoxve.Network.inputs.GetDNSArgs;\nimport io.muehlbachler.pulumi.proxmoxve.DNS;\nimport io.muehlbachler.pulumi.proxmoxve.DNSArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var firstNodeDnsConfiguration = NetworkFunctions.getDNS(GetDNSArgs.builder()\n            .nodeName(\"first-node\")\n            .build());\n\n        var firstNodeDnsConfigurationDNS = new DNS(\"firstNodeDnsConfigurationDNS\", DNSArgs.builder()\n            .domain(firstNodeDnsConfiguration.domain())\n            .nodeName(firstNodeDnsConfiguration.nodeName())\n            .servers(            \n                \"1.1.1.1\",\n                \"1.0.0.1\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  firstNodeDnsConfigurationDNS:\n    type: proxmoxve:DNS\n    name: first_node_dns_configuration\n    properties:\n      domain: ${firstNodeDnsConfiguration.domain}\n      nodeName: ${firstNodeDnsConfiguration.nodeName}\n      servers:\n        - 1.1.1.1\n        - 1.0.0.1\nvariables:\n  firstNodeDnsConfiguration:\n    fn::invoke:\n      function: proxmoxve:Network:getDNS\n      arguments:\n        nodeName: first-node\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Important Notes\n\nBe careful not to use this resource multiple times for the same node.\n\n## Import\n\nInstances can be imported using the `node_name`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:index/dNS:DNS first_node first-node\n```\n\n","properties":{"domain":{"type":"string","description":"The DNS search domain.\n"},"nodeName":{"type":"string","description":"A node name.\n"},"servers":{"type":"array","items":{"type":"string"},"description":"The DNS servers.\n"}},"required":["domain","nodeName"],"inputProperties":{"domain":{"type":"string","description":"The DNS search domain.\n"},"nodeName":{"type":"string","description":"A node name.\n","willReplaceOnChanges":true},"servers":{"type":"array","items":{"type":"string"},"description":"The DNS servers.\n"}},"requiredInputs":["domain","nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering DNS resources.\n","properties":{"domain":{"type":"string","description":"The DNS search domain.\n"},"nodeName":{"type":"string","description":"A node name.\n","willReplaceOnChanges":true},"servers":{"type":"array","items":{"type":"string"},"description":"The DNS servers.\n"}},"type":"object"}},"proxmoxve:index/hosts:Hosts":{"description":"Manages the host entries on a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst firstNodeHostEntries = new proxmoxve.Hosts(\"first_node_host_entries\", {\n    nodeName: \"first-node\",\n    entries: [{\n        address: \"127.0.0.1\",\n        hostnames: [\n            \"localhost\",\n            \"localhost.localdomain\",\n        ],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfirst_node_host_entries = proxmoxve.Hosts(\"first_node_host_entries\",\n    node_name=\"first-node\",\n    entries=[{\n        \"address\": \"127.0.0.1\",\n        \"hostnames\": [\n            \"localhost\",\n            \"localhost.localdomain\",\n        ],\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var firstNodeHostEntries = new ProxmoxVE.Hosts(\"first_node_host_entries\", new()\n    {\n        NodeName = \"first-node\",\n        Entries = new[]\n        {\n            new ProxmoxVE.Inputs.HostsEntryArgs\n            {\n                Address = \"127.0.0.1\",\n                Hostnames = new[]\n                {\n                    \"localhost\",\n                    \"localhost.localdomain\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := proxmoxve.NewHosts(ctx, \"first_node_host_entries\", \u0026proxmoxve.HostsArgs{\n\t\t\tNodeName: pulumi.String(\"first-node\"),\n\t\t\tEntries: []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"address\": \"127.0.0.1\",\n\t\t\t\t\t\"hostnames\": []string{\n\t\t\t\t\t\t\"localhost\",\n\t\t\t\t\t\t\"localhost.localdomain\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Hosts;\nimport io.muehlbachler.pulumi.proxmoxve.HostsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var firstNodeHostEntries = new Hosts(\"firstNodeHostEntries\", HostsArgs.builder()\n            .nodeName(\"first-node\")\n            .entries(List.of(Map.ofEntries(\n                Map.entry(\"address\", \"127.0.0.1\"),\n                Map.entry(\"hostnames\", List.of(                \n                    \"localhost\",\n                    \"localhost.localdomain\"))\n            )))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  firstNodeHostEntries:\n    type: proxmoxve:Hosts\n    name: first_node_host_entries\n    properties:\n      nodeName: first-node\n      entries:\n        - address: 127.0.0.1\n          hostnames:\n            - localhost\n            - localhost.localdomain\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Important Notes\n\nBe careful not to use this resource multiple times for the same node.\n\n## Import\n\nInstances can be imported using the `node_name`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:index/hosts:Hosts first_node_host_entries first-node\n```\n\n","properties":{"addresses":{"type":"array","items":{"type":"string"},"description":"The IP addresses.\n"},"digest":{"type":"string","description":"The SHA1 digest.\n"},"entries":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/HostsEntry:HostsEntry"},"description":"The host entries (conversion of \u003cspan pulumi-lang-nodejs=\"`addresses`\" pulumi-lang-dotnet=\"`Addresses`\" pulumi-lang-go=\"`addresses`\" pulumi-lang-python=\"`addresses`\" pulumi-lang-yaml=\"`addresses`\" pulumi-lang-java=\"`addresses`\"\u003e`addresses`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`hostnames`\" pulumi-lang-dotnet=\"`Hostnames`\" pulumi-lang-go=\"`hostnames`\" pulumi-lang-python=\"`hostnames`\" pulumi-lang-yaml=\"`hostnames`\" pulumi-lang-java=\"`hostnames`\"\u003e`hostnames`\u003c/span\u003e into\nobjects).\n"},"entry":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/HostsEntry:HostsEntry"},"description":"A host entry (multiple blocks supported).\n"},"hostnames":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"The hostnames associated with each of the IP addresses.\n"},"nodeName":{"type":"string","description":"A node name.\n"}},"required":["addresses","digest","entries","entry","hostnames","nodeName"],"inputProperties":{"entry":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/HostsEntry:HostsEntry"},"description":"A host entry (multiple blocks supported).\n"},"nodeName":{"type":"string","description":"A node name.\n"}},"requiredInputs":["entry","nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering Hosts resources.\n","properties":{"addresses":{"type":"array","items":{"type":"string"},"description":"The IP addresses.\n"},"digest":{"type":"string","description":"The SHA1 digest.\n"},"entries":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/HostsEntry:HostsEntry"},"description":"The host entries (conversion of \u003cspan pulumi-lang-nodejs=\"`addresses`\" pulumi-lang-dotnet=\"`Addresses`\" pulumi-lang-go=\"`addresses`\" pulumi-lang-python=\"`addresses`\" pulumi-lang-yaml=\"`addresses`\" pulumi-lang-java=\"`addresses`\"\u003e`addresses`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`hostnames`\" pulumi-lang-dotnet=\"`Hostnames`\" pulumi-lang-go=\"`hostnames`\" pulumi-lang-python=\"`hostnames`\" pulumi-lang-yaml=\"`hostnames`\" pulumi-lang-java=\"`hostnames`\"\u003e`hostnames`\u003c/span\u003e into\nobjects).\n"},"entry":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/HostsEntry:HostsEntry"},"description":"A host entry (multiple blocks supported).\n"},"hostnames":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"The hostnames associated with each of the IP addresses.\n"},"nodeName":{"type":"string","description":"A node name.\n"}},"type":"object"}},"proxmoxve:index/time:Time":{"description":"Manages the time for a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst firstNodeTime = new proxmoxve.Time(\"first_node_time\", {\n    nodeName: \"first-node\",\n    timeZone: \"UTC\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfirst_node_time = proxmoxve.Time(\"first_node_time\",\n    node_name=\"first-node\",\n    time_zone=\"UTC\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var firstNodeTime = new ProxmoxVE.Time(\"first_node_time\", new()\n    {\n        NodeName = \"first-node\",\n        TimeZone = \"UTC\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := proxmoxve.NewTime(ctx, \"first_node_time\", \u0026proxmoxve.TimeArgs{\n\t\t\tNodeName: pulumi.String(\"first-node\"),\n\t\t\tTimeZone: pulumi.String(\"UTC\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport io.muehlbachler.pulumi.proxmoxve.Time;\nimport io.muehlbachler.pulumi.proxmoxve.TimeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var firstNodeTime = new Time(\"firstNodeTime\", TimeArgs.builder()\n            .nodeName(\"first-node\")\n            .timeZone(\"UTC\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  firstNodeTime:\n    type: proxmoxve:Time\n    name: first_node_time\n    properties:\n      nodeName: first-node\n      timeZone: UTC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `node_name`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:index/time:Time first_node first-node\n```\n\n","properties":{"localTime":{"type":"string","description":"The node's local time.\n"},"nodeName":{"type":"string","description":"A node name.\n"},"timeZone":{"type":"string","description":"The node's time zone.\n"},"utcTime":{"type":"string","description":"The node's time formatted as UTC.\n"}},"required":["localTime","nodeName","timeZone","utcTime"],"inputProperties":{"nodeName":{"type":"string","description":"A node name.\n"},"timeZone":{"type":"string","description":"The node's time zone.\n"}},"requiredInputs":["nodeName","timeZone"],"stateInputs":{"description":"Input properties used for looking up and filtering Time resources.\n","properties":{"localTime":{"type":"string","description":"The node's local time.\n"},"nodeName":{"type":"string","description":"A node name.\n"},"timeZone":{"type":"string","description":"The node's time zone.\n"},"utcTime":{"type":"string","description":"The node's time formatted as UTC.\n"}},"type":"object"}}},"functions":{"proxmoxve:Acme/getAccount:getAccount":{"description":"Retrieves information about a specific ACME account.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\n// This will fetch all ACME accounts...\nconst all = proxmoxve.Acme.getAccounts({});\n// ...which we will go through in order to fetch the whole data on each account.\nconst example = all.then(all =\u003e .reduce((__obj, [__key, __value]) =\u003e ({ ...__obj, [__key]: proxmoxve.Acme.getAccount({\n    name: __value,\n}) })));\nexport const dataProxmoxVirtualEnvironmentAcmeAccount = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# This will fetch all ACME accounts...\nall = proxmoxve.Acme.get_accounts()\n# ...which we will go through in order to fetch the whole data on each account.\nexample = {__key: proxmoxve.Acme.get_account(name=__value) for __key, __value in all.accounts}\npulumi.export(\"dataProxmoxVirtualEnvironmentAcmeAccount\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // This will fetch all ACME accounts...\n    var all = ProxmoxVE.Acme.GetAccounts.Invoke();\n\n    // ...which we will go through in order to fetch the whole data on each account.\n    var example = ;\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentAcmeAccount\"] = example,\n    };\n});\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getAccount.\n","properties":{"name":{"type":"string","description":"The identifier of the ACME account to read.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getAccount.\n","properties":{"account":{"$ref":"#/types/proxmoxve:Acme/getAccountAccount:getAccountAccount","description":"The ACME account information.\n"},"directory":{"description":"The directory URL of the ACME account.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"location":{"description":"The location URL of the ACME account.\n","type":"string"},"name":{"description":"The identifier of the ACME account to read.\n","type":"string"},"tos":{"description":"The URL of the terms of service of the ACME account.\n","type":"string"}},"required":["account","directory","location","tos","id"],"type":"object"}},"proxmoxve:Acme/getAccounts:getAccounts":{"description":"Retrieves the list of ACME accounts.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = proxmoxve.Acme.getAccounts({});\nexport const dataProxmoxVirtualEnvironmentAcmeAccounts = example.then(example =\u003e example.accounts);\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Acme.get_accounts()\npulumi.export(\"dataProxmoxVirtualEnvironmentAcmeAccounts\", example.accounts)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ProxmoxVE.Acme.GetAccounts.Invoke();\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentAcmeAccounts\"] = example.Apply(getAccountsResult =\u003e getAccountsResult.Accounts),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/acme\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := acme.GetAccounts(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentAcmeAccounts\", example.Accounts)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Acme.AcmeFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = AcmeFunctions.getAccounts(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);\n\n        ctx.export(\"dataProxmoxVirtualEnvironmentAcmeAccounts\", example.accounts());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: proxmoxve:Acme:getAccounts\n      arguments: {}\noutputs:\n  dataProxmoxVirtualEnvironmentAcmeAccounts: ${example.accounts}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getAccounts.\n","properties":{"accounts":{"description":"The identifiers of the ACME accounts.\n","items":{"type":"string"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"}},"required":["accounts","id"],"type":"object"}},"proxmoxve:Acme/getPlugin:getPlugin":{"description":"Retrieves a single ACME plugin by plugin ID name.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = proxmoxve.Acme.getPlugin({\n    plugin: \"standalone\",\n});\nexport const dataProxmoxVirtualEnvironmentAcmePlugin = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Acme.get_plugin(plugin=\"standalone\")\npulumi.export(\"dataProxmoxVirtualEnvironmentAcmePlugin\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ProxmoxVE.Acme.GetPlugin.Invoke(new()\n    {\n        Plugin = \"standalone\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentAcmePlugin\"] = example,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/acme\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := acme.GetPlugin(ctx, \u0026acme.GetPluginArgs{\n\t\t\tPlugin: \"standalone\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentAcmePlugin\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Acme.AcmeFunctions;\nimport com.pulumi.proxmoxve.Acme.inputs.GetPluginArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = AcmeFunctions.getPlugin(GetPluginArgs.builder()\n            .plugin(\"standalone\")\n            .build());\n\n        ctx.export(\"dataProxmoxVirtualEnvironmentAcmePlugin\", example);\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: proxmoxve:Acme:getPlugin\n      arguments:\n        plugin: standalone\noutputs:\n  dataProxmoxVirtualEnvironmentAcmePlugin: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getPlugin.\n","properties":{"plugin":{"type":"string","description":"ACME Plugin ID name.\n"}},"type":"object","required":["plugin"]},"outputs":{"description":"A collection of values returned by getPlugin.\n","properties":{"api":{"description":"API plugin name.\n","type":"string"},"data":{"additionalProperties":{"type":"string"},"description":"DNS plugin data.\n","type":"object"},"digest":{"description":"Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"plugin":{"description":"ACME Plugin ID name.\n","type":"string"},"type":{"description":"ACME challenge type (dns, standalone).\n","type":"string"},"validationDelay":{"description":"Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records (0 - 172800).\n","type":"integer"}},"required":["api","data","digest","plugin","type","validationDelay","id"],"type":"object"}},"proxmoxve:Acme/getPlugins:getPlugins":{"description":"Retrieves the list of ACME plugins.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = proxmoxve.Acme.getPlugins({});\nexport const dataProxmoxVirtualEnvironmentAcmePlugins = example.then(example =\u003e example.plugins);\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Acme.get_plugins()\npulumi.export(\"dataProxmoxVirtualEnvironmentAcmePlugins\", example.plugins)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ProxmoxVE.Acme.GetPlugins.Invoke();\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentAcmePlugins\"] = example.Apply(getPluginsResult =\u003e getPluginsResult.Plugins),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/acme\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := acme.GetPlugins(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentAcmePlugins\", example.Plugins)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Acme.AcmeFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = AcmeFunctions.getPlugins(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);\n\n        ctx.export(\"dataProxmoxVirtualEnvironmentAcmePlugins\", example.plugins());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: proxmoxve:Acme:getPlugins\n      arguments: {}\noutputs:\n  dataProxmoxVirtualEnvironmentAcmePlugins: ${example.plugins}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getPlugins.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"plugins":{"description":"List of ACME plugins\n","items":{"$ref":"#/types/proxmoxve:Acme/getPluginsPlugin:getPluginsPlugin"},"type":"array"}},"required":["plugins","id"],"type":"object"}},"proxmoxve:Apt/getRepository:getRepository":{"description":"Retrieves an APT repository from a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = proxmoxve.Apt.getRepository({\n    filePath: \"/etc/apt/sources.list\",\n    index: 0,\n    node: \"pve\",\n});\nexport const proxmoxVirtualEnvironmentAptRepository = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Apt.get_repository(file_path=\"/etc/apt/sources.list\",\n    index=0,\n    node=\"pve\")\npulumi.export(\"proxmoxVirtualEnvironmentAptRepository\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ProxmoxVE.Apt.GetRepository.Invoke(new()\n    {\n        FilePath = \"/etc/apt/sources.list\",\n        Index = 0,\n        Node = \"pve\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"proxmoxVirtualEnvironmentAptRepository\"] = example,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/apt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := apt.GetRepository(ctx, \u0026apt.GetRepositoryArgs{\n\t\t\tFilePath: \"/etc/apt/sources.list\",\n\t\t\tIndex:    0,\n\t\t\tNode:     \"pve\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"proxmoxVirtualEnvironmentAptRepository\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Apt.AptFunctions;\nimport com.pulumi.proxmoxve.Apt.inputs.GetRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = AptFunctions.getRepository(GetRepositoryArgs.builder()\n            .filePath(\"/etc/apt/sources.list\")\n            .index(0)\n            .node(\"pve\")\n            .build());\n\n        ctx.export(\"proxmoxVirtualEnvironmentAptRepository\", example);\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: proxmoxve:Apt:getRepository\n      arguments:\n        filePath: /etc/apt/sources.list\n        index: 0\n        node: pve\noutputs:\n  proxmoxVirtualEnvironmentAptRepository: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getRepository.\n","properties":{"filePath":{"type":"string","description":"The absolute path of the source list file that contains this repository.\n"},"index":{"type":"integer","description":"The index within the defining source list file.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"}},"type":"object","required":["filePath","index","node"]},"outputs":{"description":"A collection of values returned by getRepository.\n","properties":{"comment":{"description":"The associated comment.\n","type":"string"},"components":{"description":"The list of components.\n","items":{"type":"string"},"type":"array"},"enabled":{"description":"Indicates the activation status.\n","type":"boolean"},"filePath":{"description":"The absolute path of the source list file that contains this repository.\n","type":"string"},"fileType":{"description":"The format of the defining source list file.\n","type":"string"},"id":{"description":"The unique identifier of this APT repository data source.\n","type":"string"},"index":{"description":"The index within the defining source list file.\n","type":"integer"},"node":{"description":"The name of the target Proxmox VE node.\n","type":"string"},"packageTypes":{"description":"The list of package types.\n","items":{"type":"string"},"type":"array"},"suites":{"description":"The list of package distributions.\n","items":{"type":"string"},"type":"array"},"uris":{"description":"The list of repository URIs.\n","items":{"type":"string"},"type":"array"}},"required":["comment","components","enabled","filePath","fileType","id","index","node","packageTypes","suites","uris"],"type":"object"}},"proxmoxve:Apt/standard/getRepository:getRepository":{"description":"Retrieves an APT standard repository from a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = proxmoxve.Apt.standard.getRepository({\n    handle: \"no-subscription\",\n    node: \"pve\",\n});\nexport const proxmoxVirtualEnvironmentAptStandardRepository = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Apt.standard.get_repository(handle=\"no-subscription\",\n    node=\"pve\")\npulumi.export(\"proxmoxVirtualEnvironmentAptStandardRepository\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ProxmoxVE.Apt.Standard.GetRepository.Invoke(new()\n    {\n        Handle = \"no-subscription\",\n        Node = \"pve\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"proxmoxVirtualEnvironmentAptStandardRepository\"] = example,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/apt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := apt.GetRepository(ctx, \u0026standard.GetRepositoryArgs{\n\t\t\tHandle: \"no-subscription\",\n\t\t\tNode:   \"pve\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"proxmoxVirtualEnvironmentAptStandardRepository\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Apt_standard.Apt_standardFunctions;\nimport com.pulumi.proxmoxve.Apt.inputs.GetRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = Apt_standardFunctions.getRepository(GetRepositoryArgs.builder()\n            .handle(\"no-subscription\")\n            .node(\"pve\")\n            .build());\n\n        ctx.export(\"proxmoxVirtualEnvironmentAptStandardRepository\", example);\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: proxmoxve:Apt/standard:getRepository\n      arguments:\n        handle: no-subscription\n        node: pve\noutputs:\n  proxmoxVirtualEnvironmentAptStandardRepository: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getRepository.\n","properties":{"handle":{"type":"string","description":"The handle of the APT standard repository.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"}},"type":"object","required":["handle","node"]},"outputs":{"description":"A collection of values returned by getRepository.\n","properties":{"description":{"description":"The description of the APT standard repository.\n","type":"string"},"filePath":{"description":"The absolute path of the source list file that contains this standard repository.\n","type":"string"},"handle":{"description":"The handle of the APT standard repository.\n","type":"string"},"id":{"description":"The unique identifier of this APT standard repository data source.\n","type":"string"},"index":{"description":"The index within the defining source list file.\n","type":"integer"},"name":{"description":"The name of the APT standard repository.\n","type":"string"},"node":{"description":"The name of the target Proxmox VE node.\n","type":"string"},"status":{"description":"Indicates the activation status.\n","type":"integer"}},"required":["description","filePath","handle","id","index","name","node","status"],"type":"object"}},"proxmoxve:Cluster/getNodes:getNodes":{"description":"Retrieves information about all available Proxmox VE nodes.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = proxmoxve.Cluster.getNodes({});\nexport const dataProxmoxVirtualEnvironmentNodes = {\n    names: example.then(example =\u003e example.names),\n    cpuCount: example.then(example =\u003e example.cpuCounts),\n    online: example.then(example =\u003e example.onlines),\n};\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Cluster.get_nodes()\npulumi.export(\"dataProxmoxVirtualEnvironmentNodes\", {\n    \"names\": example.names,\n    \"cpuCount\": example.cpu_counts,\n    \"online\": example.onlines,\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ProxmoxVE.Cluster.GetNodes.Invoke();\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentNodes\"] = \n        {\n            { \"names\", example.Apply(getNodesResult =\u003e getNodesResult.Names) },\n            { \"cpuCount\", example.Apply(getNodesResult =\u003e getNodesResult.CpuCounts) },\n            { \"online\", example.Apply(getNodesResult =\u003e getNodesResult.Onlines) },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/cluster\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\nexample, err := cluster.GetNodes(ctx, map[string]interface{}{\n}, nil);\nif err != nil {\nreturn err\n}\nctx.Export(\"dataProxmoxVirtualEnvironmentNodes\", interface{}Map{\n\"names\": example.Names,\n\"cpuCount\": example.CpuCounts,\n\"online\": example.Onlines,\n})\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Cluster.ClusterFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ClusterFunctions.getNodes(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);\n\n        ctx.export(\"dataProxmoxVirtualEnvironmentNodes\", Map.ofEntries(\n            Map.entry(\"names\", example.names()),\n            Map.entry(\"cpuCount\", example.cpuCounts()),\n            Map.entry(\"online\", example.onlines())\n        ));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: proxmoxve:Cluster:getNodes\n      arguments: {}\noutputs:\n  dataProxmoxVirtualEnvironmentNodes:\n    names: ${example.names}\n    cpuCount: ${example.cpuCounts}\n    online: ${example.onlines}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getNodes.\n","properties":{"cpuCounts":{"description":"The total number of logical CPUs on each node\n","items":{"type":"integer"},"type":"array"},"cpuUtilizations":{"description":"The CPU utilization on each node\n","items":{"type":"number"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"memoryAvailables":{"description":"The available memory in bytes on each node\n","items":{"type":"integer"},"type":"array"},"memoryUseds":{"description":"The used memory in bytes on each node\n","items":{"type":"integer"},"type":"array"},"names":{"description":"The node names\n","items":{"type":"string"},"type":"array"},"onlines":{"description":"Whether a node is online\n","items":{"type":"boolean"},"type":"array"},"sslFingerprints":{"description":"The SSL fingerprint for each node\n","items":{"type":"string"},"type":"array"},"supportLevels":{"description":"The support level for each node\n","items":{"type":"string"},"type":"array"},"uptimes":{"description":"The uptime in seconds for each node\n","items":{"type":"integer"},"type":"array"}},"required":["cpuCounts","cpuUtilizations","memoryAvailables","memoryUseds","names","onlines","sslFingerprints","supportLevels","uptimes","id"],"type":"object"}},"proxmoxve:HA/getHAGroup:getHAGroup":{"description":"Retrieves information about a specific High Availability group.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\n// This will fetch the set of HA group identifiers...\nconst all = proxmoxve.HA.getHAGroups({});\n// ...which we will go through in order to fetch the whole data on each group.\nconst example = all.then(all =\u003e .reduce((__obj, [__key, __value]) =\u003e ({ ...__obj, [__key]: proxmoxve.HA.getHAGroup({\n    group: __value,\n}) })));\nexport const proxmoxVirtualEnvironmentHagroupsFull = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# This will fetch the set of HA group identifiers...\nall = proxmoxve.HA.get_ha_groups()\n# ...which we will go through in order to fetch the whole data on each group.\nexample = {__key: proxmoxve.HA.get_ha_group(group=__value) for __key, __value in all.group_ids}\npulumi.export(\"proxmoxVirtualEnvironmentHagroupsFull\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // This will fetch the set of HA group identifiers...\n    var all = ProxmoxVE.HA.GetHAGroups.Invoke();\n\n    // ...which we will go through in order to fetch the whole data on each group.\n    var example = ;\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"proxmoxVirtualEnvironmentHagroupsFull\"] = example,\n    };\n});\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getHAGroup.\n","properties":{"group":{"type":"string","description":"The identifier of the High Availability group to read.\n"}},"type":"object","required":["group"]},"outputs":{"description":"A collection of values returned by getHAGroup.\n","properties":{"comment":{"description":"The comment associated with this group\n","type":"string"},"group":{"description":"The identifier of the High Availability group to read.\n","type":"string"},"id":{"description":"The unique identifier of this resource.\n","type":"string"},"noFailback":{"description":"A flag that indicates that failing back to a higher priority node is disabled for this HA group.\n","type":"boolean"},"nodes":{"additionalProperties":{"type":"integer"},"description":"The member nodes for this group. They are provided as a map, where the keys are the node names and the values represent their priority: integers for known priorities or \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e for unset priorities.\n","type":"object"},"restricted":{"description":"A flag that indicates that other nodes may not be used to run resources associated to this HA group.\n","type":"boolean"}},"required":["comment","group","id","noFailback","nodes","restricted"],"type":"object"}},"proxmoxve:HA/getHAGroups:getHAGroups":{"description":"Retrieves the list of High Availability groups.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = proxmoxve.HA.getHAGroups({});\nexport const dataProxmoxVirtualEnvironmentHagroups = example.then(example =\u003e example.groupIds);\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.HA.get_ha_groups()\npulumi.export(\"dataProxmoxVirtualEnvironmentHagroups\", example.group_ids)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ProxmoxVE.HA.GetHAGroups.Invoke();\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentHagroups\"] = example.Apply(getHAGroupsResult =\u003e getHAGroupsResult.GroupIds),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/ha\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := ha.GetHAGroups(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentHagroups\", example.GroupIds)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.HA.HAFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = HAFunctions.getHAGroups(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);\n\n        ctx.export(\"dataProxmoxVirtualEnvironmentHagroups\", example.groupIds());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: proxmoxve:HA:getHAGroups\n      arguments: {}\noutputs:\n  dataProxmoxVirtualEnvironmentHagroups: ${example.groupIds}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getHAGroups.\n","properties":{"groupIds":{"description":"The identifiers of the High Availability groups.\n","items":{"type":"string"},"type":"array"},"id":{"description":"The unique identifier of this resource.\n","type":"string"}},"required":["groupIds","id"],"type":"object"}},"proxmoxve:HA/getHAResource:getHAResource":{"description":"Retrieves the list of High Availability resources.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\n// This will fetch the set of all HA resource identifiers...\nconst all = proxmoxve.HA.getHAResources({});\n// ...which we will go through in order to fetch the whole record for each resource.\nconst example = all.then(all =\u003e .reduce((__obj, [__key, __value]) =\u003e ({ ...__obj, [__key]: proxmoxve.HA.getHAResource({\n    resourceId: __value,\n}) })));\nexport const proxmoxVirtualEnvironmentHaresourcesFull = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# This will fetch the set of all HA resource identifiers...\nall = proxmoxve.HA.get_ha_resources()\n# ...which we will go through in order to fetch the whole record for each resource.\nexample = {__key: proxmoxve.HA.get_ha_resource(resource_id=__value) for __key, __value in all.resource_ids}\npulumi.export(\"proxmoxVirtualEnvironmentHaresourcesFull\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // This will fetch the set of all HA resource identifiers...\n    var all = ProxmoxVE.HA.GetHAResources.Invoke();\n\n    // ...which we will go through in order to fetch the whole record for each resource.\n    var example = ;\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"proxmoxVirtualEnvironmentHaresourcesFull\"] = example,\n    };\n});\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getHAResource.\n","properties":{"resourceId":{"type":"string","description":"The identifier of the Proxmox HA resource to read.\n"}},"type":"object","required":["resourceId"]},"outputs":{"description":"A collection of values returned by getHAResource.\n","properties":{"comment":{"description":"The comment associated with this resource.\n","type":"string"},"group":{"description":"The identifier of the High Availability group this resource is a member of.\n","type":"string"},"id":{"description":"The unique identifier of this resource.\n","type":"string"},"maxRelocate":{"description":"The maximal number of relocation attempts.\n","type":"integer"},"maxRestart":{"description":"The maximal number of restart attempts.\n","type":"integer"},"resourceId":{"description":"The identifier of the Proxmox HA resource to read.\n","type":"string"},"state":{"description":"The desired state of the resource.\n","type":"string"},"type":{"description":"The type of High Availability resource (\u003cspan pulumi-lang-nodejs=\"`vm`\" pulumi-lang-dotnet=\"`Vm`\" pulumi-lang-go=\"`vm`\" pulumi-lang-python=\"`vm`\" pulumi-lang-yaml=\"`vm`\" pulumi-lang-java=\"`vm`\"\u003e`vm`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ct`\" pulumi-lang-dotnet=\"`Ct`\" pulumi-lang-go=\"`ct`\" pulumi-lang-python=\"`ct`\" pulumi-lang-yaml=\"`ct`\" pulumi-lang-java=\"`ct`\"\u003e`ct`\u003c/span\u003e).\n","type":"string"}},"required":["comment","group","id","maxRelocate","maxRestart","resourceId","state","type"],"type":"object"}},"proxmoxve:HA/getHAResources:getHAResources":{"description":"Retrieves the list of High Availability resources.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\n// This will fetch the set of all HA resource identifiers.\nconst exampleAll = proxmoxve.HA.getHAResources({});\n// This will fetch the set of HA resource identifiers that correspond to virtual machines.\nconst exampleVm = proxmoxve.HA.getHAResources({\n    type: \"vm\",\n});\nexport const dataProxmoxVirtualEnvironmentHaresources = {\n    all: exampleAll.then(exampleAll =\u003e exampleAll.resourceIds),\n    vms: exampleVm.then(exampleVm =\u003e exampleVm.resourceIds),\n};\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# This will fetch the set of all HA resource identifiers.\nexample_all = proxmoxve.HA.get_ha_resources()\n# This will fetch the set of HA resource identifiers that correspond to virtual machines.\nexample_vm = proxmoxve.HA.get_ha_resources(type=\"vm\")\npulumi.export(\"dataProxmoxVirtualEnvironmentHaresources\", {\n    \"all\": example_all.resource_ids,\n    \"vms\": example_vm.resource_ids,\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // This will fetch the set of all HA resource identifiers.\n    var exampleAll = ProxmoxVE.HA.GetHAResources.Invoke();\n\n    // This will fetch the set of HA resource identifiers that correspond to virtual machines.\n    var exampleVm = ProxmoxVE.HA.GetHAResources.Invoke(new()\n    {\n        Type = \"vm\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentHaresources\"] = \n        {\n            { \"all\", exampleAll.Apply(getHAResourcesResult =\u003e getHAResourcesResult.ResourceIds) },\n            { \"vms\", exampleVm.Apply(getHAResourcesResult =\u003e getHAResourcesResult.ResourceIds) },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/ha\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\n// This will fetch the set of all HA resource identifiers.\nexampleAll, err := ha.GetHAResources(ctx, \u0026ha.GetHAResourcesArgs{\n}, nil);\nif err != nil {\nreturn err\n}\n// This will fetch the set of HA resource identifiers that correspond to virtual machines.\nexampleVm, err := ha.GetHAResources(ctx, \u0026ha.GetHAResourcesArgs{\nType: pulumi.StringRef(\"vm\"),\n}, nil);\nif err != nil {\nreturn err\n}\nctx.Export(\"dataProxmoxVirtualEnvironmentHaresources\", interface{}Map{\n\"all\": exampleAll.ResourceIds,\n\"vms\": exampleVm.ResourceIds,\n})\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.HA.HAFunctions;\nimport com.pulumi.proxmoxve.HA.inputs.GetHAResourcesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // This will fetch the set of all HA resource identifiers.\n        final var exampleAll = HAFunctions.getHAResources(GetHAResourcesArgs.builder()\n            .build());\n\n        // This will fetch the set of HA resource identifiers that correspond to virtual machines.\n        final var exampleVm = HAFunctions.getHAResources(GetHAResourcesArgs.builder()\n            .type(\"vm\")\n            .build());\n\n        ctx.export(\"dataProxmoxVirtualEnvironmentHaresources\", Map.ofEntries(\n            Map.entry(\"all\", exampleAll.resourceIds()),\n            Map.entry(\"vms\", exampleVm.resourceIds())\n        ));\n    }\n}\n```\n```yaml\nvariables:\n  # This will fetch the set of all HA resource identifiers.\n  exampleAll:\n    fn::invoke:\n      function: proxmoxve:HA:getHAResources\n      arguments: {}\n  # This will fetch the set of HA resource identifiers that correspond to virtual machines.\n  exampleVm:\n    fn::invoke:\n      function: proxmoxve:HA:getHAResources\n      arguments:\n        type: vm\noutputs:\n  dataProxmoxVirtualEnvironmentHaresources:\n    all: ${exampleAll.resourceIds}\n    vms: ${exampleVm.resourceIds}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getHAResources.\n","properties":{"type":{"type":"string","description":"The type of High Availability resources to fetch (\u003cspan pulumi-lang-nodejs=\"`vm`\" pulumi-lang-dotnet=\"`Vm`\" pulumi-lang-go=\"`vm`\" pulumi-lang-python=\"`vm`\" pulumi-lang-yaml=\"`vm`\" pulumi-lang-java=\"`vm`\"\u003e`vm`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ct`\" pulumi-lang-dotnet=\"`Ct`\" pulumi-lang-go=\"`ct`\" pulumi-lang-python=\"`ct`\" pulumi-lang-yaml=\"`ct`\" pulumi-lang-java=\"`ct`\"\u003e`ct`\u003c/span\u003e). All resources will be fetched if this option is unset.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getHAResources.\n","properties":{"id":{"description":"The unique identifier of this resource.\n","type":"string"},"resourceIds":{"description":"The identifiers of the High Availability resources.\n","items":{"type":"string"},"type":"array"},"type":{"description":"The type of High Availability resources to fetch (\u003cspan pulumi-lang-nodejs=\"`vm`\" pulumi-lang-dotnet=\"`Vm`\" pulumi-lang-go=\"`vm`\" pulumi-lang-python=\"`vm`\" pulumi-lang-yaml=\"`vm`\" pulumi-lang-java=\"`vm`\"\u003e`vm`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ct`\" pulumi-lang-dotnet=\"`Ct`\" pulumi-lang-go=\"`ct`\" pulumi-lang-python=\"`ct`\" pulumi-lang-yaml=\"`ct`\" pulumi-lang-java=\"`ct`\"\u003e`ct`\u003c/span\u003e). All resources will be fetched if this option is unset.\n","type":"string"}},"required":["id","resourceIds"],"type":"object"}},"proxmoxve:Hardware/getMappings:getMappings":{"description":"Retrieves a list of hardware mapping resources.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example_dir = proxmoxve.Hardware.getMappings({\n    checkNode: \"pve\",\n    type: \"dir\",\n});\nconst example_pci = proxmoxve.Hardware.getMappings({\n    checkNode: \"pve\",\n    type: \"pci\",\n});\nconst example_usb = proxmoxve.Hardware.getMappings({\n    checkNode: \"pve\",\n    type: \"usb\",\n});\nexport const dataProxmoxVirtualEnvironmentHardwareMappingsPci = example_pci;\nexport const dataProxmoxVirtualEnvironmentHardwareMappingsUsb = example_usb;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample_dir = proxmoxve.Hardware.get_mappings(check_node=\"pve\",\n    type=\"dir\")\nexample_pci = proxmoxve.Hardware.get_mappings(check_node=\"pve\",\n    type=\"pci\")\nexample_usb = proxmoxve.Hardware.get_mappings(check_node=\"pve\",\n    type=\"usb\")\npulumi.export(\"dataProxmoxVirtualEnvironmentHardwareMappingsPci\", example_pci)\npulumi.export(\"dataProxmoxVirtualEnvironmentHardwareMappingsUsb\", example_usb)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example_dir = ProxmoxVE.Hardware.GetMappings.Invoke(new()\n    {\n        CheckNode = \"pve\",\n        Type = \"dir\",\n    });\n\n    var example_pci = ProxmoxVE.Hardware.GetMappings.Invoke(new()\n    {\n        CheckNode = \"pve\",\n        Type = \"pci\",\n    });\n\n    var example_usb = ProxmoxVE.Hardware.GetMappings.Invoke(new()\n    {\n        CheckNode = \"pve\",\n        Type = \"usb\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentHardwareMappingsPci\"] = example_pci,\n        [\"dataProxmoxVirtualEnvironmentHardwareMappingsUsb\"] = example_usb,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/hardware\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := hardware.GetMappings(ctx, \u0026hardware.GetMappingsArgs{\n\t\t\tCheckNode: pulumi.StringRef(\"pve\"),\n\t\t\tType:      \"dir\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_pci, err := hardware.GetMappings(ctx, \u0026hardware.GetMappingsArgs{\n\t\t\tCheckNode: pulumi.StringRef(\"pve\"),\n\t\t\tType:      \"pci\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_usb, err := hardware.GetMappings(ctx, \u0026hardware.GetMappingsArgs{\n\t\t\tCheckNode: pulumi.StringRef(\"pve\"),\n\t\t\tType:      \"usb\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentHardwareMappingsPci\", example_pci)\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentHardwareMappingsUsb\", example_usb)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Hardware.HardwareFunctions;\nimport com.pulumi.proxmoxve.Hardware.inputs.GetMappingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example-dir = HardwareFunctions.getMappings(GetMappingsArgs.builder()\n            .checkNode(\"pve\")\n            .type(\"dir\")\n            .build());\n\n        final var example-pci = HardwareFunctions.getMappings(GetMappingsArgs.builder()\n            .checkNode(\"pve\")\n            .type(\"pci\")\n            .build());\n\n        final var example-usb = HardwareFunctions.getMappings(GetMappingsArgs.builder()\n            .checkNode(\"pve\")\n            .type(\"usb\")\n            .build());\n\n        ctx.export(\"dataProxmoxVirtualEnvironmentHardwareMappingsPci\", example_pci);\n        ctx.export(\"dataProxmoxVirtualEnvironmentHardwareMappingsUsb\", example_usb);\n    }\n}\n```\n```yaml\nvariables:\n  example-dir:\n    fn::invoke:\n      function: proxmoxve:Hardware:getMappings\n      arguments:\n        checkNode: pve\n        type: dir\n  example-pci:\n    fn::invoke:\n      function: proxmoxve:Hardware:getMappings\n      arguments:\n        checkNode: pve\n        type: pci\n  example-usb:\n    fn::invoke:\n      function: proxmoxve:Hardware:getMappings\n      arguments:\n        checkNode: pve\n        type: usb\noutputs:\n  dataProxmoxVirtualEnvironmentHardwareMappingsPci: ${[\"example-pci\"]}\n  dataProxmoxVirtualEnvironmentHardwareMappingsUsb: ${[\"example-usb\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getMappings.\n","properties":{"checkNode":{"type":"string","description":"The name of the node whose configurations should be checked for correctness.\n"},"type":{"type":"string","description":"The type of the hardware mappings.\n"}},"type":"object","required":["type"]},"outputs":{"description":"A collection of values returned by getMappings.\n","properties":{"checkNode":{"description":"The name of the node whose configurations should be checked for correctness.\n","type":"string"},"checks":{"description":"Might contain relevant diagnostics about incorrect configurations.\n","items":{"$ref":"#/types/proxmoxve:Hardware/getMappingsCheck:getMappingsCheck"},"type":"array"},"id":{"description":"The unique identifier of this hardware mappings data source.\n","type":"string"},"ids":{"description":"The identifiers of the hardware mappings.\n","items":{"type":"string"},"type":"array"},"type":{"description":"The type of the hardware mappings.\n","type":"string"}},"required":["checks","id","ids","type"],"type":"object"}},"proxmoxve:Hardware/mapping/getDir:getDir":{"description":"Retrieves a directory mapping from a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = proxmoxve.Hardware.mapping.getDir({\n    name: \"example\",\n});\nexport const dataProxmoxVirtualEnvironmentHardwareMappingDir = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Hardware.mapping.get_dir(name=\"example\")\npulumi.export(\"dataProxmoxVirtualEnvironmentHardwareMappingDir\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ProxmoxVE.Hardware.Mapping.GetDir.Invoke(new()\n    {\n        Name = \"example\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentHardwareMappingDir\"] = example,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/hardware\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := hardware.GetDir(ctx, \u0026mapping.GetDirArgs{\n\t\t\tName: \"example\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentHardwareMappingDir\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Hardware_mapping.Hardware_mappingFunctions;\nimport com.pulumi.proxmoxve.Hardware.inputs.GetDirArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = Hardware_mappingFunctions.getDir(GetDirArgs.builder()\n            .name(\"example\")\n            .build());\n\n        ctx.export(\"dataProxmoxVirtualEnvironmentHardwareMappingDir\", example);\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: proxmoxve:Hardware/mapping:getDir\n      arguments:\n        name: example\noutputs:\n  dataProxmoxVirtualEnvironmentHardwareMappingDir: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getDir.\n","properties":{"name":{"type":"string","description":"The name of this directory mapping.\n"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getDir.\n","properties":{"comment":{"description":"The comment of this directory mapping.\n","type":"string"},"id":{"description":"The unique identifier of this directory mapping data source.\n","type":"string"},"maps":{"description":"The actual map of devices for the directory mapping.\n","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/getDirMap:getDirMap"},"type":"array"},"name":{"description":"The name of this directory mapping.\n","type":"string"}},"required":["comment","id","maps","name"],"type":"object"}},"proxmoxve:Hardware/mapping/getPci:getPci":{"description":"Retrieves a PCI hardware mapping from a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = proxmoxve.Hardware.mapping.getPci({\n    name: \"example\",\n});\nexport const dataProxmoxVirtualEnvironmentHardwareMappingPci = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Hardware.mapping.get_pci(name=\"example\")\npulumi.export(\"dataProxmoxVirtualEnvironmentHardwareMappingPci\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ProxmoxVE.Hardware.Mapping.GetPci.Invoke(new()\n    {\n        Name = \"example\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentHardwareMappingPci\"] = example,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/hardware\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := hardware.GetPci(ctx, \u0026mapping.GetPciArgs{\n\t\t\tName: \"example\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentHardwareMappingPci\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Hardware_mapping.Hardware_mappingFunctions;\nimport com.pulumi.proxmoxve.Hardware.inputs.GetPciArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = Hardware_mappingFunctions.getPci(GetPciArgs.builder()\n            .name(\"example\")\n            .build());\n\n        ctx.export(\"dataProxmoxVirtualEnvironmentHardwareMappingPci\", example);\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: proxmoxve:Hardware/mapping:getPci\n      arguments:\n        name: example\noutputs:\n  dataProxmoxVirtualEnvironmentHardwareMappingPci: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getPci.\n","properties":{"name":{"type":"string","description":"The name of this PCI hardware mapping.\n"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getPci.\n","properties":{"comment":{"description":"The comment of this PCI hardware mapping.\n","type":"string"},"id":{"description":"The unique identifier of this PCI hardware mapping data source.\n","type":"string"},"maps":{"description":"The actual map of devices for the hardware mapping.\n","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/getPciMap:getPciMap"},"type":"array"},"mediatedDevices":{"description":"Indicates whether to use with mediated devices.\n","type":"boolean"},"name":{"description":"The name of this PCI hardware mapping.\n","type":"string"}},"required":["comment","id","maps","mediatedDevices","name"],"type":"object"}},"proxmoxve:Hardware/mapping/getUsb:getUsb":{"description":"Retrieves a USB hardware mapping from a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = proxmoxve.Hardware.mapping.getUsb({\n    name: \"example\",\n});\nexport const dataProxmoxVirtualEnvironmentHardwareMappingUsb = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Hardware.mapping.get_usb(name=\"example\")\npulumi.export(\"dataProxmoxVirtualEnvironmentHardwareMappingUsb\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ProxmoxVE.Hardware.Mapping.GetUsb.Invoke(new()\n    {\n        Name = \"example\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentHardwareMappingUsb\"] = example,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/hardware\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := hardware.GetUsb(ctx, \u0026mapping.GetUsbArgs{\n\t\t\tName: \"example\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentHardwareMappingUsb\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Hardware_mapping.Hardware_mappingFunctions;\nimport com.pulumi.proxmoxve.Hardware.inputs.GetUsbArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = Hardware_mappingFunctions.getUsb(GetUsbArgs.builder()\n            .name(\"example\")\n            .build());\n\n        ctx.export(\"dataProxmoxVirtualEnvironmentHardwareMappingUsb\", example);\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: proxmoxve:Hardware/mapping:getUsb\n      arguments:\n        name: example\noutputs:\n  dataProxmoxVirtualEnvironmentHardwareMappingUsb: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getUsb.\n","properties":{"name":{"type":"string","description":"The name of this USB hardware mapping.\n"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getUsb.\n","properties":{"comment":{"description":"The comment of this USB hardware mapping.\n","type":"string"},"id":{"description":"The unique identifier of this USB hardware mapping data source.\n","type":"string"},"maps":{"description":"The actual map of devices for the hardware mapping.\n","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/getUsbMap:getUsbMap"},"type":"array"},"name":{"description":"The name of this USB hardware mapping.\n","type":"string"}},"required":["comment","id","maps","name"],"type":"object"}},"proxmoxve:Metrics/getServer:getServer":{"description":"Retrieves information about a specific PVE metric server.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = proxmoxve.Metrics.getServer({\n    name: \"example_influxdb\",\n});\nexport const dataProxmoxVirtualEnvironmentMetricsServer = {\n    server: example.then(example =\u003e example.server),\n    port: example.then(example =\u003e example.port),\n};\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Metrics.get_server(name=\"example_influxdb\")\npulumi.export(\"dataProxmoxVirtualEnvironmentMetricsServer\", {\n    \"server\": example.server,\n    \"port\": example.port,\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ProxmoxVE.Metrics.GetServer.Invoke(new()\n    {\n        Name = \"example_influxdb\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentMetricsServer\"] = \n        {\n            { \"server\", example.Apply(getServerResult =\u003e getServerResult.Server) },\n            { \"port\", example.Apply(getServerResult =\u003e getServerResult.Port) },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/metrics\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := metrics.GetServer(ctx, \u0026metrics.GetServerArgs{\n\t\t\tName: \"example_influxdb\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentMetricsServer\", pulumi.Map{\n\t\t\t\"server\": example.Server,\n\t\t\t\"port\":   example.Port,\n\t\t})\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Metrics.MetricsFunctions;\nimport com.pulumi.proxmoxve.Metrics.inputs.GetServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = MetricsFunctions.getServer(GetServerArgs.builder()\n            .name(\"example_influxdb\")\n            .build());\n\n        ctx.export(\"dataProxmoxVirtualEnvironmentMetricsServer\", Map.ofEntries(\n            Map.entry(\"server\", example.server()),\n            Map.entry(\"port\", example.port())\n        ));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: proxmoxve:Metrics:getServer\n      arguments:\n        name: example_influxdb\noutputs:\n  dataProxmoxVirtualEnvironmentMetricsServer:\n    server: ${example.server}\n    port: ${example.port}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getServer.\n","properties":{"name":{"type":"string","description":"Unique name that will be ID of this metric server in PVE.\n"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getServer.\n","properties":{"disable":{"description":"Indicates if the metric server is disabled.\n","type":"boolean"},"id":{"description":"The unique identifier of this resource.\n","type":"string"},"name":{"description":"Unique name that will be ID of this metric server in PVE.\n","type":"string"},"opentelemetryPath":{"description":"OpenTelemetry endpoint path (e.g., `/v1/metrics`).\n","type":"string"},"opentelemetryProto":{"description":"Protocol for OpenTelemetry. Choice is between \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e | \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e.\n","type":"string"},"port":{"description":"Server network port.\n","type":"integer"},"server":{"description":"Server dns name or IP address.\n","type":"string"},"type":{"description":"Plugin type. Either \u003cspan pulumi-lang-nodejs=\"`graphite`\" pulumi-lang-dotnet=\"`Graphite`\" pulumi-lang-go=\"`graphite`\" pulumi-lang-python=\"`graphite`\" pulumi-lang-yaml=\"`graphite`\" pulumi-lang-java=\"`graphite`\"\u003e`graphite`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`influxdb`\" pulumi-lang-dotnet=\"`Influxdb`\" pulumi-lang-go=\"`influxdb`\" pulumi-lang-python=\"`influxdb`\" pulumi-lang-yaml=\"`influxdb`\" pulumi-lang-java=\"`influxdb`\"\u003e`influxdb`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`opentelemetry`\" pulumi-lang-dotnet=\"`Opentelemetry`\" pulumi-lang-go=\"`opentelemetry`\" pulumi-lang-python=\"`opentelemetry`\" pulumi-lang-yaml=\"`opentelemetry`\" pulumi-lang-java=\"`opentelemetry`\"\u003e`opentelemetry`\u003c/span\u003e.\n","type":"string"}},"required":["disable","id","name","opentelemetryPath","opentelemetryProto","port","server","type"],"type":"object"}},"proxmoxve:Network/getDNS:getDNS":{"description":"Retrieves the DNS configuration for a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst firstNode = proxmoxve.Network.getDNS({\n    nodeName: \"first-node\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfirst_node = proxmoxve.Network.get_dns(node_name=\"first-node\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var firstNode = ProxmoxVE.Network.GetDNS.Invoke(new()\n    {\n        NodeName = \"first-node\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := network.GetDNS(ctx, \u0026network.GetDNSArgs{\n\t\t\tNodeName: \"first-node\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.NetworkFunctions;\nimport com.pulumi.proxmoxve.Network.inputs.GetDNSArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var firstNode = NetworkFunctions.getDNS(GetDNSArgs.builder()\n            .nodeName(\"first-node\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  firstNode:\n    fn::invoke:\n      function: proxmoxve:Network:getDNS\n      arguments:\n        nodeName: first-node\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getDNS.\n","properties":{"nodeName":{"type":"string","description":"A node name.\n"}},"type":"object","required":["nodeName"]},"outputs":{"description":"A collection of values returned by getDNS.\n","properties":{"domain":{"description":"The DNS search domain.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"nodeName":{"type":"string"},"servers":{"description":"The DNS servers.\n","items":{"type":"string"},"type":"array"}},"required":["domain","nodeName","servers","id"],"type":"object"}},"proxmoxve:Network/getHosts:getHosts":{"description":"Retrieves all the host entries from a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst firstNodeHostEntries = proxmoxve.Network.getHosts({\n    nodeName: \"first-node\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfirst_node_host_entries = proxmoxve.Network.get_hosts(node_name=\"first-node\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var firstNodeHostEntries = ProxmoxVE.Network.GetHosts.Invoke(new()\n    {\n        NodeName = \"first-node\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := network.GetHosts(ctx, \u0026network.GetHostsArgs{\n\t\t\tNodeName: \"first-node\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.NetworkFunctions;\nimport com.pulumi.proxmoxve.Network.inputs.GetHostsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var firstNodeHostEntries = NetworkFunctions.getHosts(GetHostsArgs.builder()\n            .nodeName(\"first-node\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  firstNodeHostEntries:\n    fn::invoke:\n      function: proxmoxve:Network:getHosts\n      arguments:\n        nodeName: first-node\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getHosts.\n","properties":{"nodeName":{"type":"string","description":"A node name.\n"}},"type":"object","required":["nodeName"]},"outputs":{"description":"A collection of values returned by getHosts.\n","properties":{"addresses":{"description":"The IP addresses.\n","items":{"type":"string"},"type":"array"},"digest":{"description":"The SHA1 digest.\n","type":"string"},"entries":{"description":"The host entries (conversion of \u003cspan pulumi-lang-nodejs=\"`addresses`\" pulumi-lang-dotnet=\"`Addresses`\" pulumi-lang-go=\"`addresses`\" pulumi-lang-python=\"`addresses`\" pulumi-lang-yaml=\"`addresses`\" pulumi-lang-java=\"`addresses`\"\u003e`addresses`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`hostnames`\" pulumi-lang-dotnet=\"`Hostnames`\" pulumi-lang-go=\"`hostnames`\" pulumi-lang-python=\"`hostnames`\" pulumi-lang-yaml=\"`hostnames`\" pulumi-lang-java=\"`hostnames`\"\u003e`hostnames`\u003c/span\u003e into\nobjects).\n","items":{"$ref":"#/types/proxmoxve:Network/getHostsEntry:getHostsEntry"},"type":"array"},"hostnames":{"description":"The hostnames associated with each of the IP addresses.\n","items":{"items":{"type":"string"},"type":"array"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"nodeName":{"type":"string"}},"required":["addresses","digest","entries","hostnames","nodeName","id"],"type":"object"}},"proxmoxve:Network/getTime:getTime":{"description":"Retrieves the current time for a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst firstNodeTime = proxmoxve.Network.getTime({\n    nodeName: \"first-node\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfirst_node_time = proxmoxve.Network.get_time(node_name=\"first-node\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var firstNodeTime = ProxmoxVE.Network.GetTime.Invoke(new()\n    {\n        NodeName = \"first-node\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := network.GetTime(ctx, \u0026network.GetTimeArgs{\n\t\t\tNodeName: \"first-node\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.NetworkFunctions;\nimport com.pulumi.proxmoxve.Network.inputs.GetTimeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var firstNodeTime = NetworkFunctions.getTime(GetTimeArgs.builder()\n            .nodeName(\"first-node\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  firstNodeTime:\n    fn::invoke:\n      function: proxmoxve:Network:getTime\n      arguments:\n        nodeName: first-node\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getTime.\n","properties":{"nodeName":{"type":"string","description":"A node name.\n"}},"type":"object","required":["nodeName"]},"outputs":{"description":"A collection of values returned by getTime.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"localTime":{"description":"The node's local time.\n","type":"string"},"nodeName":{"type":"string"},"timeZone":{"description":"The node's time zone.\n","type":"string"},"utcTime":{"description":"The node's local time formatted as UTC.\n","type":"string"}},"required":["localTime","nodeName","timeZone","utcTime","id"],"type":"object"}},"proxmoxve:Network/getVersion:getVersion":{"description":"Retrieves API version details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = proxmoxve.Network.getVersion({});\nexport const dataProxmoxVirtualEnvironmentVersion = {\n    release: example.then(example =\u003e example.release),\n    repositoryId: example.then(example =\u003e example.repositoryId),\n    version: example.then(example =\u003e example.version),\n};\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Network.get_version()\npulumi.export(\"dataProxmoxVirtualEnvironmentVersion\", {\n    \"release\": example.release,\n    \"repositoryId\": example.repository_id,\n    \"version\": example.version,\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ProxmoxVE.Network.GetVersion.Invoke();\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentVersion\"] = \n        {\n            { \"release\", example.Apply(getVersionResult =\u003e getVersionResult.Release) },\n            { \"repositoryId\", example.Apply(getVersionResult =\u003e getVersionResult.RepositoryId) },\n            { \"version\", example.Apply(getVersionResult =\u003e getVersionResult.Version) },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := network.GetVersion(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentVersion\", pulumi.StringMap{\n\t\t\t\"release\":      example.Release,\n\t\t\t\"repositoryId\": example.RepositoryId,\n\t\t\t\"version\":      example.Version,\n\t\t})\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.NetworkFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = NetworkFunctions.getVersion(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);\n\n        ctx.export(\"dataProxmoxVirtualEnvironmentVersion\", Map.ofEntries(\n            Map.entry(\"release\", example.release()),\n            Map.entry(\"repositoryId\", example.repositoryId()),\n            Map.entry(\"version\", example.version())\n        ));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: proxmoxve:Network:getVersion\n      arguments: {}\noutputs:\n  dataProxmoxVirtualEnvironmentVersion:\n    release: ${example.release}\n    repositoryId: ${example.repositoryId}\n    version: ${example.version}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getVersion.\n","properties":{"id":{"description":"Placeholder identifier attribute.\n","type":"string"},"release":{"description":"The current Proxmox VE point release in `x.y` format.\n","type":"string"},"repositoryId":{"description":"The short git revision from which this version was build.\n","type":"string"},"version":{"description":"The full pve-manager package version of this node.\n","type":"string"}},"required":["id","release","repositoryId","version"],"type":"object"}},"proxmoxve:Permission/getGroup:getGroup":{"description":"Retrieves information about a specific user group.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsTeam = proxmoxve.Permission.getGroup({\n    groupId: \"operations-team\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_team = proxmoxve.Permission.get_group(group_id=\"operations-team\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var operationsTeam = ProxmoxVE.Permission.GetGroup.Invoke(new()\n    {\n        GroupId = \"operations-team\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := permission.GetGroup(ctx, \u0026permission.GetGroupArgs{\n\t\t\tGroupId: \"operations-team\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport com.pulumi.proxmoxve.Permission.inputs.GetGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var operationsTeam = PermissionFunctions.getGroup(GetGroupArgs.builder()\n            .groupId(\"operations-team\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  operationsTeam:\n    fn::invoke:\n      function: proxmoxve:Permission:getGroup\n      arguments:\n        groupId: operations-team\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getGroup.\n","properties":{"groupId":{"type":"string","description":"The group identifier.\n"}},"type":"object","required":["groupId"]},"outputs":{"description":"A collection of values returned by getGroup.\n","properties":{"acls":{"description":"The access control list.\n","items":{"$ref":"#/types/proxmoxve:Permission/getGroupAcl:getGroupAcl"},"type":"array"},"comment":{"description":"The group comment.\n","type":"string"},"groupId":{"type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"members":{"description":"The group members as a list with `username@realm` entries.\n","items":{"type":"string"},"type":"array"}},"required":["acls","comment","groupId","members","id"],"type":"object"}},"proxmoxve:Permission/getGroups:getGroups":{"description":"Retrieves basic information about all available user groups.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst availableGroups = proxmoxve.Permission.getGroups({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\navailable_groups = proxmoxve.Permission.get_groups()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var availableGroups = ProxmoxVE.Permission.GetGroups.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := permission.GetGroups(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var availableGroups = PermissionFunctions.getGroups(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);\n\n    }\n}\n```\n```yaml\nvariables:\n  availableGroups:\n    fn::invoke:\n      function: proxmoxve:Permission:getGroups\n      arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getGroups.\n","properties":{"comments":{"description":"The group comments.\n","items":{"type":"string"},"type":"array"},"groupIds":{"description":"The group identifiers.\n","items":{"type":"string"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"}},"required":["comments","groupIds","id"],"type":"object"}},"proxmoxve:Permission/getPool:getPool":{"description":"Retrieves information about a specific resource pool.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsPool = proxmoxve.Permission.getPool({\n    poolId: \"operations\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_pool = proxmoxve.Permission.get_pool(pool_id=\"operations\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var operationsPool = ProxmoxVE.Permission.GetPool.Invoke(new()\n    {\n        PoolId = \"operations\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := permission.GetPool(ctx, \u0026permission.GetPoolArgs{\n\t\t\tPoolId: \"operations\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport com.pulumi.proxmoxve.Permission.inputs.GetPoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var operationsPool = PermissionFunctions.getPool(GetPoolArgs.builder()\n            .poolId(\"operations\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  operationsPool:\n    fn::invoke:\n      function: proxmoxve:Permission:getPool\n      arguments:\n        poolId: operations\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getPool.\n","properties":{"poolId":{"type":"string","description":"The pool identifier.\n"}},"type":"object","required":["poolId"]},"outputs":{"description":"A collection of values returned by getPool.\n","properties":{"comment":{"description":"The pool comment.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"members":{"description":"The pool members.\n","items":{"$ref":"#/types/proxmoxve:Permission/getPoolMember:getPoolMember"},"type":"array"},"poolId":{"type":"string"}},"required":["comment","members","poolId","id"],"type":"object"}},"proxmoxve:Permission/getPools:getPools":{"description":"Retrieves the identifiers for all the available resource pools.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst availablePools = proxmoxve.Permission.getPools({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\navailable_pools = proxmoxve.Permission.get_pools()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var availablePools = ProxmoxVE.Permission.GetPools.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := permission.GetPools(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var availablePools = PermissionFunctions.getPools(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);\n\n    }\n}\n```\n```yaml\nvariables:\n  availablePools:\n    fn::invoke:\n      function: proxmoxve:Permission:getPools\n      arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getPools.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"poolIds":{"description":"The pool identifiers.\n","items":{"type":"string"},"type":"array"}},"required":["poolIds","id"],"type":"object"}},"proxmoxve:Permission/getRole:getRole":{"description":"Retrieves information about a specific role.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsRole = proxmoxve.Permission.getRole({\n    roleId: \"operations\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_role = proxmoxve.Permission.get_role(role_id=\"operations\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var operationsRole = ProxmoxVE.Permission.GetRole.Invoke(new()\n    {\n        RoleId = \"operations\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := permission.GetRole(ctx, \u0026permission.GetRoleArgs{\n\t\t\tRoleId: \"operations\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport com.pulumi.proxmoxve.Permission.inputs.GetRoleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var operationsRole = PermissionFunctions.getRole(GetRoleArgs.builder()\n            .roleId(\"operations\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  operationsRole:\n    fn::invoke:\n      function: proxmoxve:Permission:getRole\n      arguments:\n        roleId: operations\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getRole.\n","properties":{"roleId":{"type":"string","description":"The role identifier.\n"}},"type":"object","required":["roleId"]},"outputs":{"description":"A collection of values returned by getRole.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"privileges":{"description":"The role privileges\n","items":{"type":"string"},"type":"array"},"roleId":{"type":"string"}},"required":["privileges","roleId","id"],"type":"object"}},"proxmoxve:Permission/getRoles:getRoles":{"description":"Retrieves information about all the available roles.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst availableRoles = proxmoxve.Permission.getRoles({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\navailable_roles = proxmoxve.Permission.get_roles()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var availableRoles = ProxmoxVE.Permission.GetRoles.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := permission.GetRoles(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var availableRoles = PermissionFunctions.getRoles(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);\n\n    }\n}\n```\n```yaml\nvariables:\n  availableRoles:\n    fn::invoke:\n      function: proxmoxve:Permission:getRoles\n      arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getRoles.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"privileges":{"description":"The role privileges.\n","items":{"items":{"type":"string"},"type":"array"},"type":"array"},"roleIds":{"description":"The role identifiers.\n","items":{"type":"string"},"type":"array"},"specials":{"description":"Whether the role is special (built-in).\n","items":{"type":"boolean"},"type":"array"}},"required":["privileges","roleIds","specials","id"],"type":"object"}},"proxmoxve:Permission/getUser:getUser":{"description":"Retrieves information about a specific user.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsUser = proxmoxve.Permission.getUser({\n    userId: \"operation@pam\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_user = proxmoxve.Permission.get_user(user_id=\"operation@pam\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var operationsUser = ProxmoxVE.Permission.GetUser.Invoke(new()\n    {\n        UserId = \"operation@pam\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := permission.GetUser(ctx, \u0026permission.GetUserArgs{\n\t\t\tUserId: \"operation@pam\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport com.pulumi.proxmoxve.Permission.inputs.GetUserArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var operationsUser = PermissionFunctions.getUser(GetUserArgs.builder()\n            .userId(\"operation@pam\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  operationsUser:\n    fn::invoke:\n      function: proxmoxve:Permission:getUser\n      arguments:\n        userId: operation@pam\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getUser.\n","properties":{"userId":{"type":"string","description":"The user identifier.\n"}},"type":"object","required":["userId"]},"outputs":{"description":"A collection of values returned by getUser.\n","properties":{"acls":{"description":"The access control list.\n","items":{"$ref":"#/types/proxmoxve:Permission/getUserAcl:getUserAcl"},"type":"array"},"comment":{"description":"The user comment.\n","type":"string"},"email":{"description":"The user's email address.\n","type":"string"},"enabled":{"description":"Whether the user account is enabled.\n","type":"boolean"},"expirationDate":{"description":"The user account's expiration date (RFC 3339).\n","type":"string"},"firstName":{"description":"The user's first name.\n","type":"string"},"groups":{"description":"The user's groups.\n","items":{"type":"string"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"keys":{"description":"The user's keys.\n","type":"string"},"lastName":{"description":"The user's last name.\n","type":"string"},"userId":{"type":"string"}},"required":["acls","comment","email","enabled","expirationDate","firstName","groups","keys","lastName","userId","id"],"type":"object"}},"proxmoxve:Permission/getUsers:getUsers":{"description":"Retrieves information about all the available users.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst availableUsers = proxmoxve.Permission.getUsers({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\navailable_users = proxmoxve.Permission.get_users()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var availableUsers = ProxmoxVE.Permission.GetUsers.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := permission.GetUsers(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var availableUsers = PermissionFunctions.getUsers(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);\n\n    }\n}\n```\n```yaml\nvariables:\n  availableUsers:\n    fn::invoke:\n      function: proxmoxve:Permission:getUsers\n      arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getUsers.\n","properties":{"comments":{"description":"The user comments.\n","items":{"type":"string"},"type":"array"},"emails":{"description":"The users' email addresses.\n","items":{"type":"string"},"type":"array"},"enableds":{"description":"Whether a user account is enabled.\n","items":{"type":"boolean"},"type":"array"},"expirationDates":{"description":"The user accounts' expiration dates (RFC 3339).\n","items":{"type":"string"},"type":"array"},"firstNames":{"description":"The users' first names.\n","items":{"type":"string"},"type":"array"},"groups":{"description":"The users' groups.\n","items":{"items":{"type":"string"},"type":"array"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"keys":{"description":"The users' keys.\n","items":{"type":"string"},"type":"array"},"lastNames":{"description":"The users' last names.\n","items":{"type":"string"},"type":"array"},"userIds":{"description":"The user identifiers.\n","items":{"type":"string"},"type":"array"}},"required":["comments","emails","enableds","expirationDates","firstNames","groups","keys","lastNames","userIds","id"],"type":"object"}},"proxmoxve:SDNZone/getEvpn:getEvpn":{"description":"Retrieves information about an EVPN Zone in Proxmox SDN. The EVPN zone creates a routable Layer 3 network, capable of spanning across multiple clusters.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = proxmoxve.SDNZone.getEvpn({\n    id: \"evpn1\",\n});\nexport const dataProxmoxVirtualEnvironmentSdnZoneEvpn = {\n    id: example.then(example =\u003e example.id),\n    nodes: example.then(example =\u003e example.nodes),\n    controller: example.then(example =\u003e example.controller),\n    vrfVxlan: example.then(example =\u003e example.vrfVxlan),\n    advertiseSubnets: example.then(example =\u003e example.advertiseSubnets),\n    disableArpNdSuppression: example.then(example =\u003e example.disableArpNdSuppression),\n    exitNodes: example.then(example =\u003e example.exitNodes),\n    exitNodesLocalRouting: example.then(example =\u003e example.exitNodesLocalRouting),\n    primaryExitNode: example.then(example =\u003e example.primaryExitNode),\n    rtImport: example.then(example =\u003e example.rtImport),\n    mtu: example.then(example =\u003e example.mtu),\n    dns: example.then(example =\u003e example.dns),\n    dnsZone: example.then(example =\u003e example.dnsZone),\n    ipam: example.then(example =\u003e example.ipam),\n    reverseDns: example.then(example =\u003e example.reverseDns),\n};\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.SDNZone.get_evpn(id=\"evpn1\")\npulumi.export(\"dataProxmoxVirtualEnvironmentSdnZoneEvpn\", {\n    \"id\": example.id,\n    \"nodes\": example.nodes,\n    \"controller\": example.controller,\n    \"vrfVxlan\": example.vrf_vxlan,\n    \"advertiseSubnets\": example.advertise_subnets,\n    \"disableArpNdSuppression\": example.disable_arp_nd_suppression,\n    \"exitNodes\": example.exit_nodes,\n    \"exitNodesLocalRouting\": example.exit_nodes_local_routing,\n    \"primaryExitNode\": example.primary_exit_node,\n    \"rtImport\": example.rt_import,\n    \"mtu\": example.mtu,\n    \"dns\": example.dns,\n    \"dnsZone\": example.dns_zone,\n    \"ipam\": example.ipam,\n    \"reverseDns\": example.reverse_dns,\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ProxmoxVE.SDNZone.GetEvpn.Invoke(new()\n    {\n        Id = \"evpn1\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentSdnZoneEvpn\"] = \n        {\n            { \"id\", example.Apply(getEvpnResult =\u003e getEvpnResult.Id) },\n            { \"nodes\", example.Apply(getEvpnResult =\u003e getEvpnResult.Nodes) },\n            { \"controller\", example.Apply(getEvpnResult =\u003e getEvpnResult.Controller) },\n            { \"vrfVxlan\", example.Apply(getEvpnResult =\u003e getEvpnResult.VrfVxlan) },\n            { \"advertiseSubnets\", example.Apply(getEvpnResult =\u003e getEvpnResult.AdvertiseSubnets) },\n            { \"disableArpNdSuppression\", example.Apply(getEvpnResult =\u003e getEvpnResult.DisableArpNdSuppression) },\n            { \"exitNodes\", example.Apply(getEvpnResult =\u003e getEvpnResult.ExitNodes) },\n            { \"exitNodesLocalRouting\", example.Apply(getEvpnResult =\u003e getEvpnResult.ExitNodesLocalRouting) },\n            { \"primaryExitNode\", example.Apply(getEvpnResult =\u003e getEvpnResult.PrimaryExitNode) },\n            { \"rtImport\", example.Apply(getEvpnResult =\u003e getEvpnResult.RtImport) },\n            { \"mtu\", example.Apply(getEvpnResult =\u003e getEvpnResult.Mtu) },\n            { \"dns\", example.Apply(getEvpnResult =\u003e getEvpnResult.Dns) },\n            { \"dnsZone\", example.Apply(getEvpnResult =\u003e getEvpnResult.DnsZone) },\n            { \"ipam\", example.Apply(getEvpnResult =\u003e getEvpnResult.Ipam) },\n            { \"reverseDns\", example.Apply(getEvpnResult =\u003e getEvpnResult.ReverseDns) },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/sdnzone\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := sdnzone.GetEvpn(ctx, \u0026sdnzone.GetEvpnArgs{\n\t\t\tId: \"evpn1\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentSdnZoneEvpn\", pulumi.Map{\n\t\t\t\"id\":                      example.Id,\n\t\t\t\"nodes\":                   example.Nodes,\n\t\t\t\"controller\":              example.Controller,\n\t\t\t\"vrfVxlan\":                example.VrfVxlan,\n\t\t\t\"advertiseSubnets\":        example.AdvertiseSubnets,\n\t\t\t\"disableArpNdSuppression\": example.DisableArpNdSuppression,\n\t\t\t\"exitNodes\":               example.ExitNodes,\n\t\t\t\"exitNodesLocalRouting\":   example.ExitNodesLocalRouting,\n\t\t\t\"primaryExitNode\":         example.PrimaryExitNode,\n\t\t\t\"rtImport\":                example.RtImport,\n\t\t\t\"mtu\":                     example.Mtu,\n\t\t\t\"dns\":                     example.Dns,\n\t\t\t\"dnsZone\":                 example.DnsZone,\n\t\t\t\"ipam\":                    example.Ipam,\n\t\t\t\"reverseDns\":              example.ReverseDns,\n\t\t})\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.SDNZone.SDNZoneFunctions;\nimport com.pulumi.proxmoxve.SDNZone.inputs.GetEvpnArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = SDNZoneFunctions.getEvpn(GetEvpnArgs.builder()\n            .id(\"evpn1\")\n            .build());\n\n        ctx.export(\"dataProxmoxVirtualEnvironmentSdnZoneEvpn\", Map.ofEntries(\n            Map.entry(\"id\", example.id()),\n            Map.entry(\"nodes\", example.nodes()),\n            Map.entry(\"controller\", example.controller()),\n            Map.entry(\"vrfVxlan\", example.vrfVxlan()),\n            Map.entry(\"advertiseSubnets\", example.advertiseSubnets()),\n            Map.entry(\"disableArpNdSuppression\", example.disableArpNdSuppression()),\n            Map.entry(\"exitNodes\", example.exitNodes()),\n            Map.entry(\"exitNodesLocalRouting\", example.exitNodesLocalRouting()),\n            Map.entry(\"primaryExitNode\", example.primaryExitNode()),\n            Map.entry(\"rtImport\", example.rtImport()),\n            Map.entry(\"mtu\", example.mtu()),\n            Map.entry(\"dns\", example.dns()),\n            Map.entry(\"dnsZone\", example.dnsZone()),\n            Map.entry(\"ipam\", example.ipam()),\n            Map.entry(\"reverseDns\", example.reverseDns())\n        ));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: proxmoxve:SDNZone:getEvpn\n      arguments:\n        id: evpn1\noutputs:\n  dataProxmoxVirtualEnvironmentSdnZoneEvpn:\n    id: ${example.id}\n    nodes: ${example.nodes}\n    controller: ${example.controller}\n    vrfVxlan: ${example.vrfVxlan}\n    advertiseSubnets: ${example.advertiseSubnets}\n    disableArpNdSuppression: ${example.disableArpNdSuppression}\n    exitNodes: ${example.exitNodes}\n    exitNodesLocalRouting: ${example.exitNodesLocalRouting}\n    primaryExitNode: ${example.primaryExitNode}\n    rtImport: ${example.rtImport}\n    mtu: ${example.mtu}\n    dns: ${example.dns}\n    dnsZone: ${example.dnsZone}\n    ipam: ${example.ipam}\n    reverseDns: ${example.reverseDns}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getEvpn.\n","properties":{"id":{"type":"string","description":"The unique identifier of the SDN zone.\n"}},"type":"object","required":["id"]},"outputs":{"description":"A collection of values returned by getEvpn.\n","properties":{"advertiseSubnets":{"description":"Enable subnet advertisement for EVPN.\n","type":"boolean"},"controller":{"description":"EVPN controller address.\n","type":"string"},"disableArpNdSuppression":{"description":"Disable ARP/ND suppression for EVPN.\n","type":"boolean"},"dns":{"description":"DNS API server address.\n","type":"string"},"dnsZone":{"description":"DNS domain name. Used to register hostnames, such as `\u003chostname\u003e.\u003cdomain\u003e`. The DNS zone must already exist on the DNS server.\n","type":"string"},"exitNodes":{"description":"List of exit nodes for EVPN.\n","items":{"type":"string"},"type":"array"},"exitNodesLocalRouting":{"description":"Enable local routing for EVPN exit nodes.\n","type":"boolean"},"id":{"description":"The unique identifier of the SDN zone.\n","type":"string"},"ipam":{"description":"IP Address Management system.\n","type":"string"},"mtu":{"description":"MTU value for the zone.\n","type":"integer"},"nodes":{"description":"The Proxmox nodes which the zone and associated VNets are deployed on\n","items":{"type":"string"},"type":"array"},"pending":{"description":"Indicates if the zone has pending configuration changes that need to be applied.\n","type":"boolean"},"primaryExitNode":{"description":"Primary exit node for EVPN.\n","type":"string"},"reverseDns":{"description":"Reverse DNS API server address.\n","type":"string"},"rtImport":{"description":"Route target import for EVPN. Must be in the format '\\n\\n:\\n\\n' (e.g., '65000:65000').\n","type":"string"},"state":{"description":"Indicates the current state of the zone.\n","type":"string"},"vrfVxlan":{"description":"VRF VXLAN-ID used for dedicated routing interconnect between VNets. It must be different than the VXLAN-ID of the VNets.\n","type":"integer"}},"required":["advertiseSubnets","controller","disableArpNdSuppression","dns","dnsZone","exitNodes","exitNodesLocalRouting","id","ipam","mtu","nodes","pending","primaryExitNode","reverseDns","rtImport","state","vrfVxlan"],"type":"object"}},"proxmoxve:SDNZone/getQinq:getQinq":{"description":"Retrieves information about a QinQ Zone in Proxmox SDN. QinQ also known as VLAN stacking, that uses multiple layers of VLAN tags for isolation. The QinQ zone defines the outer VLAN tag (the Service VLAN) whereas the inner VLAN tag is defined by the VNet. Your physical network switches must support stacked VLANs for this configuration. Due to the double stacking of tags, you need 4 more bytes for QinQ VLANs. For example, you must reduce the MTU to 1496 if you physical interface MTU is 1500.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = proxmoxve.SDNZone.getQinq({\n    id: \"qinq1\",\n});\nexport const dataProxmoxVirtualEnvironmentSdnZoneQinq = {\n    id: example.then(example =\u003e example.id),\n    nodes: example.then(example =\u003e example.nodes),\n    bridge: example.then(example =\u003e example.bridge),\n    serviceVlan: example.then(example =\u003e example.serviceVlan),\n    serviceVlanProtocol: example.then(example =\u003e example.serviceVlanProtocol),\n    mtu: example.then(example =\u003e example.mtu),\n    dns: example.then(example =\u003e example.dns),\n    dnsZone: example.then(example =\u003e example.dnsZone),\n    ipam: example.then(example =\u003e example.ipam),\n    reverseDns: example.then(example =\u003e example.reverseDns),\n};\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.SDNZone.get_qinq(id=\"qinq1\")\npulumi.export(\"dataProxmoxVirtualEnvironmentSdnZoneQinq\", {\n    \"id\": example.id,\n    \"nodes\": example.nodes,\n    \"bridge\": example.bridge,\n    \"serviceVlan\": example.service_vlan,\n    \"serviceVlanProtocol\": example.service_vlan_protocol,\n    \"mtu\": example.mtu,\n    \"dns\": example.dns,\n    \"dnsZone\": example.dns_zone,\n    \"ipam\": example.ipam,\n    \"reverseDns\": example.reverse_dns,\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ProxmoxVE.SDNZone.GetQinq.Invoke(new()\n    {\n        Id = \"qinq1\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentSdnZoneQinq\"] = \n        {\n            { \"id\", example.Apply(getQinqResult =\u003e getQinqResult.Id) },\n            { \"nodes\", example.Apply(getQinqResult =\u003e getQinqResult.Nodes) },\n            { \"bridge\", example.Apply(getQinqResult =\u003e getQinqResult.Bridge) },\n            { \"serviceVlan\", example.Apply(getQinqResult =\u003e getQinqResult.ServiceVlan) },\n            { \"serviceVlanProtocol\", example.Apply(getQinqResult =\u003e getQinqResult.ServiceVlanProtocol) },\n            { \"mtu\", example.Apply(getQinqResult =\u003e getQinqResult.Mtu) },\n            { \"dns\", example.Apply(getQinqResult =\u003e getQinqResult.Dns) },\n            { \"dnsZone\", example.Apply(getQinqResult =\u003e getQinqResult.DnsZone) },\n            { \"ipam\", example.Apply(getQinqResult =\u003e getQinqResult.Ipam) },\n            { \"reverseDns\", example.Apply(getQinqResult =\u003e getQinqResult.ReverseDns) },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/sdnzone\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := sdnzone.GetQinq(ctx, \u0026sdnzone.GetQinqArgs{\n\t\t\tId: \"qinq1\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentSdnZoneQinq\", pulumi.Map{\n\t\t\t\"id\":                  example.Id,\n\t\t\t\"nodes\":               example.Nodes,\n\t\t\t\"bridge\":              example.Bridge,\n\t\t\t\"serviceVlan\":         example.ServiceVlan,\n\t\t\t\"serviceVlanProtocol\": example.ServiceVlanProtocol,\n\t\t\t\"mtu\":                 example.Mtu,\n\t\t\t\"dns\":                 example.Dns,\n\t\t\t\"dnsZone\":             example.DnsZone,\n\t\t\t\"ipam\":                example.Ipam,\n\t\t\t\"reverseDns\":          example.ReverseDns,\n\t\t})\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.SDNZone.SDNZoneFunctions;\nimport com.pulumi.proxmoxve.SDNZone.inputs.GetQinqArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = SDNZoneFunctions.getQinq(GetQinqArgs.builder()\n            .id(\"qinq1\")\n            .build());\n\n        ctx.export(\"dataProxmoxVirtualEnvironmentSdnZoneQinq\", Map.ofEntries(\n            Map.entry(\"id\", example.id()),\n            Map.entry(\"nodes\", example.nodes()),\n            Map.entry(\"bridge\", example.bridge()),\n            Map.entry(\"serviceVlan\", example.serviceVlan()),\n            Map.entry(\"serviceVlanProtocol\", example.serviceVlanProtocol()),\n            Map.entry(\"mtu\", example.mtu()),\n            Map.entry(\"dns\", example.dns()),\n            Map.entry(\"dnsZone\", example.dnsZone()),\n            Map.entry(\"ipam\", example.ipam()),\n            Map.entry(\"reverseDns\", example.reverseDns())\n        ));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: proxmoxve:SDNZone:getQinq\n      arguments:\n        id: qinq1\noutputs:\n  dataProxmoxVirtualEnvironmentSdnZoneQinq:\n    id: ${example.id}\n    nodes: ${example.nodes}\n    bridge: ${example.bridge}\n    serviceVlan: ${example.serviceVlan}\n    serviceVlanProtocol: ${example.serviceVlanProtocol}\n    mtu: ${example.mtu}\n    dns: ${example.dns}\n    dnsZone: ${example.dnsZone}\n    ipam: ${example.ipam}\n    reverseDns: ${example.reverseDns}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getQinq.\n","properties":{"id":{"type":"string","description":"The unique identifier of the SDN zone.\n"}},"type":"object","required":["id"]},"outputs":{"description":"A collection of values returned by getQinq.\n","properties":{"bridge":{"description":"A local, VLAN-aware bridge that is already configured on each local node\n","type":"string"},"dns":{"description":"DNS API server address.\n","type":"string"},"dnsZone":{"description":"DNS domain name. Used to register hostnames, such as `\u003chostname\u003e.\u003cdomain\u003e`. The DNS zone must already exist on the DNS server.\n","type":"string"},"id":{"description":"The unique identifier of the SDN zone.\n","type":"string"},"ipam":{"description":"IP Address Management system.\n","type":"string"},"mtu":{"description":"MTU value for the zone.\n","type":"integer"},"nodes":{"description":"The Proxmox nodes which the zone and associated VNets are deployed on\n","items":{"type":"string"},"type":"array"},"pending":{"description":"Indicates if the zone has pending configuration changes that need to be applied.\n","type":"boolean"},"reverseDns":{"description":"Reverse DNS API server address.\n","type":"string"},"serviceVlan":{"description":"Service VLAN tag for QinQ. The tag must be between \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`4094`\" pulumi-lang-dotnet=\"`4094`\" pulumi-lang-go=\"`4094`\" pulumi-lang-python=\"`4094`\" pulumi-lang-yaml=\"`4094`\" pulumi-lang-java=\"`4094`\"\u003e`4094`\u003c/span\u003e.\n","type":"integer"},"serviceVlanProtocol":{"description":"Service VLAN protocol for QinQ. The protocol must be `802.1ad` or `802.1q`.\n","type":"string"},"state":{"description":"Indicates the current state of the zone.\n","type":"string"}},"required":["bridge","dns","dnsZone","id","ipam","mtu","nodes","pending","reverseDns","serviceVlan","serviceVlanProtocol","state"],"type":"object"}},"proxmoxve:SDNZone/getSimple:getSimple":{"description":"Retrieves information about a Simple Zone in Proxmox SDN. It will create an isolated VNet bridge. This bridge is not linked to a physical interface, and VM traffic is only local on each the node. It can be used in NAT or routed setups.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = proxmoxve.SDNZone.getSimple({\n    id: \"simple1\",\n});\nexport const dataProxmoxVirtualEnvironmentSdnZoneSimple = {\n    id: example.then(example =\u003e example.id),\n    nodes: example.then(example =\u003e example.nodes),\n    mtu: example.then(example =\u003e example.mtu),\n    dns: example.then(example =\u003e example.dns),\n    dnsZone: example.then(example =\u003e example.dnsZone),\n    ipam: example.then(example =\u003e example.ipam),\n    reverseDns: example.then(example =\u003e example.reverseDns),\n};\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.SDNZone.get_simple(id=\"simple1\")\npulumi.export(\"dataProxmoxVirtualEnvironmentSdnZoneSimple\", {\n    \"id\": example.id,\n    \"nodes\": example.nodes,\n    \"mtu\": example.mtu,\n    \"dns\": example.dns,\n    \"dnsZone\": example.dns_zone,\n    \"ipam\": example.ipam,\n    \"reverseDns\": example.reverse_dns,\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ProxmoxVE.SDNZone.GetSimple.Invoke(new()\n    {\n        Id = \"simple1\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentSdnZoneSimple\"] = \n        {\n            { \"id\", example.Apply(getSimpleResult =\u003e getSimpleResult.Id) },\n            { \"nodes\", example.Apply(getSimpleResult =\u003e getSimpleResult.Nodes) },\n            { \"mtu\", example.Apply(getSimpleResult =\u003e getSimpleResult.Mtu) },\n            { \"dns\", example.Apply(getSimpleResult =\u003e getSimpleResult.Dns) },\n            { \"dnsZone\", example.Apply(getSimpleResult =\u003e getSimpleResult.DnsZone) },\n            { \"ipam\", example.Apply(getSimpleResult =\u003e getSimpleResult.Ipam) },\n            { \"reverseDns\", example.Apply(getSimpleResult =\u003e getSimpleResult.ReverseDns) },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/sdnzone\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := sdnzone.GetSimple(ctx, \u0026sdnzone.GetSimpleArgs{\n\t\t\tId: \"simple1\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentSdnZoneSimple\", pulumi.Map{\n\t\t\t\"id\":         example.Id,\n\t\t\t\"nodes\":      example.Nodes,\n\t\t\t\"mtu\":        example.Mtu,\n\t\t\t\"dns\":        example.Dns,\n\t\t\t\"dnsZone\":    example.DnsZone,\n\t\t\t\"ipam\":       example.Ipam,\n\t\t\t\"reverseDns\": example.ReverseDns,\n\t\t})\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.SDNZone.SDNZoneFunctions;\nimport com.pulumi.proxmoxve.SDNZone.inputs.GetSimpleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = SDNZoneFunctions.getSimple(GetSimpleArgs.builder()\n            .id(\"simple1\")\n            .build());\n\n        ctx.export(\"dataProxmoxVirtualEnvironmentSdnZoneSimple\", Map.ofEntries(\n            Map.entry(\"id\", example.id()),\n            Map.entry(\"nodes\", example.nodes()),\n            Map.entry(\"mtu\", example.mtu()),\n            Map.entry(\"dns\", example.dns()),\n            Map.entry(\"dnsZone\", example.dnsZone()),\n            Map.entry(\"ipam\", example.ipam()),\n            Map.entry(\"reverseDns\", example.reverseDns())\n        ));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: proxmoxve:SDNZone:getSimple\n      arguments:\n        id: simple1\noutputs:\n  dataProxmoxVirtualEnvironmentSdnZoneSimple:\n    id: ${example.id}\n    nodes: ${example.nodes}\n    mtu: ${example.mtu}\n    dns: ${example.dns}\n    dnsZone: ${example.dnsZone}\n    ipam: ${example.ipam}\n    reverseDns: ${example.reverseDns}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getSimple.\n","properties":{"id":{"type":"string","description":"The unique identifier of the SDN zone.\n"}},"type":"object","required":["id"]},"outputs":{"description":"A collection of values returned by getSimple.\n","properties":{"dhcp":{"description":"The type of the DHCP backend for this zone.\n","type":"string"},"dns":{"description":"DNS API server address.\n","type":"string"},"dnsZone":{"description":"DNS domain name. Used to register hostnames, such as `\u003chostname\u003e.\u003cdomain\u003e`. The DNS zone must already exist on the DNS server.\n","type":"string"},"id":{"description":"The unique identifier of the SDN zone.\n","type":"string"},"ipam":{"description":"IP Address Management system.\n","type":"string"},"mtu":{"description":"MTU value for the zone.\n","type":"integer"},"nodes":{"description":"The Proxmox nodes which the zone and associated VNets are deployed on\n","items":{"type":"string"},"type":"array"},"pending":{"description":"Indicates if the zone has pending configuration changes that need to be applied.\n","type":"boolean"},"reverseDns":{"description":"Reverse DNS API server address.\n","type":"string"},"state":{"description":"Indicates the current state of the zone.\n","type":"string"}},"required":["dhcp","dns","dnsZone","id","ipam","mtu","nodes","pending","reverseDns","state"],"type":"object"}},"proxmoxve:SDNZone/getVlan:getVlan":{"description":"Retrieves information about a VLAN Zone in Proxmox SDN. It uses an existing local Linux or OVS bridge to connect to the node's physical interface. It uses VLAN tagging defined in the VNet to isolate the network segments. This allows connectivity of VMs between different nodes.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = proxmoxve.SDNZone.getVlan({\n    id: \"vlan1\",\n});\nexport const dataProxmoxVirtualEnvironmentSdnZoneVlan = {\n    id: example.then(example =\u003e example.id),\n    nodes: example.then(example =\u003e example.nodes),\n    bridge: example.then(example =\u003e example.bridge),\n    mtu: example.then(example =\u003e example.mtu),\n    dns: example.then(example =\u003e example.dns),\n    dnsZone: example.then(example =\u003e example.dnsZone),\n    ipam: example.then(example =\u003e example.ipam),\n    reverseDns: example.then(example =\u003e example.reverseDns),\n};\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.SDNZone.get_vlan(id=\"vlan1\")\npulumi.export(\"dataProxmoxVirtualEnvironmentSdnZoneVlan\", {\n    \"id\": example.id,\n    \"nodes\": example.nodes,\n    \"bridge\": example.bridge,\n    \"mtu\": example.mtu,\n    \"dns\": example.dns,\n    \"dnsZone\": example.dns_zone,\n    \"ipam\": example.ipam,\n    \"reverseDns\": example.reverse_dns,\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ProxmoxVE.SDNZone.GetVlan.Invoke(new()\n    {\n        Id = \"vlan1\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentSdnZoneVlan\"] = \n        {\n            { \"id\", example.Apply(getVlanResult =\u003e getVlanResult.Id) },\n            { \"nodes\", example.Apply(getVlanResult =\u003e getVlanResult.Nodes) },\n            { \"bridge\", example.Apply(getVlanResult =\u003e getVlanResult.Bridge) },\n            { \"mtu\", example.Apply(getVlanResult =\u003e getVlanResult.Mtu) },\n            { \"dns\", example.Apply(getVlanResult =\u003e getVlanResult.Dns) },\n            { \"dnsZone\", example.Apply(getVlanResult =\u003e getVlanResult.DnsZone) },\n            { \"ipam\", example.Apply(getVlanResult =\u003e getVlanResult.Ipam) },\n            { \"reverseDns\", example.Apply(getVlanResult =\u003e getVlanResult.ReverseDns) },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/sdnzone\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := sdnzone.GetVlan(ctx, \u0026sdnzone.GetVlanArgs{\n\t\t\tId: \"vlan1\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentSdnZoneVlan\", pulumi.Map{\n\t\t\t\"id\":         example.Id,\n\t\t\t\"nodes\":      example.Nodes,\n\t\t\t\"bridge\":     example.Bridge,\n\t\t\t\"mtu\":        example.Mtu,\n\t\t\t\"dns\":        example.Dns,\n\t\t\t\"dnsZone\":    example.DnsZone,\n\t\t\t\"ipam\":       example.Ipam,\n\t\t\t\"reverseDns\": example.ReverseDns,\n\t\t})\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.SDNZone.SDNZoneFunctions;\nimport com.pulumi.proxmoxve.SDNZone.inputs.GetVlanArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = SDNZoneFunctions.getVlan(GetVlanArgs.builder()\n            .id(\"vlan1\")\n            .build());\n\n        ctx.export(\"dataProxmoxVirtualEnvironmentSdnZoneVlan\", Map.ofEntries(\n            Map.entry(\"id\", example.id()),\n            Map.entry(\"nodes\", example.nodes()),\n            Map.entry(\"bridge\", example.bridge()),\n            Map.entry(\"mtu\", example.mtu()),\n            Map.entry(\"dns\", example.dns()),\n            Map.entry(\"dnsZone\", example.dnsZone()),\n            Map.entry(\"ipam\", example.ipam()),\n            Map.entry(\"reverseDns\", example.reverseDns())\n        ));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: proxmoxve:SDNZone:getVlan\n      arguments:\n        id: vlan1\noutputs:\n  dataProxmoxVirtualEnvironmentSdnZoneVlan:\n    id: ${example.id}\n    nodes: ${example.nodes}\n    bridge: ${example.bridge}\n    mtu: ${example.mtu}\n    dns: ${example.dns}\n    dnsZone: ${example.dnsZone}\n    ipam: ${example.ipam}\n    reverseDns: ${example.reverseDns}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getVlan.\n","properties":{"id":{"type":"string","description":"The unique identifier of the SDN zone.\n"}},"type":"object","required":["id"]},"outputs":{"description":"A collection of values returned by getVlan.\n","properties":{"bridge":{"description":"The local bridge or OVS switch, already configured on *each* node that allows node-to-node connection.\n","type":"string"},"dns":{"description":"DNS API server address.\n","type":"string"},"dnsZone":{"description":"DNS domain name. Used to register hostnames, such as `\u003chostname\u003e.\u003cdomain\u003e`. The DNS zone must already exist on the DNS server.\n","type":"string"},"id":{"description":"The unique identifier of the SDN zone.\n","type":"string"},"ipam":{"description":"IP Address Management system.\n","type":"string"},"mtu":{"description":"MTU value for the zone.\n","type":"integer"},"nodes":{"description":"The Proxmox nodes which the zone and associated VNets are deployed on\n","items":{"type":"string"},"type":"array"},"pending":{"description":"Indicates if the zone has pending configuration changes that need to be applied.\n","type":"boolean"},"reverseDns":{"description":"Reverse DNS API server address.\n","type":"string"},"state":{"description":"Indicates the current state of the zone.\n","type":"string"}},"required":["bridge","dns","dnsZone","id","ipam","mtu","nodes","pending","reverseDns","state"],"type":"object"}},"proxmoxve:SDNZone/getVxlan:getVxlan":{"description":"Retrieves information about a VXLAN Zone in Proxmox SDN. It establishes a tunnel (overlay) on top of an existing network (underlay). This encapsulates layer 2 Ethernet frames within layer 4 UDP datagrams using the default destination port 4789. You have to configure the underlay network yourself to enable UDP connectivity between all peers. Because VXLAN encapsulation uses 50 bytes, the MTU needs to be 50 bytes lower than the outgoing physical interface.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = proxmoxve.SDNZone.getVxlan({\n    id: \"vxlan1\",\n});\nexport const dataProxmoxVirtualEnvironmentSdnZoneVxlan = {\n    id: example.then(example =\u003e example.id),\n    nodes: example.then(example =\u003e example.nodes),\n    peers: example.then(example =\u003e example.peers),\n    mtu: example.then(example =\u003e example.mtu),\n    dns: example.then(example =\u003e example.dns),\n    dnsZone: example.then(example =\u003e example.dnsZone),\n    ipam: example.then(example =\u003e example.ipam),\n    reverseDns: example.then(example =\u003e example.reverseDns),\n};\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.SDNZone.get_vxlan(id=\"vxlan1\")\npulumi.export(\"dataProxmoxVirtualEnvironmentSdnZoneVxlan\", {\n    \"id\": example.id,\n    \"nodes\": example.nodes,\n    \"peers\": example.peers,\n    \"mtu\": example.mtu,\n    \"dns\": example.dns,\n    \"dnsZone\": example.dns_zone,\n    \"ipam\": example.ipam,\n    \"reverseDns\": example.reverse_dns,\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ProxmoxVE.SDNZone.GetVxlan.Invoke(new()\n    {\n        Id = \"vxlan1\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentSdnZoneVxlan\"] = \n        {\n            { \"id\", example.Apply(getVxlanResult =\u003e getVxlanResult.Id) },\n            { \"nodes\", example.Apply(getVxlanResult =\u003e getVxlanResult.Nodes) },\n            { \"peers\", example.Apply(getVxlanResult =\u003e getVxlanResult.Peers) },\n            { \"mtu\", example.Apply(getVxlanResult =\u003e getVxlanResult.Mtu) },\n            { \"dns\", example.Apply(getVxlanResult =\u003e getVxlanResult.Dns) },\n            { \"dnsZone\", example.Apply(getVxlanResult =\u003e getVxlanResult.DnsZone) },\n            { \"ipam\", example.Apply(getVxlanResult =\u003e getVxlanResult.Ipam) },\n            { \"reverseDns\", example.Apply(getVxlanResult =\u003e getVxlanResult.ReverseDns) },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/sdnzone\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := sdnzone.GetVxlan(ctx, \u0026sdnzone.GetVxlanArgs{\n\t\t\tId: \"vxlan1\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentSdnZoneVxlan\", pulumi.Map{\n\t\t\t\"id\":         example.Id,\n\t\t\t\"nodes\":      example.Nodes,\n\t\t\t\"peers\":      example.Peers,\n\t\t\t\"mtu\":        example.Mtu,\n\t\t\t\"dns\":        example.Dns,\n\t\t\t\"dnsZone\":    example.DnsZone,\n\t\t\t\"ipam\":       example.Ipam,\n\t\t\t\"reverseDns\": example.ReverseDns,\n\t\t})\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.SDNZone.SDNZoneFunctions;\nimport com.pulumi.proxmoxve.SDNZone.inputs.GetVxlanArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = SDNZoneFunctions.getVxlan(GetVxlanArgs.builder()\n            .id(\"vxlan1\")\n            .build());\n\n        ctx.export(\"dataProxmoxVirtualEnvironmentSdnZoneVxlan\", Map.ofEntries(\n            Map.entry(\"id\", example.id()),\n            Map.entry(\"nodes\", example.nodes()),\n            Map.entry(\"peers\", example.peers()),\n            Map.entry(\"mtu\", example.mtu()),\n            Map.entry(\"dns\", example.dns()),\n            Map.entry(\"dnsZone\", example.dnsZone()),\n            Map.entry(\"ipam\", example.ipam()),\n            Map.entry(\"reverseDns\", example.reverseDns())\n        ));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: proxmoxve:SDNZone:getVxlan\n      arguments:\n        id: vxlan1\noutputs:\n  dataProxmoxVirtualEnvironmentSdnZoneVxlan:\n    id: ${example.id}\n    nodes: ${example.nodes}\n    peers: ${example.peers}\n    mtu: ${example.mtu}\n    dns: ${example.dns}\n    dnsZone: ${example.dnsZone}\n    ipam: ${example.ipam}\n    reverseDns: ${example.reverseDns}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getVxlan.\n","properties":{"id":{"type":"string","description":"The unique identifier of the SDN zone.\n"}},"type":"object","required":["id"]},"outputs":{"description":"A collection of values returned by getVxlan.\n","properties":{"dns":{"description":"DNS API server address.\n","type":"string"},"dnsZone":{"description":"DNS domain name. Used to register hostnames, such as `\u003chostname\u003e.\u003cdomain\u003e`. The DNS zone must already exist on the DNS server.\n","type":"string"},"id":{"description":"The unique identifier of the SDN zone.\n","type":"string"},"ipam":{"description":"IP Address Management system.\n","type":"string"},"mtu":{"description":"MTU value for the zone.\n","type":"integer"},"nodes":{"description":"The Proxmox nodes which the zone and associated VNets are deployed on\n","items":{"type":"string"},"type":"array"},"peers":{"description":"A list of IP addresses of each node in the VXLAN zone. This can be external nodes reachable at this IP address. All nodes in the cluster need to be mentioned here\n","items":{"type":"string"},"type":"array"},"pending":{"description":"Indicates if the zone has pending configuration changes that need to be applied.\n","type":"boolean"},"reverseDns":{"description":"Reverse DNS API server address.\n","type":"string"},"state":{"description":"Indicates the current state of the zone.\n","type":"string"}},"required":["dns","dnsZone","id","ipam","mtu","nodes","peers","pending","reverseDns","state"],"type":"object"}},"proxmoxve:Sdn/fabric/getOpenfabric:getOpenfabric":{"description":"OpenFabric Fabric in Proxmox SDN. Fabrics in Proxmox VE SDN provide automated routing between nodes in a cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst main = proxmoxve.Sdn.fabric.getOpenfabric({\n    id: \"main-fabric\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nmain = proxmoxve.Sdn.fabric.get_openfabric(id=\"main-fabric\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ProxmoxVE.Sdn.Fabric.GetOpenfabric.Invoke(new()\n    {\n        Id = \"main-fabric\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/sdn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sdn.GetOpenfabric(ctx, \u0026fabric.GetOpenfabricArgs{\n\t\t\tId: \"main-fabric\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Sdn_fabric.Sdn_fabricFunctions;\nimport com.pulumi.proxmoxve.Sdn.inputs.GetOpenfabricArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = Sdn_fabricFunctions.getOpenfabric(GetOpenfabricArgs.builder()\n            .id(\"main-fabric\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: proxmoxve:Sdn/fabric:getOpenfabric\n      arguments:\n        id: main-fabric\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getOpenfabric.\n","properties":{"id":{"type":"string","description":"The unique identifier of the SDN fabric.\n"}},"type":"object","required":["id"]},"outputs":{"description":"A collection of values returned by getOpenfabric.\n","properties":{"csnpInterval":{"description":"The\u003cspan pulumi-lang-nodejs=\" csnpInterval \" pulumi-lang-dotnet=\" CsnpInterval \" pulumi-lang-go=\" csnpInterval \" pulumi-lang-python=\" csnp_interval \" pulumi-lang-yaml=\" csnpInterval \" pulumi-lang-java=\" csnpInterval \"\u003e csnp_interval \u003c/span\u003eproperty for OpenFabric.\n","type":"integer"},"helloInterval":{"description":"The\u003cspan pulumi-lang-nodejs=\" helloInterval \" pulumi-lang-dotnet=\" HelloInterval \" pulumi-lang-go=\" helloInterval \" pulumi-lang-python=\" hello_interval \" pulumi-lang-yaml=\" helloInterval \" pulumi-lang-java=\" helloInterval \"\u003e hello_interval \u003c/span\u003eproperty for OpenFabric.\n","type":"integer"},"id":{"description":"The unique identifier of the SDN fabric.\n","type":"string"},"ip6Prefix":{"description":"IPv6 prefix cidr for the fabric.\n","type":"string"},"ipPrefix":{"description":"IPv4 prefix cidr for the fabric.\n","type":"string"}},"required":["csnpInterval","helloInterval","id","ip6Prefix","ipPrefix"],"type":"object"}},"proxmoxve:Sdn/fabric/getOspf:getOspf":{"description":"OSPF Fabric in Proxmox SDN. Fabrics in Proxmox VE SDN provide automated routing between nodes in a cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst main = proxmoxve.Sdn.fabric.getOspf({\n    id: \"main-fabric\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nmain = proxmoxve.Sdn.fabric.get_ospf(id=\"main-fabric\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ProxmoxVE.Sdn.Fabric.GetOspf.Invoke(new()\n    {\n        Id = \"main-fabric\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/sdn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sdn.GetOspf(ctx, \u0026fabric.GetOspfArgs{\n\t\t\tId: \"main-fabric\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Sdn_fabric.Sdn_fabricFunctions;\nimport com.pulumi.proxmoxve.Sdn.inputs.GetOspfArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = Sdn_fabricFunctions.getOspf(GetOspfArgs.builder()\n            .id(\"main-fabric\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: proxmoxve:Sdn/fabric:getOspf\n      arguments:\n        id: main-fabric\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getOspf.\n","properties":{"id":{"type":"string","description":"The unique identifier of the SDN fabric.\n"}},"type":"object","required":["id"]},"outputs":{"description":"A collection of values returned by getOspf.\n","properties":{"area":{"description":"OSPF area. Either a IPv4 address or a 32-bit number. Gets validated in rust.\n","type":"string"},"id":{"description":"The unique identifier of the SDN fabric.\n","type":"string"},"ipPrefix":{"description":"IPv4 prefix cidr for the fabric.\n","type":"string"}},"required":["area","id","ipPrefix"],"type":"object"}},"proxmoxve:Sdn/fabric/node/getOpenfabric:getOpenfabric":{"description":"OpenFabric Fabric Node in Proxmox SDN. Fabrics in Proxmox VE SDN provide automated routing between nodes in a cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst main = proxmoxve.Sdn.fabric.node.getOpenfabric({\n    fabricId: \"main-fabric\",\n    nodeId: \"pve\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nmain = proxmoxve.Sdn.fabric.node.get_openfabric(fabric_id=\"main-fabric\",\n    node_id=\"pve\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ProxmoxVE.Sdn.Fabric.Node.GetOpenfabric.Invoke(new()\n    {\n        FabricId = \"main-fabric\",\n        NodeId = \"pve\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/sdn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sdn.GetOpenfabric(ctx, \u0026fabric/node.GetOpenfabricArgs{\n\t\t\tFabricId: \"main-fabric\",\n\t\t\tNodeId:   \"pve\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Sdn_fabric_node.Sdn_fabric_nodeFunctions;\nimport com.pulumi.proxmoxve.Sdn.inputs.GetOpenfabricArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = Sdn_fabric_nodeFunctions.getOpenfabric(GetOpenfabricArgs.builder()\n            .fabricId(\"main-fabric\")\n            .nodeId(\"pve\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: proxmoxve:Sdn/fabric/node:getOpenfabric\n      arguments:\n        fabricId: main-fabric\n        nodeId: pve\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getOpenfabric.\n","properties":{"fabricId":{"type":"string","description":"The unique identifier of the SDN fabric.\n"},"nodeId":{"type":"string","description":"The unique identifier of the SDN fabric node.\n"}},"type":"object","required":["fabricId","nodeId"]},"outputs":{"description":"A collection of values returned by getOpenfabric.\n","properties":{"fabricId":{"description":"The unique identifier of the SDN fabric.\n","type":"string"},"id":{"type":"string"},"interfaceNames":{"description":"Set of interface names associated with the fabric node.\n","items":{"type":"string"},"type":"array"},"ip":{"description":"IPv4 address for the fabric node.\n","type":"string"},"ip6":{"description":"IPv6 address for the fabric node.\n","type":"string"},"nodeId":{"description":"The unique identifier of the SDN fabric node.\n","type":"string"}},"required":["fabricId","id","interfaceNames","ip","ip6","nodeId"],"type":"object"}},"proxmoxve:Sdn/fabric/node/getOspf:getOspf":{"description":"OSPF Fabric Node in Proxmox SDN. Fabrics in Proxmox VE SDN provide automated routing between nodes in a cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst main = proxmoxve.Sdn.fabric.node.getOspf({\n    fabricId: \"main-fabric\",\n    nodeId: \"pve\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nmain = proxmoxve.Sdn.fabric.node.get_ospf(fabric_id=\"main-fabric\",\n    node_id=\"pve\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = ProxmoxVE.Sdn.Fabric.Node.GetOspf.Invoke(new()\n    {\n        FabricId = \"main-fabric\",\n        NodeId = \"pve\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/sdn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sdn.GetOspf(ctx, \u0026fabric/node.GetOspfArgs{\n\t\t\tFabricId: \"main-fabric\",\n\t\t\tNodeId:   \"pve\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Sdn_fabric_node.Sdn_fabric_nodeFunctions;\nimport com.pulumi.proxmoxve.Sdn.inputs.GetOspfArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = Sdn_fabric_nodeFunctions.getOspf(GetOspfArgs.builder()\n            .fabricId(\"main-fabric\")\n            .nodeId(\"pve\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: proxmoxve:Sdn/fabric/node:getOspf\n      arguments:\n        fabricId: main-fabric\n        nodeId: pve\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getOspf.\n","properties":{"fabricId":{"type":"string","description":"The unique identifier of the SDN fabric.\n"},"nodeId":{"type":"string","description":"The unique identifier of the SDN fabric node.\n"}},"type":"object","required":["fabricId","nodeId"]},"outputs":{"description":"A collection of values returned by getOspf.\n","properties":{"fabricId":{"description":"The unique identifier of the SDN fabric.\n","type":"string"},"id":{"type":"string"},"interfaceNames":{"description":"Set of interface names associated with the fabric node.\n","items":{"type":"string"},"type":"array"},"ip":{"description":"IPv4 address for the fabric node.\n","type":"string"},"nodeId":{"description":"The unique identifier of the SDN fabric node.\n","type":"string"}},"required":["fabricId","id","interfaceNames","ip","nodeId"],"type":"object"}},"proxmoxve:Sdn/getSubnet:getSubnet":{"description":"Retrieve details about a specific SDN Subnet in Proxmox VE.\n","inputs":{"description":"A collection of arguments for invoking getSubnet.\n","properties":{"cidr":{"type":"string","description":"A CIDR network address, for example 10.0.0.0/8\n"},"dhcpRange":{"$ref":"#/types/proxmoxve:Sdn/getSubnetDhcpRange:getSubnetDhcpRange","description":"DHCP range (start and end IPs).\n"},"vnet":{"type":"string","description":"The VNet this subnet belongs to.\n"}},"type":"object","required":["cidr","vnet"]},"outputs":{"description":"A collection of values returned by getSubnet.\n","properties":{"cidr":{"description":"A CIDR network address, for example 10.0.0.0/8\n","type":"string"},"dhcpDnsServer":{"description":"The DNS server used for DHCP.\n","type":"string"},"dhcpRange":{"$ref":"#/types/proxmoxve:Sdn/getSubnetDhcpRange:getSubnetDhcpRange","description":"DHCP range (start and end IPs).\n"},"dnsZonePrefix":{"description":"Prefix used for DNS zone delegation.\n","type":"string"},"gateway":{"description":"The gateway address for the subnet.\n","type":"string"},"id":{"description":"The full ID in the format 'vnet-id/subnet-id'.\n","type":"string"},"snat":{"description":"Whether SNAT is enabled for the subnet.\n","type":"boolean"},"vnet":{"description":"The VNet this subnet belongs to.\n","type":"string"}},"required":["cidr","dhcpDnsServer","dhcpRange","dnsZonePrefix","gateway","id","snat","vnet"],"type":"object"}},"proxmoxve:Sdn/getVnet:getVnet":{"description":"Retrieves information about an existing SDN VNet.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = proxmoxve.Sdn.getVnet({\n    id: \"vnet1\",\n});\nexport const dataProxmoxVirtualEnvironmentSdnVnet = {\n    id: example.then(example =\u003e example.id),\n    zone: example.then(example =\u003e example.zone),\n    alias: example.then(example =\u003e example.alias),\n    isolatePorts: example.then(example =\u003e example.isolatePorts),\n    tag: example.then(example =\u003e example.tag),\n    vlanAware: example.then(example =\u003e example.vlanAware),\n};\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Sdn.get_vnet(id=\"vnet1\")\npulumi.export(\"dataProxmoxVirtualEnvironmentSdnVnet\", {\n    \"id\": example.id,\n    \"zone\": example.zone,\n    \"alias\": example.alias,\n    \"isolatePorts\": example.isolate_ports,\n    \"tag\": example.tag,\n    \"vlanAware\": example.vlan_aware,\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ProxmoxVE.Sdn.GetVnet.Invoke(new()\n    {\n        Id = \"vnet1\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentSdnVnet\"] = \n        {\n            { \"id\", example.Apply(getVnetResult =\u003e getVnetResult.Id) },\n            { \"zone\", example.Apply(getVnetResult =\u003e getVnetResult.Zone) },\n            { \"alias\", example.Apply(getVnetResult =\u003e getVnetResult.Alias) },\n            { \"isolatePorts\", example.Apply(getVnetResult =\u003e getVnetResult.IsolatePorts) },\n            { \"tag\", example.Apply(getVnetResult =\u003e getVnetResult.Tag) },\n            { \"vlanAware\", example.Apply(getVnetResult =\u003e getVnetResult.VlanAware) },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/sdn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := sdn.GetVnet(ctx, \u0026sdn.GetVnetArgs{\n\t\t\tId: \"vnet1\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentSdnVnet\", pulumi.Map{\n\t\t\t\"id\":           example.Id,\n\t\t\t\"zone\":         example.Zone,\n\t\t\t\"alias\":        example.Alias,\n\t\t\t\"isolatePorts\": example.IsolatePorts,\n\t\t\t\"tag\":          example.Tag,\n\t\t\t\"vlanAware\":    example.VlanAware,\n\t\t})\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Sdn.SdnFunctions;\nimport com.pulumi.proxmoxve.Sdn.inputs.GetVnetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = SdnFunctions.getVnet(GetVnetArgs.builder()\n            .id(\"vnet1\")\n            .build());\n\n        ctx.export(\"dataProxmoxVirtualEnvironmentSdnVnet\", Map.ofEntries(\n            Map.entry(\"id\", example.id()),\n            Map.entry(\"zone\", example.zone()),\n            Map.entry(\"alias\", example.alias()),\n            Map.entry(\"isolatePorts\", example.isolatePorts()),\n            Map.entry(\"tag\", example.tag()),\n            Map.entry(\"vlanAware\", example.vlanAware())\n        ));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: proxmoxve:Sdn:getVnet\n      arguments:\n        id: vnet1\noutputs:\n  dataProxmoxVirtualEnvironmentSdnVnet:\n    id: ${example.id}\n    zone: ${example.zone}\n    alias: ${example.alias}\n    isolatePorts: ${example.isolatePorts}\n    tag: ${example.tag}\n    vlanAware: ${example.vlanAware}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getVnet.\n","properties":{"id":{"type":"string","description":"The unique identifier of the SDN VNet.\n"}},"type":"object","required":["id"]},"outputs":{"description":"A collection of values returned by getVnet.\n","properties":{"alias":{"description":"An optional alias for this VNet.\n","type":"string"},"id":{"description":"The unique identifier of the SDN VNet.\n","type":"string"},"isolatePorts":{"description":"Isolate ports within this VNet.\n","type":"boolean"},"tag":{"description":"Tag value for VLAN/VXLAN (can't be used with other zone types).\n","type":"integer"},"vlanAware":{"description":"Allow VM VLANs to pass through this VNet.\n","type":"boolean"},"zone":{"description":"The zone to which this VNet belongs.\n","type":"string"}},"required":["alias","id","isolatePorts","tag","vlanAware","zone"],"type":"object"}},"proxmoxve:Sdn/getVnets:getVnets":{"description":"Retrieves information about all SDN VNets in Proxmox. This data source lists all virtual networks configured in the Software-Defined Networking setup.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\n// List all SDN VNets\nconst all = proxmoxve.Sdn.getVnets({});\nexport const dataProxmoxVirtualEnvironmentSdnVnetsAll = {\n    vnets: all.then(all =\u003e all.vnets),\n};\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# List all SDN VNets\nall = proxmoxve.Sdn.get_vnets()\npulumi.export(\"dataProxmoxVirtualEnvironmentSdnVnetsAll\", {\n    \"vnets\": all.vnets,\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // List all SDN VNets\n    var all = ProxmoxVE.Sdn.GetVnets.Invoke();\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentSdnVnetsAll\"] = \n        {\n            { \"vnets\", all.Apply(getVnetsResult =\u003e getVnetsResult.Vnets) },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/sdn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// List all SDN VNets\n\t\tall, err := sdn.GetVnets(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentSdnVnetsAll\", []sdn.GetVnetsVnetMap{\n\t\t\t\"vnets\": all.Vnets,\n\t\t})\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Sdn.SdnFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // List all SDN VNets\n        final var all = SdnFunctions.getVnets(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);\n\n        ctx.export(\"dataProxmoxVirtualEnvironmentSdnVnetsAll\", Map.of(\"vnets\", all.vnets()));\n    }\n}\n```\n```yaml\nvariables:\n  # List all SDN VNets\n  all:\n    fn::invoke:\n      function: proxmoxve:Sdn:getVnets\n      arguments: {}\noutputs:\n  dataProxmoxVirtualEnvironmentSdnVnetsAll:\n    vnets: ${all.vnets}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getVnets.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"vnets":{"description":"List of SDN VNets.\n","items":{"$ref":"#/types/proxmoxve:Sdn/getVnetsVnet:getVnetsVnet"},"type":"array"}},"required":["vnets","id"],"type":"object"}},"proxmoxve:Sdn/getZones:getZones":{"description":"Retrieves information about all SDN Zones in Proxmox. This data source can optionally filter zones by type.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\n// List all SDN zones\nconst all = proxmoxve.Sdn.getZones({});\n// List only EVPN zones\nconst evpnOnly = proxmoxve.Sdn.getZones({\n    type: \"evpn\",\n});\n// List only Simple zones  \nconst simpleOnly = proxmoxve.Sdn.getZones({\n    type: \"simple\",\n});\nexport const dataProxmoxVirtualEnvironmentSdnZonesAll = {\n    zones: all.then(all =\u003e all.zones),\n};\nexport const dataProxmoxVirtualEnvironmentSdnZonesFiltered = {\n    evpnZones: evpnOnly.then(evpnOnly =\u003e evpnOnly.zones),\n    simpleZones: simpleOnly.then(simpleOnly =\u003e simpleOnly.zones),\n};\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# List all SDN zones\nall = proxmoxve.Sdn.get_zones()\n# List only EVPN zones\nevpn_only = proxmoxve.Sdn.get_zones(type=\"evpn\")\n# List only Simple zones  \nsimple_only = proxmoxve.Sdn.get_zones(type=\"simple\")\npulumi.export(\"dataProxmoxVirtualEnvironmentSdnZonesAll\", {\n    \"zones\": all.zones,\n})\npulumi.export(\"dataProxmoxVirtualEnvironmentSdnZonesFiltered\", {\n    \"evpnZones\": evpn_only.zones,\n    \"simpleZones\": simple_only.zones,\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // List all SDN zones\n    var all = ProxmoxVE.Sdn.GetZones.Invoke();\n\n    // List only EVPN zones\n    var evpnOnly = ProxmoxVE.Sdn.GetZones.Invoke(new()\n    {\n        Type = \"evpn\",\n    });\n\n    // List only Simple zones  \n    var simpleOnly = ProxmoxVE.Sdn.GetZones.Invoke(new()\n    {\n        Type = \"simple\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentSdnZonesAll\"] = \n        {\n            { \"zones\", all.Apply(getZonesResult =\u003e getZonesResult.Zones) },\n        },\n        [\"dataProxmoxVirtualEnvironmentSdnZonesFiltered\"] = \n        {\n            { \"evpnZones\", evpnOnly.Apply(getZonesResult =\u003e getZonesResult.Zones) },\n            { \"simpleZones\", simpleOnly.Apply(getZonesResult =\u003e getZonesResult.Zones) },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/sdn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// List all SDN zones\n\t\tall, err := sdn.GetZones(ctx, \u0026sdn.GetZonesArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// List only EVPN zones\n\t\tevpnOnly, err := sdn.GetZones(ctx, \u0026sdn.GetZonesArgs{\n\t\t\tType: pulumi.StringRef(\"evpn\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// List only Simple zones\n\t\tsimpleOnly, err := sdn.GetZones(ctx, \u0026sdn.GetZonesArgs{\n\t\t\tType: pulumi.StringRef(\"simple\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentSdnZonesAll\", []sdn.GetZonesZoneMap{\n\t\t\t\"zones\": all.Zones,\n\t\t})\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentSdnZonesFiltered\", []sdn.GetZonesZoneMap{\n\t\t\t\"evpnZones\":   evpnOnly.Zones,\n\t\t\t\"simpleZones\": simpleOnly.Zones,\n\t\t})\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Sdn.SdnFunctions;\nimport com.pulumi.proxmoxve.Sdn.inputs.GetZonesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // List all SDN zones\n        final var all = SdnFunctions.getZones(GetZonesArgs.builder()\n            .build());\n\n        // List only EVPN zones\n        final var evpnOnly = SdnFunctions.getZones(GetZonesArgs.builder()\n            .type(\"evpn\")\n            .build());\n\n        // List only Simple zones  \n        final var simpleOnly = SdnFunctions.getZones(GetZonesArgs.builder()\n            .type(\"simple\")\n            .build());\n\n        ctx.export(\"dataProxmoxVirtualEnvironmentSdnZonesAll\", Map.of(\"zones\", all.zones()));\n        ctx.export(\"dataProxmoxVirtualEnvironmentSdnZonesFiltered\", Map.ofEntries(\n            Map.entry(\"evpnZones\", evpnOnly.zones()),\n            Map.entry(\"simpleZones\", simpleOnly.zones())\n        ));\n    }\n}\n```\n```yaml\nvariables:\n  # List all SDN zones\n  all:\n    fn::invoke:\n      function: proxmoxve:Sdn:getZones\n      arguments: {}\n  # List only EVPN zones\n  evpnOnly:\n    fn::invoke:\n      function: proxmoxve:Sdn:getZones\n      arguments:\n        type: evpn\n  # List only Simple zones\n  simpleOnly:\n    fn::invoke:\n      function: proxmoxve:Sdn:getZones\n      arguments:\n        type: simple\noutputs:\n  dataProxmoxVirtualEnvironmentSdnZonesAll:\n    zones: ${all.zones}\n  dataProxmoxVirtualEnvironmentSdnZonesFiltered:\n    evpnZones: ${evpnOnly.zones}\n    simpleZones: ${simpleOnly.zones}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getZones.\n","properties":{"type":{"type":"string","description":"Filter zones by type (simple, vlan, qinq, vxlan, evpn).\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getZones.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"type":{"description":"Filter zones by type (simple, vlan, qinq, vxlan, evpn).\n","type":"string"},"zones":{"description":"List of SDN zones.\n","items":{"$ref":"#/types/proxmoxve:Sdn/getZonesZone:getZonesZone"},"type":"array"}},"required":["zones","id"],"type":"object"}},"proxmoxve:Storage/getDatastores:getDatastores":{"description":"Retrieves information about all the datastores available to a specific node.\n","inputs":{"description":"A collection of arguments for invoking getDatastores.\n","properties":{"datastores":{"type":"array","items":{"$ref":"#/types/proxmoxve:Storage/getDatastoresDatastore:getDatastoresDatastore"},"description":"The list of datastores.\n"},"filters":{"$ref":"#/types/proxmoxve:Storage/getDatastoresFilters:getDatastoresFilters","description":"The filters to apply to the stores.\n"},"nodeName":{"type":"string","description":"The name of the node to retrieve the stores from.\n"}},"type":"object","required":["nodeName"]},"outputs":{"description":"A collection of values returned by getDatastores.\n","properties":{"datastores":{"description":"The list of datastores.\n","items":{"$ref":"#/types/proxmoxve:Storage/getDatastoresDatastore:getDatastoresDatastore"},"type":"array"},"filters":{"$ref":"#/types/proxmoxve:Storage/getDatastoresFilters:getDatastoresFilters","description":"The filters to apply to the stores.\n"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"nodeName":{"description":"The name of the node to retrieve the stores from.\n","type":"string"}},"required":["nodeName","id"],"type":"object"}},"proxmoxve:VM/getVirtualMachine:getVirtualMachine":{"description":"Retrieves information about a specific VM.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst testVm = proxmoxve.VM.getVirtualMachine({\n    nodeName: \"test\",\n    vmId: 100,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\ntest_vm = proxmoxve.VM.get_virtual_machine(node_name=\"test\",\n    vm_id=100)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var testVm = ProxmoxVE.VM.GetVirtualMachine.Invoke(new()\n    {\n        NodeName = \"test\",\n        VmId = 100,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/vm\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vm.GetVirtualMachine(ctx, \u0026vm.GetVirtualMachineArgs{\n\t\t\tNodeName: \"test\",\n\t\t\tVmId:     100,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.VM.VMFunctions;\nimport com.pulumi.proxmoxve.VM.inputs.GetVirtualMachineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var testVm = VMFunctions.getVirtualMachine(GetVirtualMachineArgs.builder()\n            .nodeName(\"test\")\n            .vmId(100)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  testVm:\n    fn::invoke:\n      function: proxmoxve:VM:getVirtualMachine\n      arguments:\n        nodeName: test\n        vmId: 100\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getVirtualMachine.\n","properties":{"nodeName":{"type":"string","description":"The node name.\n"},"status":{"type":"string","description":"The status of the VM.\n"},"template":{"type":"boolean","description":"Whether the VM is a template.\n"},"vmId":{"type":"integer","description":"The VM identifier.\n"}},"type":"object","required":["nodeName","vmId"]},"outputs":{"description":"A collection of values returned by getVirtualMachine.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"name":{"description":"The virtual machine name.\n","type":"string"},"nodeName":{"type":"string"},"status":{"description":"The status of the VM.\n","type":"string"},"tags":{"description":"A list of tags of the VM.\n","items":{"type":"string"},"type":"array"},"template":{"description":"Whether the VM is a template.\n","type":"boolean"},"vmId":{"type":"integer"}},"required":["name","nodeName","tags","vmId","id"],"type":"object"}},"proxmoxve:VM/getVirtualMachines:getVirtualMachines":{"description":"Retrieves information about all VMs in the Proxmox cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst ubuntuVms = proxmoxve.VM.getVirtualMachines({\n    tags: [\"ubuntu\"],\n});\nconst ubuntuTemplates = proxmoxve.VM.getVirtualMachines({\n    tags: [\n        \"template\",\n        \"latest\",\n    ],\n    filters: [\n        {\n            name: \"template\",\n            values: [\"true\"],\n        },\n        {\n            name: \"status\",\n            values: [\"stopped\"],\n        },\n        {\n            name: \"name\",\n            regex: true,\n            values: [\"^ubuntu-20.*$\"],\n        },\n        {\n            name: \"node_name\",\n            regex: true,\n            values: [\n                \"node_us_[1-3]\",\n                \"node_eu_[1-3]\",\n            ],\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nubuntu_vms = proxmoxve.VM.get_virtual_machines(tags=[\"ubuntu\"])\nubuntu_templates = proxmoxve.VM.get_virtual_machines(tags=[\n        \"template\",\n        \"latest\",\n    ],\n    filters=[\n        {\n            \"name\": \"template\",\n            \"values\": [\"true\"],\n        },\n        {\n            \"name\": \"status\",\n            \"values\": [\"stopped\"],\n        },\n        {\n            \"name\": \"name\",\n            \"regex\": True,\n            \"values\": [\"^ubuntu-20.*$\"],\n        },\n        {\n            \"name\": \"node_name\",\n            \"regex\": True,\n            \"values\": [\n                \"node_us_[1-3]\",\n                \"node_eu_[1-3]\",\n            ],\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ubuntuVms = ProxmoxVE.VM.GetVirtualMachines.Invoke(new()\n    {\n        Tags = new[]\n        {\n            \"ubuntu\",\n        },\n    });\n\n    var ubuntuTemplates = ProxmoxVE.VM.GetVirtualMachines.Invoke(new()\n    {\n        Tags = new[]\n        {\n            \"template\",\n            \"latest\",\n        },\n        Filters = new[]\n        {\n            new ProxmoxVE.VM.Inputs.GetVirtualMachinesFilterInputArgs\n            {\n                Name = \"template\",\n                Values = new[]\n                {\n                    \"true\",\n                },\n            },\n            new ProxmoxVE.VM.Inputs.GetVirtualMachinesFilterInputArgs\n            {\n                Name = \"status\",\n                Values = new[]\n                {\n                    \"stopped\",\n                },\n            },\n            new ProxmoxVE.VM.Inputs.GetVirtualMachinesFilterInputArgs\n            {\n                Name = \"name\",\n                Regex = true,\n                Values = new[]\n                {\n                    \"^ubuntu-20.*$\",\n                },\n            },\n            new ProxmoxVE.VM.Inputs.GetVirtualMachinesFilterInputArgs\n            {\n                Name = \"node_name\",\n                Regex = true,\n                Values = new[]\n                {\n                    \"node_us_[1-3]\",\n                    \"node_eu_[1-3]\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/vm\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vm.GetVirtualMachines(ctx, \u0026vm.GetVirtualMachinesArgs{\n\t\t\tTags: []string{\n\t\t\t\t\"ubuntu\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vm.GetVirtualMachines(ctx, \u0026vm.GetVirtualMachinesArgs{\n\t\t\tTags: []string{\n\t\t\t\t\"template\",\n\t\t\t\t\"latest\",\n\t\t\t},\n\t\t\tFilters: []vm.GetVirtualMachinesFilter{\n\t\t\t\t{\n\t\t\t\t\tName: \"template\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"true\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName: \"status\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"stopped\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:  \"name\",\n\t\t\t\t\tRegex: pulumi.BoolRef(true),\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"^ubuntu-20.*$\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:  \"node_name\",\n\t\t\t\t\tRegex: pulumi.BoolRef(true),\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"node_us_[1-3]\",\n\t\t\t\t\t\t\"node_eu_[1-3]\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.VM.VMFunctions;\nimport com.pulumi.proxmoxve.VM.inputs.GetVirtualMachinesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var ubuntuVms = VMFunctions.getVirtualMachines(GetVirtualMachinesArgs.builder()\n            .tags(\"ubuntu\")\n            .build());\n\n        final var ubuntuTemplates = VMFunctions.getVirtualMachines(GetVirtualMachinesArgs.builder()\n            .tags(            \n                \"template\",\n                \"latest\")\n            .filters(            \n                GetVirtualMachinesFilterArgs.builder()\n                    .name(\"template\")\n                    .values(\"true\")\n                    .build(),\n                GetVirtualMachinesFilterArgs.builder()\n                    .name(\"status\")\n                    .values(\"stopped\")\n                    .build(),\n                GetVirtualMachinesFilterArgs.builder()\n                    .name(\"name\")\n                    .regex(true)\n                    .values(\"^ubuntu-20.*$\")\n                    .build(),\n                GetVirtualMachinesFilterArgs.builder()\n                    .name(\"node_name\")\n                    .regex(true)\n                    .values(                    \n                        \"node_us_[1-3]\",\n                        \"node_eu_[1-3]\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  ubuntuVms:\n    fn::invoke:\n      function: proxmoxve:VM:getVirtualMachines\n      arguments:\n        tags:\n          - ubuntu\n  ubuntuTemplates:\n    fn::invoke:\n      function: proxmoxve:VM:getVirtualMachines\n      arguments:\n        tags:\n          - template\n          - latest\n        filters:\n          - name: template\n            values:\n              - true\n          - name: status\n            values:\n              - stopped\n          - name: name\n            regex: true\n            values:\n              - ^ubuntu-20.*$\n          - name: node_name\n            regex: true\n            values:\n              - node_us_[1-3]\n              - node_eu_[1-3]\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getVirtualMachines.\n","properties":{"filters":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/getVirtualMachinesFilter:getVirtualMachinesFilter"},"description":"Filter blocks. The VM must satisfy all filter blocks to be included in the result.\n"},"nodeName":{"type":"string","description":"The node name. All cluster nodes will be queried in case this is omitted\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags to filter the VMs. The VM must have all\nthe tags to be included in the result.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getVirtualMachines.\n","properties":{"filters":{"items":{"$ref":"#/types/proxmoxve:VM/getVirtualMachinesFilter:getVirtualMachinesFilter"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"nodeName":{"description":"The node name.\n","type":"string"},"tags":{"description":"A list of tags of the VM.\n","items":{"type":"string"},"type":"array"},"vms":{"description":"The VMs list.\n","items":{"$ref":"#/types/proxmoxve:VM/getVirtualMachinesVm:getVirtualMachinesVm"},"type":"array"}},"required":["vms","id"],"type":"object"}},"proxmoxve:index/getContainer:getContainer":{"description":"Retrieves information about a specific Container.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst testContainer = proxmoxve.getContainer({\n    nodeName: \"test\",\n    vmId: 100,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\ntest_container = proxmoxve.get_container(node_name=\"test\",\n    vm_id=100)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var testContainer = ProxmoxVE.GetContainer.Invoke(new()\n    {\n        NodeName = \"test\",\n        VmId = 100,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := proxmoxve.GetContainer(ctx, \u0026proxmoxve.GetContainerArgs{\n\t\t\tNodeName: \"test\",\n\t\t\tVmId:     100,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.ProxmoxveFunctions;\nimport com.pulumi.proxmoxve.inputs.GetContainerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var testContainer = ProxmoxveFunctions.getContainer(GetContainerArgs.builder()\n            .nodeName(\"test\")\n            .vmId(100)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  testContainer:\n    fn::invoke:\n      function: proxmoxve:getContainer\n      arguments:\n        nodeName: test\n        vmId: 100\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getContainer.\n","properties":{"nodeName":{"type":"string","description":"The node name.\n"},"status":{"type":"string","description":"The status of the container.\n"},"template":{"type":"boolean","description":"Whether the container is a template.\n"},"vmId":{"type":"integer","description":"The container identifier.\n"}},"type":"object","required":["nodeName","vmId"]},"outputs":{"description":"A collection of values returned by getContainer.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"name":{"description":"The container name.\n","type":"string"},"nodeName":{"type":"string"},"status":{"description":"The status of the container.\n","type":"string"},"tags":{"description":"A list of tags of the container.\n","items":{"type":"string"},"type":"array"},"template":{"description":"Whether the container is a template.\n","type":"boolean"},"vmId":{"type":"integer"}},"required":["name","nodeName","tags","vmId","id"],"type":"object"}},"proxmoxve:index/getContainers:getContainers":{"description":"Retrieves information about all containers in the Proxmox cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst ubuntuContainers = proxmoxve.getContainers({\n    tags: [\"ubuntu\"],\n});\nconst ubuntuTemplates = proxmoxve.getContainers({\n    tags: [\n        \"template\",\n        \"latest\",\n    ],\n    filters: [\n        {\n            name: \"template\",\n            values: [\"true\"],\n        },\n        {\n            name: \"status\",\n            values: [\"stopped\"],\n        },\n        {\n            name: \"name\",\n            regex: true,\n            values: [\"^ubuntu-20.*$\"],\n        },\n        {\n            name: \"node_name\",\n            regex: true,\n            values: [\n                \"node_us_[1-3]\",\n                \"node_eu_[1-3]\",\n            ],\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nubuntu_containers = proxmoxve.get_containers(tags=[\"ubuntu\"])\nubuntu_templates = proxmoxve.get_containers(tags=[\n        \"template\",\n        \"latest\",\n    ],\n    filters=[\n        {\n            \"name\": \"template\",\n            \"values\": [\"true\"],\n        },\n        {\n            \"name\": \"status\",\n            \"values\": [\"stopped\"],\n        },\n        {\n            \"name\": \"name\",\n            \"regex\": True,\n            \"values\": [\"^ubuntu-20.*$\"],\n        },\n        {\n            \"name\": \"node_name\",\n            \"regex\": True,\n            \"values\": [\n                \"node_us_[1-3]\",\n                \"node_eu_[1-3]\",\n            ],\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ubuntuContainers = ProxmoxVE.GetContainers.Invoke(new()\n    {\n        Tags = new[]\n        {\n            \"ubuntu\",\n        },\n    });\n\n    var ubuntuTemplates = ProxmoxVE.GetContainers.Invoke(new()\n    {\n        Tags = new[]\n        {\n            \"template\",\n            \"latest\",\n        },\n        Filters = new[]\n        {\n            new ProxmoxVE.Inputs.GetContainersFilterInputArgs\n            {\n                Name = \"template\",\n                Values = new[]\n                {\n                    \"true\",\n                },\n            },\n            new ProxmoxVE.Inputs.GetContainersFilterInputArgs\n            {\n                Name = \"status\",\n                Values = new[]\n                {\n                    \"stopped\",\n                },\n            },\n            new ProxmoxVE.Inputs.GetContainersFilterInputArgs\n            {\n                Name = \"name\",\n                Regex = true,\n                Values = new[]\n                {\n                    \"^ubuntu-20.*$\",\n                },\n            },\n            new ProxmoxVE.Inputs.GetContainersFilterInputArgs\n            {\n                Name = \"node_name\",\n                Regex = true,\n                Values = new[]\n                {\n                    \"node_us_[1-3]\",\n                    \"node_eu_[1-3]\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := proxmoxve.GetContainers(ctx, \u0026proxmoxve.GetContainersArgs{\n\t\t\tTags: []string{\n\t\t\t\t\"ubuntu\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = proxmoxve.GetContainers(ctx, \u0026proxmoxve.GetContainersArgs{\n\t\t\tTags: []string{\n\t\t\t\t\"template\",\n\t\t\t\t\"latest\",\n\t\t\t},\n\t\t\tFilters: []proxmoxve.GetContainersFilter{\n\t\t\t\t{\n\t\t\t\t\tName: \"template\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"true\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName: \"status\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"stopped\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:  \"name\",\n\t\t\t\t\tRegex: pulumi.BoolRef(true),\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"^ubuntu-20.*$\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName:  \"node_name\",\n\t\t\t\t\tRegex: pulumi.BoolRef(true),\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"node_us_[1-3]\",\n\t\t\t\t\t\t\"node_eu_[1-3]\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.ProxmoxveFunctions;\nimport com.pulumi.proxmoxve.inputs.GetContainersArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var ubuntuContainers = ProxmoxveFunctions.getContainers(GetContainersArgs.builder()\n            .tags(\"ubuntu\")\n            .build());\n\n        final var ubuntuTemplates = ProxmoxveFunctions.getContainers(GetContainersArgs.builder()\n            .tags(            \n                \"template\",\n                \"latest\")\n            .filters(            \n                GetContainersFilterArgs.builder()\n                    .name(\"template\")\n                    .values(\"true\")\n                    .build(),\n                GetContainersFilterArgs.builder()\n                    .name(\"status\")\n                    .values(\"stopped\")\n                    .build(),\n                GetContainersFilterArgs.builder()\n                    .name(\"name\")\n                    .regex(true)\n                    .values(\"^ubuntu-20.*$\")\n                    .build(),\n                GetContainersFilterArgs.builder()\n                    .name(\"node_name\")\n                    .regex(true)\n                    .values(                    \n                        \"node_us_[1-3]\",\n                        \"node_eu_[1-3]\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  ubuntuContainers:\n    fn::invoke:\n      function: proxmoxve:getContainers\n      arguments:\n        tags:\n          - ubuntu\n  ubuntuTemplates:\n    fn::invoke:\n      function: proxmoxve:getContainers\n      arguments:\n        tags:\n          - template\n          - latest\n        filters:\n          - name: template\n            values:\n              - true\n          - name: status\n            values:\n              - stopped\n          - name: name\n            regex: true\n            values:\n              - ^ubuntu-20.*$\n          - name: node_name\n            regex: true\n            values:\n              - node_us_[1-3]\n              - node_eu_[1-3]\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getContainers.\n","properties":{"filters":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/getContainersFilter:getContainersFilter"},"description":"Filter blocks. The container must satisfy all filter blocks to be included in the result.\n"},"nodeName":{"type":"string","description":"The node name. All cluster nodes will be queried in case this is omitted\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags to filter the containers. The container must have all\nthe tags to be included in the result.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getContainers.\n","properties":{"containers":{"description":"The containers list.\n","items":{"$ref":"#/types/proxmoxve:index/getContainersContainer:getContainersContainer"},"type":"array"},"filters":{"items":{"$ref":"#/types/proxmoxve:index/getContainersFilter:getContainersFilter"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"nodeName":{"description":"The node name.\n","type":"string"},"tags":{"description":"A list of tags of the container.\n","items":{"type":"string"},"type":"array"}},"required":["containers","id"],"type":"object"}},"proxmoxve:index/getFile:getFile":{"description":"Retrieves information about an existing file in a Proxmox Virtual Environment node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst ubuntuIso = proxmoxve.getFile({\n    nodeName: \"pve\",\n    datastoreId: \"local\",\n    contentType: \"iso\",\n    fileName: \"ubuntu-22.04.3-live-server-amd64.iso\",\n});\nconst ubuntuContainerTemplate = proxmoxve.getFile({\n    nodeName: \"pve\",\n    datastoreId: \"local\",\n    contentType: \"vztmpl\",\n    fileName: \"ubuntu-22.04-standard_22.04-1_amd64.tar.zst\",\n});\nconst cloudInitSnippet = proxmoxve.getFile({\n    nodeName: \"pve\",\n    datastoreId: \"local\",\n    contentType: \"snippets\",\n    fileName: \"cloud-init-config.yaml\",\n});\nconst importedFile = proxmoxve.getFile({\n    nodeName: \"pve\",\n    datastoreId: \"local\",\n    contentType: \"import\",\n    fileName: \"imported-config.yaml\",\n});\nexport const ubuntuIsoId = ubuntuIso.then(ubuntuIso =\u003e ubuntuIso.id);\nexport const ubuntuIsoSize = ubuntuIso.then(ubuntuIso =\u003e ubuntuIso.fileSize);\nexport const containerTemplateFormat = ubuntuContainerTemplate.then(ubuntuContainerTemplate =\u003e ubuntuContainerTemplate.fileFormat);\nconst example = new proxmoxve.vm.VirtualMachine(\"example\", {\n    nodeName: \"pve\",\n    vmId: 100,\n    cdrom: {\n        fileId: ubuntuIso.then(ubuntuIso =\u003e ubuntuIso.id),\n    },\n    cpu: {\n        cores: 2,\n    },\n    memory: {\n        dedicated: 2048,\n    },\n    disks: [{\n        datastoreId: \"local-lvm\",\n        fileFormat: \"qcow2\",\n        size: 20,\n    }],\n    networkDevices: [{\n        bridge: \"vmbr0\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nubuntu_iso = proxmoxve.get_file(node_name=\"pve\",\n    datastore_id=\"local\",\n    content_type=\"iso\",\n    file_name=\"ubuntu-22.04.3-live-server-amd64.iso\")\nubuntu_container_template = proxmoxve.get_file(node_name=\"pve\",\n    datastore_id=\"local\",\n    content_type=\"vztmpl\",\n    file_name=\"ubuntu-22.04-standard_22.04-1_amd64.tar.zst\")\ncloud_init_snippet = proxmoxve.get_file(node_name=\"pve\",\n    datastore_id=\"local\",\n    content_type=\"snippets\",\n    file_name=\"cloud-init-config.yaml\")\nimported_file = proxmoxve.get_file(node_name=\"pve\",\n    datastore_id=\"local\",\n    content_type=\"import\",\n    file_name=\"imported-config.yaml\")\npulumi.export(\"ubuntuIsoId\", ubuntu_iso.id)\npulumi.export(\"ubuntuIsoSize\", ubuntu_iso.file_size)\npulumi.export(\"containerTemplateFormat\", ubuntu_container_template.file_format)\nexample = proxmoxve.vm.VirtualMachine(\"example\",\n    node_name=\"pve\",\n    vm_id=100,\n    cdrom={\n        \"file_id\": ubuntu_iso.id,\n    },\n    cpu={\n        \"cores\": 2,\n    },\n    memory={\n        \"dedicated\": 2048,\n    },\n    disks=[{\n        \"datastore_id\": \"local-lvm\",\n        \"file_format\": \"qcow2\",\n        \"size\": 20,\n    }],\n    network_devices=[{\n        \"bridge\": \"vmbr0\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ubuntuIso = ProxmoxVE.GetFile.Invoke(new()\n    {\n        NodeName = \"pve\",\n        DatastoreId = \"local\",\n        ContentType = \"iso\",\n        FileName = \"ubuntu-22.04.3-live-server-amd64.iso\",\n    });\n\n    var ubuntuContainerTemplate = ProxmoxVE.GetFile.Invoke(new()\n    {\n        NodeName = \"pve\",\n        DatastoreId = \"local\",\n        ContentType = \"vztmpl\",\n        FileName = \"ubuntu-22.04-standard_22.04-1_amd64.tar.zst\",\n    });\n\n    var cloudInitSnippet = ProxmoxVE.GetFile.Invoke(new()\n    {\n        NodeName = \"pve\",\n        DatastoreId = \"local\",\n        ContentType = \"snippets\",\n        FileName = \"cloud-init-config.yaml\",\n    });\n\n    var importedFile = ProxmoxVE.GetFile.Invoke(new()\n    {\n        NodeName = \"pve\",\n        DatastoreId = \"local\",\n        ContentType = \"import\",\n        FileName = \"imported-config.yaml\",\n    });\n\n    var example = new ProxmoxVE.VM.VirtualMachine(\"example\", new()\n    {\n        NodeName = \"pve\",\n        VmId = 100,\n        Cdrom = new ProxmoxVE.VM.Inputs.VirtualMachineCdromArgs\n        {\n            FileId = ubuntuIso.Apply(getFileResult =\u003e getFileResult.Id),\n        },\n        Cpu = new ProxmoxVE.VM.Inputs.VirtualMachineCpuArgs\n        {\n            Cores = 2,\n        },\n        Memory = new ProxmoxVE.VM.Inputs.VirtualMachineMemoryArgs\n        {\n            Dedicated = 2048,\n        },\n        Disks = new[]\n        {\n            new ProxmoxVE.VM.Inputs.VirtualMachineDiskArgs\n            {\n                DatastoreId = \"local-lvm\",\n                FileFormat = \"qcow2\",\n                Size = 20,\n            },\n        },\n        NetworkDevices = new[]\n        {\n            new ProxmoxVE.VM.Inputs.VirtualMachineNetworkDeviceArgs\n            {\n                Bridge = \"vmbr0\",\n            },\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"ubuntuIsoId\"] = ubuntuIso.Apply(getFileResult =\u003e getFileResult.Id),\n        [\"ubuntuIsoSize\"] = ubuntuIso.Apply(getFileResult =\u003e getFileResult.FileSize),\n        [\"containerTemplateFormat\"] = ubuntuContainerTemplate.Apply(getFileResult =\u003e getFileResult.FileFormat),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve/vm\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tubuntuIso, err := proxmoxve.GetFile(ctx, \u0026proxmoxve.GetFileArgs{\n\t\t\tNodeName:    \"pve\",\n\t\t\tDatastoreId: \"local\",\n\t\t\tContentType: \"iso\",\n\t\t\tFileName:    \"ubuntu-22.04.3-live-server-amd64.iso\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tubuntuContainerTemplate, err := proxmoxve.GetFile(ctx, \u0026proxmoxve.GetFileArgs{\n\t\t\tNodeName:    \"pve\",\n\t\t\tDatastoreId: \"local\",\n\t\t\tContentType: \"vztmpl\",\n\t\t\tFileName:    \"ubuntu-22.04-standard_22.04-1_amd64.tar.zst\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = proxmoxve.GetFile(ctx, \u0026proxmoxve.GetFileArgs{\n\t\t\tNodeName:    \"pve\",\n\t\t\tDatastoreId: \"local\",\n\t\t\tContentType: \"snippets\",\n\t\t\tFileName:    \"cloud-init-config.yaml\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = proxmoxve.GetFile(ctx, \u0026proxmoxve.GetFileArgs{\n\t\t\tNodeName:    \"pve\",\n\t\t\tDatastoreId: \"local\",\n\t\t\tContentType: \"import\",\n\t\t\tFileName:    \"imported-config.yaml\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"ubuntuIsoId\", ubuntuIso.Id)\n\t\tctx.Export(\"ubuntuIsoSize\", ubuntuIso.FileSize)\n\t\tctx.Export(\"containerTemplateFormat\", ubuntuContainerTemplate.FileFormat)\n\t\t_, err = vm.NewVirtualMachine(ctx, \"example\", \u0026vm.VirtualMachineArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tVmId:     pulumi.Int(100),\n\t\t\tCdrom: \u0026vm.VirtualMachineCdromArgs{\n\t\t\t\tFileId: pulumi.String(ubuntuIso.Id),\n\t\t\t},\n\t\t\tCpu: \u0026vm.VirtualMachineCpuArgs{\n\t\t\t\tCores: pulumi.Int(2),\n\t\t\t},\n\t\t\tMemory: \u0026vm.VirtualMachineMemoryArgs{\n\t\t\t\tDedicated: pulumi.Int(2048),\n\t\t\t},\n\t\t\tDisks: vm.VirtualMachineDiskArray{\n\t\t\t\t\u0026vm.VirtualMachineDiskArgs{\n\t\t\t\t\tDatastoreId: pulumi.String(\"local-lvm\"),\n\t\t\t\t\tFileFormat:  pulumi.String(\"qcow2\"),\n\t\t\t\t\tSize:        pulumi.Int(20),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkDevices: vm.VirtualMachineNetworkDeviceArray{\n\t\t\t\t\u0026vm.VirtualMachineNetworkDeviceArgs{\n\t\t\t\t\tBridge: pulumi.String(\"vmbr0\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.ProxmoxveFunctions;\nimport com.pulumi.proxmoxve.inputs.GetFileArgs;\nimport io.muehlbachler.pulumi.proxmoxve.VM.VirtualMachine;\nimport io.muehlbachler.pulumi.proxmoxve.VM.VirtualMachineArgs;\nimport com.pulumi.proxmoxve.VM.inputs.VirtualMachineCdromArgs;\nimport com.pulumi.proxmoxve.VM.inputs.VirtualMachineCpuArgs;\nimport com.pulumi.proxmoxve.VM.inputs.VirtualMachineMemoryArgs;\nimport com.pulumi.proxmoxve.VM.inputs.VirtualMachineDiskArgs;\nimport com.pulumi.proxmoxve.VM.inputs.VirtualMachineNetworkDeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var ubuntuIso = ProxmoxveFunctions.getFile(GetFileArgs.builder()\n            .nodeName(\"pve\")\n            .datastoreId(\"local\")\n            .contentType(\"iso\")\n            .fileName(\"ubuntu-22.04.3-live-server-amd64.iso\")\n            .build());\n\n        final var ubuntuContainerTemplate = ProxmoxveFunctions.getFile(GetFileArgs.builder()\n            .nodeName(\"pve\")\n            .datastoreId(\"local\")\n            .contentType(\"vztmpl\")\n            .fileName(\"ubuntu-22.04-standard_22.04-1_amd64.tar.zst\")\n            .build());\n\n        final var cloudInitSnippet = ProxmoxveFunctions.getFile(GetFileArgs.builder()\n            .nodeName(\"pve\")\n            .datastoreId(\"local\")\n            .contentType(\"snippets\")\n            .fileName(\"cloud-init-config.yaml\")\n            .build());\n\n        final var importedFile = ProxmoxveFunctions.getFile(GetFileArgs.builder()\n            .nodeName(\"pve\")\n            .datastoreId(\"local\")\n            .contentType(\"import\")\n            .fileName(\"imported-config.yaml\")\n            .build());\n\n        ctx.export(\"ubuntuIsoId\", ubuntuIso.id());\n        ctx.export(\"ubuntuIsoSize\", ubuntuIso.fileSize());\n        ctx.export(\"containerTemplateFormat\", ubuntuContainerTemplate.fileFormat());\n        var example = new VirtualMachine(\"example\", VirtualMachineArgs.builder()\n            .nodeName(\"pve\")\n            .vmId(100)\n            .cdrom(VirtualMachineCdromArgs.builder()\n                .fileId(ubuntuIso.id())\n                .build())\n            .cpu(VirtualMachineCpuArgs.builder()\n                .cores(2)\n                .build())\n            .memory(VirtualMachineMemoryArgs.builder()\n                .dedicated(2048)\n                .build())\n            .disks(VirtualMachineDiskArgs.builder()\n                .datastoreId(\"local-lvm\")\n                .fileFormat(\"qcow2\")\n                .size(20)\n                .build())\n            .networkDevices(VirtualMachineNetworkDeviceArgs.builder()\n                .bridge(\"vmbr0\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:VM:VirtualMachine\n    properties:\n      nodeName: pve\n      vmId: 100\n      cdrom:\n        fileId: ${ubuntuIso.id}\n      cpu:\n        cores: 2\n      memory:\n        dedicated: 2048\n      disks:\n        - datastoreId: local-lvm\n          fileFormat: qcow2\n          size: 20\n      networkDevices:\n        - bridge: vmbr0\nvariables:\n  ubuntuIso:\n    fn::invoke:\n      function: proxmoxve:getFile\n      arguments:\n        nodeName: pve\n        datastoreId: local\n        contentType: iso\n        fileName: ubuntu-22.04.3-live-server-amd64.iso\n  ubuntuContainerTemplate:\n    fn::invoke:\n      function: proxmoxve:getFile\n      arguments:\n        nodeName: pve\n        datastoreId: local\n        contentType: vztmpl\n        fileName: ubuntu-22.04-standard_22.04-1_amd64.tar.zst\n  cloudInitSnippet:\n    fn::invoke:\n      function: proxmoxve:getFile\n      arguments:\n        nodeName: pve\n        datastoreId: local\n        contentType: snippets\n        fileName: cloud-init-config.yaml\n  importedFile:\n    fn::invoke:\n      function: proxmoxve:getFile\n      arguments:\n        nodeName: pve\n        datastoreId: local\n        contentType: import\n        fileName: imported-config.yaml\noutputs:\n  ubuntuIsoId: ${ubuntuIso.id}\n  ubuntuIsoSize: ${ubuntuIso.fileSize}\n  containerTemplateFormat: ${ubuntuContainerTemplate.fileFormat}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getFile.\n","properties":{"contentType":{"type":"string","description":"The content type of the file.\n"},"datastoreId":{"type":"string","description":"The identifier of the datastore.\n"},"fileName":{"type":"string","description":"The name of the file.\n"},"nodeName":{"type":"string","description":"The name of the node.\n"}},"type":"object","required":["contentType","datastoreId","fileName","nodeName"]},"outputs":{"description":"A collection of values returned by getFile.\n","properties":{"contentType":{"description":"The content type of the file.\n","type":"string"},"datastoreId":{"description":"The identifier of the datastore.\n","type":"string"},"fileFormat":{"description":"The format of the file.\n","type":"string"},"fileName":{"description":"The name of the file.\n","type":"string"},"fileSize":{"description":"The size of the file in bytes.\n","type":"integer"},"id":{"description":"The unique identifier of the file (volume ID).\n","type":"string"},"nodeName":{"description":"The name of the node.\n","type":"string"},"vmid":{"description":"The VM ID associated with the file (if applicable).\n","type":"integer"}},"required":["contentType","datastoreId","fileFormat","fileName","fileSize","id","nodeName","vmid"],"type":"object"}},"proxmoxve:index/getNode:getNode":{"description":"Retrieves information about a specific Proxmox VE node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = proxmoxve.getNode({\n    nodeName: \"pve\",\n});\nexport const dataProxmoxVirtualEnvironmentNode = {\n    cpuCores: example.then(example =\u003e example.cpuCores),\n    cpuCount: example.then(example =\u003e example.cpuCount),\n    cpuSockets: example.then(example =\u003e example.cpuSockets),\n    cpuModel: example.then(example =\u003e example.cpuModel),\n    memoryTotal: example.then(example =\u003e example.memoryTotal),\n    uptime: example.then(example =\u003e example.uptime),\n};\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.get_node(node_name=\"pve\")\npulumi.export(\"dataProxmoxVirtualEnvironmentNode\", {\n    \"cpuCores\": example.cpu_cores,\n    \"cpuCount\": example.cpu_count,\n    \"cpuSockets\": example.cpu_sockets,\n    \"cpuModel\": example.cpu_model,\n    \"memoryTotal\": example.memory_total,\n    \"uptime\": example.uptime,\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = ProxmoxVE.GetNode.Invoke(new()\n    {\n        NodeName = \"pve\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentNode\"] = \n        {\n            { \"cpuCores\", example.Apply(getNodeResult =\u003e getNodeResult.CpuCores) },\n            { \"cpuCount\", example.Apply(getNodeResult =\u003e getNodeResult.CpuCount) },\n            { \"cpuSockets\", example.Apply(getNodeResult =\u003e getNodeResult.CpuSockets) },\n            { \"cpuModel\", example.Apply(getNodeResult =\u003e getNodeResult.CpuModel) },\n            { \"memoryTotal\", example.Apply(getNodeResult =\u003e getNodeResult.MemoryTotal) },\n            { \"uptime\", example.Apply(getNodeResult =\u003e getNodeResult.Uptime) },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v7/go/proxmoxve\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := proxmoxve.GetNode(ctx, \u0026proxmoxve.GetNodeArgs{\n\t\t\tNodeName: \"pve\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentNode\", pulumi.Map{\n\t\t\t\"cpuCores\":    example.CpuCores,\n\t\t\t\"cpuCount\":    example.CpuCount,\n\t\t\t\"cpuSockets\":  example.CpuSockets,\n\t\t\t\"cpuModel\":    example.CpuModel,\n\t\t\t\"memoryTotal\": example.MemoryTotal,\n\t\t\t\"uptime\":      example.Uptime,\n\t\t})\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.ProxmoxveFunctions;\nimport com.pulumi.proxmoxve.inputs.GetNodeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ProxmoxveFunctions.getNode(GetNodeArgs.builder()\n            .nodeName(\"pve\")\n            .build());\n\n        ctx.export(\"dataProxmoxVirtualEnvironmentNode\", Map.ofEntries(\n            Map.entry(\"cpuCores\", example.cpuCores()),\n            Map.entry(\"cpuCount\", example.cpuCount()),\n            Map.entry(\"cpuSockets\", example.cpuSockets()),\n            Map.entry(\"cpuModel\", example.cpuModel()),\n            Map.entry(\"memoryTotal\", example.memoryTotal()),\n            Map.entry(\"uptime\", example.uptime())\n        ));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: proxmoxve:getNode\n      arguments:\n        nodeName: pve\noutputs:\n  dataProxmoxVirtualEnvironmentNode:\n    cpuCores: ${example.cpuCores}\n    cpuCount: ${example.cpuCount}\n    cpuSockets: ${example.cpuSockets}\n    cpuModel: ${example.cpuModel}\n    memoryTotal: ${example.memoryTotal}\n    uptime: ${example.uptime}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getNode.\n","properties":{"nodeName":{"type":"string","description":"The node name\n"}},"type":"object","required":["nodeName"]},"outputs":{"description":"A collection of values returned by getNode.\n","properties":{"cpuCores":{"description":"The total number of physical CPU cores on the node\n","type":"integer"},"cpuCount":{"description":"The total number of logical CPUs on the node (sockets * cores * threads)\n","type":"integer"},"cpuModel":{"description":"The CPU model on the node\n","type":"string"},"cpuSockets":{"description":"The number of CPU sockets on the node\n","type":"integer"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"memoryAvailable":{"description":"The available memory in bytes on the node\n","type":"integer"},"memoryTotal":{"description":"The total memory in bytes on the node\n","type":"integer"},"memoryUsed":{"description":"The used memory in bytes on the node\n","type":"integer"},"nodeName":{"description":"The node name\n","type":"string"},"uptime":{"description":"The uptime in seconds on the node\n","type":"integer"}},"required":["cpuCores","cpuCount","cpuModel","cpuSockets","memoryAvailable","memoryTotal","memoryUsed","nodeName","uptime","id"],"type":"object"}},"proxmoxve:index/getVm2:getVm2":{"description":"!\u003e **DO NOT USE**\nThis is an experimental implementation of a Proxmox VM datasource using Plugin Framework.\n","inputs":{"description":"A collection of arguments for invoking getVm2.\n","properties":{"cpu":{"$ref":"#/types/proxmoxve:index/getVm2Cpu:getVm2Cpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description of the VM.\n"},"id":{"type":"integer","description":"The unique identifier of the VM in the Proxmox cluster.\n"},"name":{"type":"string","description":"The name of the VM.\n"},"nodeName":{"type":"string","description":"The name of the node where the VM is provisioned.\n"},"rng":{"$ref":"#/types/proxmoxve:index/getVm2Rng:getVm2Rng","description":"The RNG (Random Number Generator) configuration.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags assigned to the VM.\n"},"template":{"type":"boolean","description":"Whether the VM is a template.\n"},"timeouts":{"$ref":"#/types/proxmoxve:index/getVm2Timeouts:getVm2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:index/getVm2Vga:getVm2Vga","description":"The VGA configuration.\n"}},"type":"object","required":["id","nodeName"]},"outputs":{"description":"A collection of values returned by getVm2.\n","properties":{"cpu":{"$ref":"#/types/proxmoxve:index/getVm2Cpu:getVm2Cpu","description":"The CPU configuration.\n"},"description":{"description":"The description of the VM.\n","type":"string"},"id":{"description":"The unique identifier of the VM in the Proxmox cluster.\n","type":"integer"},"name":{"description":"The name of the VM.\n","type":"string"},"nodeName":{"description":"The name of the node where the VM is provisioned.\n","type":"string"},"rng":{"$ref":"#/types/proxmoxve:index/getVm2Rng:getVm2Rng","description":"The RNG (Random Number Generator) configuration.\n"},"tags":{"description":"The tags assigned to the VM.\n","items":{"type":"string"},"type":"array"},"template":{"description":"Whether the VM is a template.\n","type":"boolean"},"timeouts":{"$ref":"#/types/proxmoxve:index/getVm2Timeouts:getVm2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:index/getVm2Vga:getVm2Vga","description":"The VGA configuration.\n"}},"required":["cpu","id","nodeName","rng","tags","vga"],"type":"object"}},"pulumi:providers:proxmoxve/terraformConfig":{"description":"This function returns a Terraform config object with terraform-namecased keys,to be used with the Terraform Module Provider.","inputs":{"properties":{"__self__":{"type":"ref","$ref":"#/provider"}},"type":"pulumi:providers:proxmoxve/terraformConfig","required":["__self__"]},"outputs":{"properties":{"result":{"additionalProperties":{"$ref":"pulumi.json#/Any"},"type":"object"}},"required":["result"],"type":"object"}}}}