{
    "name": "proxmoxve",
    "displayName": "Proxmox Virtual Environment (Proxmox VE)",
    "description": "A Pulumi package for creating and managing Proxmox Virtual Environment cloud resources.",
    "keywords": [
        "proxmox",
        "proxmoxve",
        "category/infrastructure"
    ],
    "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",
            "respectSchemaVersion": true
        },
        "go": {
            "importBasePath": "github.com/muhlba91/pulumi-proxmoxve/sdk/v8/go/proxmoxve",
            "generateResourceContainerTypes": true,
            "generateExtraInputTypes": true,
            "respectSchemaVersion": true
        },
        "java": {
            "basePackage": "io.muehlbachler.pulumi",
            "buildFiles": "gradle",
            "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"
            },
            "compatibility": "tfbridge20",
            "disableUnionOutputTypes": true,
            "respectSchemaVersion": 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`apiToken`\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/CertificateLegacyDomain:CertificateLegacyDomain": {
            "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/getAccountLegacyAccount:getAccountLegacyAccount": {
            "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/getPluginsLegacyPlugin:getPluginsLegacyPlugin": {
            "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: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:backup/JobFleecing:JobFleecing": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Whether fleecing is enabled.\n"
                },
                "storage": {
                    "type": "string",
                    "description": "The storage identifier for fleecing.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "enabled"
                    ]
                }
            }
        },
        "proxmoxve:backup/JobPerformance:JobPerformance": {
            "properties": {
                "maxWorkers": {
                    "type": "integer",
                    "description": "Maximum number of workers for parallel backup.\n"
                },
                "pbsEntriesMax": {
                    "type": "integer",
                    "description": "Maximum number of entries for PBS catalog.\n"
                }
            },
            "type": "object"
        },
        "proxmoxve:backup/getJobsJob:getJobsJob": {
            "properties": {
                "all": {
                    "type": "boolean",
                    "description": "Indicates whether all VMs and CTs are backed up.\n"
                },
                "compress": {
                    "type": "string",
                    "description": "Compression algorithm used for the backup.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Indicates whether the backup job is enabled.\n"
                },
                "id": {
                    "type": "string",
                    "description": "Unique identifier of the backup job.\n"
                },
                "mailnotification": {
                    "type": "string",
                    "description": "When to send email notifications (always or failure).\n"
                },
                "mailtos": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of email addresses for notifications.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "Backup mode (e.g. snapshot, suspend, stop).\n"
                },
                "node": {
                    "type": "string",
                    "description": "Node on which the backup job runs.\n"
                },
                "notesTemplate": {
                    "type": "string",
                    "description": "Template for backup notes.\n"
                },
                "pool": {
                    "type": "string",
                    "description": "Pool whose members are backed up.\n"
                },
                "protected": {
                    "type": "boolean",
                    "description": "Indicates whether backups created by this job are protected from pruning.\n"
                },
                "pruneBackups": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Retention options as a map of keep policies (e.g. keep-last = \"3\", keep-weekly = \"2\").\n"
                },
                "schedule": {
                    "type": "string",
                    "description": "Backup schedule in systemd calendar format.\n"
                },
                "storage": {
                    "type": "string",
                    "description": "Target storage for the backup.\n"
                },
                "vmids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of VM/CT IDs included in the backup job.\n"
                }
            },
            "type": "object",
            "required": [
                "all",
                "compress",
                "enabled",
                "id",
                "mailnotification",
                "mailtos",
                "mode",
                "node",
                "notesTemplate",
                "pool",
                "protected",
                "pruneBackups",
                "schedule",
                "storage",
                "vmids"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "proxmoxve:cloned/VmCdrom:VmCdrom": {
            "properties": {
                "fileId": {
                    "type": "string",
                    "description": "The file ID of the CD-ROM, or `cdrom|none`. 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 (i.e. empty CD-ROM drive — \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 is PVE's literal \"no media inserted\" storage path). 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 unplugged, or a storage path like `local:iso/debian.iso` to insert an image.\n"
                }
            },
            "type": "object"
        },
        "proxmoxve:cloned/VmClone:VmClone": {
            "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:cloned/VmCpu:VmCpu": {
            "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 (PVE 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 when unset).\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"
                },
                "limit": {
                    "type": "number",
                    "description": "Limit of CPU usage. \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 means no limit (PVE default).\n"
                },
                "numa": {
                    "type": "boolean",
                    "description": "Enable NUMA topology emulation. Matches the PVE Processors → **Enable NUMA** checkbox.\n"
                },
                "sockets": {
                    "type": "integer",
                    "description": "The number of CPU sockets (PVE 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 when unset).\n"
                },
                "type": {
                    "type": "string",
                    "description": "Emulated CPU type, it's recommended to use `x86-64-v2-AES` or higher. See [the PVE admin guide](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) for the full list of supported types.\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. On cgroup v2 \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 is a valid value meaning disable CPU share weighting.\n"
                },
                "vcpus": {
                    "type": "integer",
                    "description": "Number of vCPUs started with the VM, bounded by `cores * sockets`. Matches the PVE Processors → **VCPUs** field. Leave unset to start with `cores * sockets` vCPUs. Requires PVE hotplug feature enabled to change at runtime.\n"
                }
            },
            "type": "object"
        },
        "proxmoxve:cloned/VmDelete:VmDelete": {
            "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:cloned/VmDisk:VmDisk": {
            "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`sizeGb`\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:cloned/VmLegacyCdrom:VmLegacyCdrom": {
            "properties": {
                "fileId": {
                    "type": "string",
                    "description": "The file ID of the CD-ROM, or `cdrom|none`. 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 (i.e. empty CD-ROM drive — \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 is PVE's literal \"no media inserted\" storage path). 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 unplugged, or a storage path like `local:iso/debian.iso` to insert an image.\n"
                }
            },
            "type": "object"
        },
        "proxmoxve:cloned/VmLegacyClone:VmLegacyClone": {
            "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:cloned/VmLegacyCpu:VmLegacyCpu": {
            "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 (PVE 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 when unset).\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"
                },
                "limit": {
                    "type": "number",
                    "description": "Limit of CPU usage. \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 means no limit (PVE default).\n"
                },
                "numa": {
                    "type": "boolean",
                    "description": "Enable NUMA topology emulation. Matches the PVE Processors → **Enable NUMA** checkbox.\n"
                },
                "sockets": {
                    "type": "integer",
                    "description": "The number of CPU sockets (PVE 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 when unset).\n"
                },
                "type": {
                    "type": "string",
                    "description": "Emulated CPU type, it's recommended to use `x86-64-v2-AES` or higher. See [the PVE admin guide](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) for the full list of supported types.\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. On cgroup v2 \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 is a valid value meaning disable CPU share weighting.\n"
                },
                "vcpus": {
                    "type": "integer",
                    "description": "Number of vCPUs started with the VM, bounded by `cores * sockets`. Matches the PVE Processors → **VCPUs** field. Leave unset to start with `cores * sockets` vCPUs. Requires PVE hotplug feature enabled to change at runtime.\n"
                }
            },
            "type": "object"
        },
        "proxmoxve:cloned/VmLegacyDelete:VmLegacyDelete": {
            "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:cloned/VmLegacyDisk:VmLegacyDisk": {
            "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`sizeGb`\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:cloned/VmLegacyMemory:VmLegacyMemory": {
            "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.\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.\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.\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 PVE's implicit \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 when unset.\n"
                }
            },
            "type": "object"
        },
        "proxmoxve:cloned/VmLegacyNetwork:VmLegacyNetwork": {
            "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:cloned/VmLegacyRng:VmLegacyRng": {
            "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 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:cloned/VmLegacyTimeouts:VmLegacyTimeouts": {
            "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:cloned/VmLegacyVga:VmLegacyVga": {
            "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:cloned/VmMemory:VmMemory": {
            "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.\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.\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.\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 PVE's implicit \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 when unset.\n"
                }
            },
            "type": "object"
        },
        "proxmoxve:cloned/VmNetwork:VmNetwork": {
            "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:cloned/VmRng:VmRng": {
            "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 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:cloned/VmTimeouts:VmTimeouts": {
            "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:cloned/VmVga:VmVga": {
            "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:cluster/FirewallLegacyLogRatelimit:FirewallLegacyLogRatelimit": {
            "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:cluster/OptionsLegacyNextId:OptionsLegacyNextId": {
            "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/OptionsLegacyNotify:OptionsLegacyNotify": {
            "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: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:cluster/firewall/security/GroupLegacyRule:GroupLegacyRule": {
            "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: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`privateKey`\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"
                },
                "nodeAddressSource": {
                    "type": "string",
                    "description": "The method used to resolve node IP addresses for SSH connections. Set to \u003cspan pulumi-lang-nodejs=\"`dns`\" pulumi-lang-dotnet=\"`Dns`\" pulumi-lang-go=\"`dns`\" pulumi-lang-python=\"`dns`\" pulumi-lang-yaml=\"`dns`\" pulumi-lang-java=\"`dns`\"\u003e`dns`\u003c/span\u003e to skip the Proxmox API-based resolution and use local DNS instead. DNS resolution prefers IPv4 but falls back to IPv6 if no IPv4 addresses are available. Useful in multi-subnet environments where the API may return an inaccessible IP. Defaults to \u003cspan pulumi-lang-nodejs=\"`api`\" pulumi-lang-dotnet=\"`Api`\" pulumi-lang-go=\"`api`\" pulumi-lang-python=\"`api`\" pulumi-lang-yaml=\"`api`\" pulumi-lang-java=\"`api`\"\u003e`api`\u003c/span\u003e.\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 when using username/password authentication. Default has no effect when using API token authentication, as there is no password to inherit. Can also be sourced from `PROXMOX_VE_SSH_PASSWORD`.\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:firewall/IpsetLegacyCidr:IpsetLegacyCidr": {
            "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:firewall/RulesLegacyRule:RulesLegacyRule": {
            "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: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/getMappingsLegacyCheck:getMappingsLegacyCheck": {
            "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/getPciDevice:getPciDevice": {
            "properties": {
                "class": {
                    "type": "string",
                    "description": "The PCI class code (hex, e.g. \u003cspan pulumi-lang-nodejs=\"`0x030000`\" pulumi-lang-dotnet=\"`0x030000`\" pulumi-lang-go=\"`0x030000`\" pulumi-lang-python=\"`0x030000`\" pulumi-lang-yaml=\"`0x030000`\" pulumi-lang-java=\"`0x030000`\"\u003e`0x030000`\u003c/span\u003e).\n"
                },
                "device": {
                    "type": "string",
                    "description": "The PCI device ID (hex, e.g. \u003cspan pulumi-lang-nodejs=\"`0x5916`\" pulumi-lang-dotnet=\"`0x5916`\" pulumi-lang-go=\"`0x5916`\" pulumi-lang-python=\"`0x5916`\" pulumi-lang-yaml=\"`0x5916`\" pulumi-lang-java=\"`0x5916`\"\u003e`0x5916`\u003c/span\u003e).\n"
                },
                "deviceName": {
                    "type": "string",
                    "description": "The human-readable device name.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The PCI address in `domain:bus:device.function` format (e.g. `0000:00:02.0`).\n"
                },
                "iommuGroup": {
                    "type": "integer",
                    "description": "The IOMMU group number. `-1` indicates that the device is not in an IOMMU group.\n"
                },
                "mdev": {
                    "type": "boolean",
                    "description": "Whether the device supports mediated devices (vGPU).\n"
                },
                "subsystemDevice": {
                    "type": "string",
                    "description": "The PCI subsystem device ID (hex).\n"
                },
                "subsystemDeviceName": {
                    "type": "string",
                    "description": "The human-readable subsystem device name.\n"
                },
                "subsystemVendor": {
                    "type": "string",
                    "description": "The PCI subsystem vendor ID (hex).\n"
                },
                "subsystemVendorName": {
                    "type": "string",
                    "description": "The human-readable subsystem vendor name.\n"
                },
                "vendor": {
                    "type": "string",
                    "description": "The PCI vendor ID (hex, e.g. \u003cspan pulumi-lang-nodejs=\"`0x8086`\" pulumi-lang-dotnet=\"`0x8086`\" pulumi-lang-go=\"`0x8086`\" pulumi-lang-python=\"`0x8086`\" pulumi-lang-yaml=\"`0x8086`\" pulumi-lang-java=\"`0x8086`\"\u003e`0x8086`\u003c/span\u003e).\n"
                },
                "vendorName": {
                    "type": "string",
                    "description": "The human-readable vendor name (e.g. `Intel Corporation`).\n"
                }
            },
            "type": "object",
            "required": [
                "class",
                "device",
                "deviceName",
                "id",
                "iommuGroup",
                "mdev",
                "subsystemDevice",
                "subsystemDeviceName",
                "subsystemVendor",
                "subsystemVendorName",
                "vendor",
                "vendorName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "proxmoxve:hardware/getPciFilters:getPciFilters": {
            "properties": {
                "class": {
                    "type": "string",
                    "description": "Filter by PCI class code prefix (e.g. \u003cspan pulumi-lang-nodejs=\"`03`\" pulumi-lang-dotnet=\"`03`\" pulumi-lang-go=\"`03`\" pulumi-lang-python=\"`03`\" pulumi-lang-yaml=\"`03`\" pulumi-lang-java=\"`03`\"\u003e`03`\u003c/span\u003e to match all display controllers). The \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 prefix in class codes is stripped before matching.\n"
                },
                "deviceId": {
                    "type": "string",
                    "description": "Filter by device ID prefix. The \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 prefix in device IDs is stripped before matching.\n"
                },
                "id": {
                    "type": "string",
                    "description": "Filter by PCI address prefix (e.g. `0000:01` to match all devices on bus 01).\n"
                },
                "vendorId": {
                    "type": "string",
                    "description": "Filter by vendor ID prefix (e.g. \u003cspan pulumi-lang-nodejs=\"`8086`\" pulumi-lang-dotnet=\"`8086`\" pulumi-lang-go=\"`8086`\" pulumi-lang-python=\"`8086`\" pulumi-lang-yaml=\"`8086`\" pulumi-lang-java=\"`8086`\"\u003e`8086`\u003c/span\u003e for Intel devices). The \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 prefix in vendor IDs is stripped before matching.\n"
                }
            },
            "type": "object"
        },
        "proxmoxve:hardware/mapping/DirLegacyMap:DirLegacyMap": {
            "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/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/PciLegacyMap:PciLegacyMap": {
            "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. While not mandatory for the Proxmox VE API call, omitting this attribute will result in an incomplete PCI hardware mapping.\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. While not mandatory for the Proxmox VE API call, omitting this attribute will result in an incomplete PCI hardware mapping.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "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. While not mandatory for the Proxmox VE API call, omitting this attribute will result in an incomplete PCI hardware mapping.\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. While not mandatory for the Proxmox VE API call, omitting this attribute will result in an incomplete PCI hardware mapping.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "node",
                "path"
            ]
        },
        "proxmoxve:hardware/mapping/UsbLegacyMap:UsbLegacyMap": {
            "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 USB hardware mappings, this is optional and indicates that the device is mapped via its device ID rather than ports.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "node"
            ]
        },
        "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 USB hardware mappings, this is optional and indicates that the device is mapped via its device ID rather than ports.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "node"
            ]
        },
        "proxmoxve:hardware/mapping/getDirLegacyMap:getDirLegacyMap": {
            "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/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/getPciLegacyMap:getPciLegacyMap": {
            "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. While not mandatory for the Proxmox VE API call, omitting this attribute will result in an incomplete PCI hardware mapping.\n"
                }
            },
            "type": "object",
            "required": [
                "comment",
                "id",
                "iommuGroup",
                "node",
                "path",
                "subsystemId"
            ],
            "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. While not mandatory for the Proxmox VE API call, omitting this attribute will result in an incomplete PCI hardware mapping.\n"
                }
            },
            "type": "object",
            "required": [
                "comment",
                "id",
                "iommuGroup",
                "node",
                "path",
                "subsystemId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "proxmoxve:hardware/mapping/getUsbLegacyMap:getUsbLegacyMap": {
            "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: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:index/ContainerLegacyClone:ContainerLegacyClone": {
            "properties": {
                "datastoreId": {
                    "type": "string",
                    "description": "The identifier for the target datastore.\n",
                    "willReplaceOnChanges": true
                },
                "full": {
                    "type": "boolean",
                    "description": "When cloning, create a full copy of all disks. Set\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 to create a linked clone. Linked clones require the source\ncontainer to be a template on storage that supports copy-on-write\n(e.g. Ceph RBD) (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`nodeName`\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:index/ContainerLegacyConsole:ContainerLegacyConsole": {
            "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:index/ContainerLegacyCpu:ContainerLegacyCpu": {
            "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"
                },
                "limit": {
                    "type": "number",
                    "description": "Limit of CPU usage. Value \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 indicates no limit (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"
                },
                "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",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "units"
                    ]
                }
            }
        },
        "proxmoxve:index/ContainerLegacyDevicePassthrough:ContainerLegacyDevicePassthrough": {
            "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:index/ContainerLegacyDisk:ContainerLegacyDisk": {
            "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`datastoreId`\u003c/span\u003e to be set.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "pathInDatastore"
                    ]
                }
            }
        },
        "proxmoxve:index/ContainerLegacyFeatures:ContainerLegacyFeatures": {
            "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:index/ContainerLegacyIdmap:ContainerLegacyIdmap": {
            "properties": {
                "containerId": {
                    "type": "integer",
                    "description": "Starting ID in the container namespace.\n"
                },
                "hostId": {
                    "type": "integer",
                    "description": "Starting ID in the host namespace.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "Number of IDs to map (must be at least \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": "Mapping type (\u003cspan pulumi-lang-nodejs=\"`uid`\" pulumi-lang-dotnet=\"`Uid`\" pulumi-lang-go=\"`uid`\" pulumi-lang-python=\"`uid`\" pulumi-lang-yaml=\"`uid`\" pulumi-lang-java=\"`uid`\"\u003e`uid`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`gid`\" pulumi-lang-dotnet=\"`Gid`\" pulumi-lang-go=\"`gid`\" pulumi-lang-python=\"`gid`\" pulumi-lang-yaml=\"`gid`\" pulumi-lang-java=\"`gid`\"\u003e`gid`\u003c/span\u003e).\n"
                }
            },
            "type": "object",
            "required": [
                "containerId",
                "hostId",
                "size",
                "type"
            ]
        },
        "proxmoxve:index/ContainerLegacyInitialization:ContainerLegacyInitialization": {
            "properties": {
                "dns": {
                    "$ref": "#/types/proxmoxve:index/ContainerLegacyInitializationDns:ContainerLegacyInitializationDns",
                    "description": "The DNS configuration.\n"
                },
                "entrypoint": {
                    "type": "string",
                    "description": "Command to run as init, optionally with arguments. It may start with an absolute path, relative path, or a binary in `$PATH`.\n"
                },
                "hostname": {
                    "type": "string",
                    "description": "The hostname. Must be a valid DNS name.\n"
                },
                "ipConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/proxmoxve:index/ContainerLegacyInitializationIpConfig:ContainerLegacyInitializationIpConfig"
                    },
                    "description": "The IP configuration (one block per network\ndevice).\n"
                },
                "userAccount": {
                    "$ref": "#/types/proxmoxve:index/ContainerLegacyInitializationUserAccount:ContainerLegacyInitializationUserAccount",
                    "description": "The user account configuration.\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object"
        },
        "proxmoxve:index/ContainerLegacyInitializationDns:ContainerLegacyInitializationDns": {
            "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:index/ContainerLegacyInitializationIpConfig:ContainerLegacyInitializationIpConfig": {
            "properties": {
                "ipv4": {
                    "$ref": "#/types/proxmoxve:index/ContainerLegacyInitializationIpConfigIpv4:ContainerLegacyInitializationIpConfigIpv4",
                    "description": "The IPv4 configuration.\n"
                },
                "ipv6": {
                    "$ref": "#/types/proxmoxve:index/ContainerLegacyInitializationIpConfigIpv6:ContainerLegacyInitializationIpConfigIpv6",
                    "description": "The IPv6 configuration.\n"
                }
            },
            "type": "object"
        },
        "proxmoxve:index/ContainerLegacyInitializationIpConfigIpv4:ContainerLegacyInitializationIpConfigIpv4": {
            "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:index/ContainerLegacyInitializationIpConfigIpv6:ContainerLegacyInitializationIpConfigIpv6": {
            "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:index/ContainerLegacyInitializationUserAccount:ContainerLegacyInitializationUserAccount": {
            "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:index/ContainerLegacyMemory:ContainerLegacyMemory": {
            "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:index/ContainerLegacyMountPoint:ContainerLegacyMountPoint": {
            "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:index/ContainerLegacyNetworkInterface:ContainerLegacyNetworkInterface": {
            "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"
                },
                "hostManaged": {
                    "type": "boolean",
                    "description": "Whether the host runs DHCP on this interface's\nbehalf (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). Requires Proxmox VE 9.0+. Required for\napplication containers that do not include a DHCP client.\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:index/ContainerLegacyOperatingSystem:ContainerLegacyOperatingSystem": {
            "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.FileLegacy`\" pulumi-lang-dotnet=\"`proxmoxve.download.FileLegacy`\" pulumi-lang-go=\"`download.FileLegacy`\" pulumi-lang-python=\"`download.FileLegacy`\" pulumi-lang-yaml=\"`proxmoxve.download.FileLegacy`\" pulumi-lang-java=\"`proxmoxve.download.FileLegacy`\"\u003e`proxmoxve.download.FileLegacy`\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:index/ContainerLegacyStartup:ContainerLegacyStartup": {
            "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:index/ContainerLegacyWaitForIp:ContainerLegacyWaitForIp": {
            "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`waitForIp`\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:index/FileLegacySourceFile:FileLegacySourceFile": {
            "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:index/FileLegacySourceRaw:FileLegacySourceRaw": {
            "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:index/GroupLegacyAcl:GroupLegacyAcl": {
            "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:index/HostsLegacyEntry:HostsLegacyEntry": {
            "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/PoolLegacyMember:PoolLegacyMember": {
            "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: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`privateKey`\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"
                },
                "nodeAddressSource": {
                    "type": "string",
                    "description": "The method used to resolve node IP addresses for SSH connections. Set to \u003cspan pulumi-lang-nodejs=\"`dns`\" pulumi-lang-dotnet=\"`Dns`\" pulumi-lang-go=\"`dns`\" pulumi-lang-python=\"`dns`\" pulumi-lang-yaml=\"`dns`\" pulumi-lang-java=\"`dns`\"\u003e`dns`\u003c/span\u003e to skip the Proxmox API-based resolution and use local DNS instead. DNS resolution prefers IPv4 but falls back to IPv6 if no IPv4 addresses are available. Useful in multi-subnet environments where the API may return an inaccessible IP. Defaults to \u003cspan pulumi-lang-nodejs=\"`api`\" pulumi-lang-dotnet=\"`Api`\" pulumi-lang-go=\"`api`\" pulumi-lang-python=\"`api`\" pulumi-lang-yaml=\"`api`\" pulumi-lang-java=\"`api`\"\u003e`api`\u003c/span\u003e.\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 when using username/password authentication. Default has no effect when using API token authentication, as there is no password to inherit. Can also be sourced from `PROXMOX_VE_SSH_PASSWORD`.\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/UserLegacyAcl:UserLegacyAcl": {
            "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:index/Vm2LegacyCdrom:Vm2LegacyCdrom": {
            "properties": {
                "fileId": {
                    "type": "string",
                    "description": "The file ID of the CD-ROM, or `cdrom|none`. 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 (i.e. empty CD-ROM drive — \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 is PVE's literal \"no media inserted\" storage path). 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 unplugged, or a storage path like `local:iso/debian.iso` to insert an image.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "fileId"
                    ]
                }
            }
        },
        "proxmoxve:index/Vm2LegacyCpu:Vm2LegacyCpu": {
            "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 (PVE 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 when unset).\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"
                },
                "limit": {
                    "type": "number",
                    "description": "Limit of CPU usage. \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 means no limit (PVE default).\n"
                },
                "numa": {
                    "type": "boolean",
                    "description": "Enable NUMA topology emulation. Matches the PVE Processors → **Enable NUMA** checkbox.\n"
                },
                "sockets": {
                    "type": "integer",
                    "description": "The number of CPU sockets (PVE 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 when unset).\n"
                },
                "type": {
                    "type": "string",
                    "description": "Emulated CPU type, it's recommended to use `x86-64-v2-AES` or higher. See [the PVE admin guide](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) for the full list of supported types.\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. On cgroup v2 \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 is a valid value meaning disable CPU share weighting.\n"
                },
                "vcpus": {
                    "type": "integer",
                    "description": "Number of vCPUs started with the VM, bounded by `cores * sockets`. Matches the PVE Processors → **VCPUs** field. Leave unset to start with `cores * sockets` vCPUs. Requires PVE hotplug feature enabled to change at runtime.\n"
                }
            },
            "type": "object"
        },
        "proxmoxve:index/Vm2LegacyRng:Vm2LegacyRng": {
            "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 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:index/Vm2LegacyTimeouts:Vm2LegacyTimeouts": {
            "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:index/Vm2LegacyVga:Vm2LegacyVga": {
            "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:index/VmCdrom:VmCdrom": {
            "properties": {
                "fileId": {
                    "type": "string",
                    "description": "The file ID of the CD-ROM, or `cdrom|none`. 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 (i.e. empty CD-ROM drive — \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 is PVE's literal \"no media inserted\" storage path). 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 unplugged, or a storage path like `local:iso/debian.iso` to insert an image.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "fileId"
                    ]
                }
            }
        },
        "proxmoxve:index/VmCpu:VmCpu": {
            "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 (PVE 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 when unset).\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"
                },
                "limit": {
                    "type": "number",
                    "description": "Limit of CPU usage. \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 means no limit (PVE default).\n"
                },
                "numa": {
                    "type": "boolean",
                    "description": "Enable NUMA topology emulation. Matches the PVE Processors → **Enable NUMA** checkbox.\n"
                },
                "sockets": {
                    "type": "integer",
                    "description": "The number of CPU sockets (PVE 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 when unset).\n"
                },
                "type": {
                    "type": "string",
                    "description": "Emulated CPU type, it's recommended to use `x86-64-v2-AES` or higher. See [the PVE admin guide](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) for the full list of supported types.\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. On cgroup v2 \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 is a valid value meaning disable CPU share weighting.\n"
                },
                "vcpus": {
                    "type": "integer",
                    "description": "Number of vCPUs started with the VM, bounded by `cores * sockets`. Matches the PVE Processors → **VCPUs** field. Leave unset to start with `cores * sockets` vCPUs. Requires PVE hotplug feature enabled to change at runtime.\n"
                }
            },
            "type": "object"
        },
        "proxmoxve:index/VmLegacyAgent:VmLegacyAgent": {
            "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:index/VmLegacyAgentWaitForIp:VmLegacyAgentWaitForIp",
                    "description": "Configuration for waiting for specific IP address types when the VM starts.\n"
                }
            },
            "type": "object"
        },
        "proxmoxve:index/VmLegacyAgentWaitForIp:VmLegacyAgentWaitForIp": {
            "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`waitForIp`\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:index/VmLegacyAmdSev:VmLegacyAmdSev": {
            "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`amdSev`\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:index/VmLegacyAudioDevice:VmLegacyAudioDevice": {
            "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:index/VmLegacyCdrom:VmLegacyCdrom": {
            "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`fileId`\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`fileId`\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:index/VmLegacyClone:VmLegacyClone": {
            "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`nodeName`\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:index/VmLegacyCpu:VmLegacyCpu": {
            "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`x8664`\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": "number",
                    "description": "Limit of CPU usage, `0...128` (supports\nfractional values, e.g. `63.5`). (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:index/VmLegacyDisk:VmLegacyDisk": {
            "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`ioUring`\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.FileLegacy`\" pulumi-lang-dotnet=\"`proxmoxve.download.FileLegacy`\" pulumi-lang-go=\"`download.FileLegacy`\" pulumi-lang-python=\"`download.FileLegacy`\" pulumi-lang-yaml=\"`proxmoxve.download.FileLegacy`\" pulumi-lang-java=\"`proxmoxve.download.FileLegacy`\"\u003e`proxmoxve.download.FileLegacy`\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`importFrom`\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`fileId`\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`contentType \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`decompressionAlgorithm`\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.FileLegacy`\" pulumi-lang-dotnet=\"`proxmoxve.download.FileLegacy`\" pulumi-lang-go=\"`download.FileLegacy`\" pulumi-lang-python=\"`download.FileLegacy`\" pulumi-lang-yaml=\"`proxmoxve.download.FileLegacy`\" pulumi-lang-java=\"`proxmoxve.download.FileLegacy`\"\u003e`proxmoxve.download.FileLegacy`\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`decompressionAlgorithm`\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`importFrom`\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`fileId`\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`datastoreId`\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:index/VmLegacyDiskSpeed:VmLegacyDiskSpeed",
                    "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",
                        "size"
                    ]
                }
            }
        },
        "proxmoxve:index/VmLegacyDiskSpeed:VmLegacyDiskSpeed": {
            "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:index/VmLegacyEfiDisk:VmLegacyEfiDisk": {
            "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"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "fileFormat"
                    ]
                }
            }
        },
        "proxmoxve:index/VmLegacyHostpci:VmLegacyHostpci": {
            "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`apiToken`\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:index/VmLegacyInitialization:VmLegacyInitialization": {
            "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:index/VmLegacyInitializationDns:VmLegacyInitializationDns",
                    "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:index/VmLegacyInitializationIpConfig:VmLegacyInitializationIpConfig"
                    },
                    "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`ipConfig`\u003c/span\u003e).\n",
                    "willReplaceOnChanges": true
                },
                "type": {
                    "type": "string",
                    "description": "The cloud-init configuration format\n",
                    "willReplaceOnChanges": true
                },
                "upgrade": {
                    "type": "boolean",
                    "description": "Whether to do an automatic package upgrade after\nthe first 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).\nSetting this is only allowed for `root@pam` authenticated user.\n"
                },
                "userAccount": {
                    "$ref": "#/types/proxmoxve:index/VmLegacyInitializationUserAccount:VmLegacyInitializationUserAccount",
                    "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`userDataFileId`\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`userAccount`\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",
                        "upgrade",
                        "userDataFileId",
                        "vendorDataFileId"
                    ]
                }
            }
        },
        "proxmoxve:index/VmLegacyInitializationDns:VmLegacyInitializationDns": {
            "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:index/VmLegacyInitializationIpConfig:VmLegacyInitializationIpConfig": {
            "properties": {
                "ipv4": {
                    "$ref": "#/types/proxmoxve:index/VmLegacyInitializationIpConfigIpv4:VmLegacyInitializationIpConfigIpv4",
                    "description": "The IPv4 configuration.\n"
                },
                "ipv6": {
                    "$ref": "#/types/proxmoxve:index/VmLegacyInitializationIpConfigIpv6:VmLegacyInitializationIpConfigIpv6",
                    "description": "The IPv6 configuration.\n"
                }
            },
            "type": "object"
        },
        "proxmoxve:index/VmLegacyInitializationIpConfigIpv4:VmLegacyInitializationIpConfigIpv4": {
            "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:index/VmLegacyInitializationIpConfigIpv6:VmLegacyInitializationIpConfigIpv6": {
            "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:index/VmLegacyInitializationUserAccount:VmLegacyInitializationUserAccount": {
            "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:index/VmLegacyMemory:VmLegacyMemory": {
            "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`keepHugepages`\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:index/VmLegacyNetworkDevice:VmLegacyNetworkDevice": {
            "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). Remove the \u003cspan pulumi-lang-nodejs=\"`networkDevice`\" pulumi-lang-dotnet=\"`NetworkDevice`\" pulumi-lang-go=\"`networkDevice`\" pulumi-lang-python=\"`network_device`\" pulumi-lang-yaml=\"`networkDevice`\" pulumi-lang-java=\"`networkDevice`\"\u003e`networkDevice`\u003c/span\u003e block from your configuration instead of setting `enabled = false`.\n",
                    "deprecationMessage": "The \u003cspan pulumi-lang-nodejs=\"`enabled`\" pulumi-lang-dotnet=\"`Enabled`\" pulumi-lang-go=\"`enabled`\" pulumi-lang-python=\"`enabled`\" pulumi-lang-yaml=\"`enabled`\" pulumi-lang-java=\"`enabled`\"\u003e`enabled`\u003c/span\u003e attribute is deprecated and will be removed in a future release. Remove the \u003cspan pulumi-lang-nodejs=\"`networkDevice`\" pulumi-lang-dotnet=\"`NetworkDevice`\" pulumi-lang-go=\"`networkDevice`\" pulumi-lang-python=\"`network_device`\" pulumi-lang-yaml=\"`networkDevice`\" pulumi-lang-java=\"`networkDevice`\"\u003e`networkDevice`\u003c/span\u003e block from your configuration instead of setting `enabled = false`."
                },
                "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:index/VmLegacyNuma:VmLegacyNuma": {
            "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:index/VmLegacyOperatingSystem:VmLegacyOperatingSystem": {
            "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:index/VmLegacyRng:VmLegacyRng": {
            "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`maxBytes`\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:index/VmLegacySerialDevice:VmLegacySerialDevice": {
            "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:index/VmLegacySmbios:VmLegacySmbios": {
            "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:index/VmLegacyStartup:VmLegacyStartup": {
            "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:index/VmLegacyTpmState:VmLegacyTpmState": {
            "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:index/VmLegacyUsb:VmLegacyUsb": {
            "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:index/VmLegacyVga:VmLegacyVga": {
            "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:index/VmLegacyVirtiof:VmLegacyVirtiof": {
            "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:index/VmLegacyWatchdog:VmLegacyWatchdog": {
            "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:index/VmRng:VmRng": {
            "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 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:index/VmTimeouts:VmTimeouts": {
            "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:index/VmVga:VmVga": {
            "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:index/getContainersLegacyContainer:getContainersLegacyContainer": {
            "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/getContainersLegacyFilter:getContainersLegacyFilter": {
            "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`nodeName`\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/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"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": [
                        "id",
                        "nodeName",
                        "type"
                    ]
                }
            }
        },
        "proxmoxve:index/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`nodeName`\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:index/getDatastoresLegacyDatastore:getDatastoresLegacyDatastore": {
            "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"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": [
                        "id",
                        "nodeName",
                        "type"
                    ]
                }
            }
        },
        "proxmoxve:index/getDatastoresLegacyFilters:getDatastoresLegacyFilters": {
            "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`nodeName`\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:index/getFilesFile:getFilesFile": {
            "properties": {
                "contentType": {
                    "type": "string",
                    "description": "The content type of the file.\n"
                },
                "fileFormat": {
                    "type": "string",
                    "description": "The format of the file.\n"
                },
                "fileName": {
                    "type": "string",
                    "description": "The name of the file.\n"
                },
                "fileSize": {
                    "type": "integer",
                    "description": "The size of the file in bytes.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The unique identifier of the file (volume ID), e.g. `local:iso/ubuntu.iso`.\n"
                },
                "vmid": {
                    "type": "integer",
                    "description": "The VM ID associated with the file, if applicable.\n"
                }
            },
            "type": "object",
            "required": [
                "contentType",
                "fileFormat",
                "fileName",
                "fileSize",
                "id",
                "vmid"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "proxmoxve:index/getGroupLegacyAcl:getGroupLegacyAcl": {
            "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:index/getHostsLegacyEntry:getHostsLegacyEntry": {
            "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:index/getPoolLegacyMember:getPoolLegacyMember": {
            "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:index/getReplicationsLegacyReplication:getReplicationsLegacyReplication": {
            "properties": {
                "comment": {
                    "type": "string"
                },
                "disable": {
                    "type": "boolean"
                },
                "guest": {
                    "type": "integer"
                },
                "id": {
                    "type": "string"
                },
                "jobnum": {
                    "type": "integer"
                },
                "rate": {
                    "type": "number"
                },
                "removeJob": {
                    "type": "string"
                },
                "schedule": {
                    "type": "string"
                },
                "source": {
                    "type": "string"
                },
                "target": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "comment",
                "disable",
                "guest",
                "id",
                "jobnum",
                "rate",
                "removeJob",
                "schedule",
                "source",
                "target",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "proxmoxve:index/getReplicationsReplication:getReplicationsReplication": {
            "properties": {
                "comment": {
                    "type": "string"
                },
                "disable": {
                    "type": "boolean"
                },
                "guest": {
                    "type": "integer"
                },
                "id": {
                    "type": "string"
                },
                "jobnum": {
                    "type": "integer"
                },
                "rate": {
                    "type": "number"
                },
                "removeJob": {
                    "type": "string"
                },
                "schedule": {
                    "type": "string"
                },
                "source": {
                    "type": "string"
                },
                "target": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "comment",
                "disable",
                "guest",
                "id",
                "jobnum",
                "rate",
                "removeJob",
                "schedule",
                "source",
                "target",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "proxmoxve:index/getUserLegacyAcl:getUserLegacyAcl": {
            "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:index/getVm2LegacyCdrom:getVm2LegacyCdrom": {
            "properties": {
                "fileId": {
                    "type": "string",
                    "description": "The file ID of the CD-ROM.\n"
                }
            },
            "type": "object",
            "required": [
                "fileId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "proxmoxve:index/getVm2LegacyCpu:getVm2LegacyCpu": {
            "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"
                },
                "limit": {
                    "type": "number",
                    "description": "Limit of CPU usage.\n"
                },
                "numa": {
                    "type": "boolean",
                    "description": "Whether NUMA emulation is enabled.\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"
                },
                "vcpus": {
                    "type": "integer",
                    "description": "Number of active vCPUs.\n"
                }
            },
            "type": "object",
            "required": [
                "affinity",
                "architecture",
                "cores",
                "flags",
                "limit",
                "numa",
                "sockets",
                "type",
                "units",
                "vcpus"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "proxmoxve:index/getVm2LegacyRng:getVm2LegacyRng": {
            "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/getVm2LegacyTimeouts:getVm2LegacyTimeouts": {
            "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/getVm2LegacyVga:getVm2LegacyVga": {
            "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": []
                }
            }
        },
        "proxmoxve:index/getVmCdrom:getVmCdrom": {
            "properties": {
                "fileId": {
                    "type": "string",
                    "description": "The file ID of the CD-ROM.\n"
                }
            },
            "type": "object",
            "required": [
                "fileId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "proxmoxve:index/getVmCpu:getVmCpu": {
            "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"
                },
                "limit": {
                    "type": "number",
                    "description": "Limit of CPU usage.\n"
                },
                "numa": {
                    "type": "boolean",
                    "description": "Whether NUMA emulation is enabled.\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"
                },
                "vcpus": {
                    "type": "integer",
                    "description": "Number of active vCPUs.\n"
                }
            },
            "type": "object",
            "required": [
                "affinity",
                "architecture",
                "cores",
                "flags",
                "limit",
                "numa",
                "sockets",
                "type",
                "units",
                "vcpus"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "proxmoxve:index/getVmRng:getVmRng": {
            "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/getVmTimeouts:getVmTimeouts": {
            "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/getVmVga:getVmVga": {
            "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": []
                }
            }
        },
        "proxmoxve:index/getVmsLegacyFilter:getVmsLegacyFilter": {
            "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`nodeName`\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:index/getVmsLegacyVm:getVmsLegacyVm": {
            "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: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/SubnetLegacyDhcpRange:SubnetLegacyDhcpRange": {
            "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/getSubnetLegacyDhcpRange:getSubnetLegacyDhcpRange": {
            "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/getVnetsLegacyVnet:getVnetsLegacyVnet": {
            "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/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/getZonesLegacyZone:getZonesLegacyZone": {
            "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: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/CifsLegacyBackups:CifsLegacyBackups": {
            "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/DirectoryLegacyBackups:DirectoryLegacyBackups": {
            "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/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/NfsLegacyBackups:NfsLegacyBackups": {
            "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/PbsLegacyBackups:PbsLegacyBackups": {
            "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"
                    ]
                }
            }
        }
    },
    "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`apiToken`\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`apiToken`\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/account:Account": {
            "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.acme.Account(\"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.acme.Account(\"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.Acme.Account(\"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/v8/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.NewAccount(ctx, \"example\", \u0026acme.AccountArgs{\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.acme.Account;\nimport io.muehlbachler.pulumi.proxmoxve.acme.AccountArgs;\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 Account(\"example\", AccountArgs.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:acme:Account\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\nACME accounts can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:acme/account:Account 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 Account 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:acme/accountLegacy:AccountLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.acme.Account`\" pulumi-lang-dotnet=\"`proxmoxve.acme.Account`\" pulumi-lang-go=\"`acme.Account`\" pulumi-lang-python=\"`acme.Account`\" pulumi-lang-yaml=\"`proxmoxve.acme.Account`\" pulumi-lang-java=\"`proxmoxve.acme.Account`\"\u003e`proxmoxve.acme.Account`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages 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.acme.AccountLegacy(\"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.acme.AccountLegacy(\"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.Acme.AccountLegacy(\"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/v8/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.NewAccountLegacy(ctx, \"example\", \u0026acme.AccountLegacyArgs{\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.acme.AccountLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.acme.AccountLegacyArgs;\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 AccountLegacy(\"example\", AccountLegacyArgs.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:acme:AccountLegacy\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\nACME accounts can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:acme/accountLegacy:AccountLegacy 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 AccountLegacy 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:acme/certificate:Certificate": {
            "description": "Manages ACME SSL certificates for Proxmox VE nodes.\n\nThis resource orders and renews certificates from an ACME Certificate Authority (like Let's Encrypt) for a specific node. Before using this resource, ensure that:\n- An ACME account is configured (using \u003cspan pulumi-lang-nodejs=\"`proxmoxve.acme.Account`\" pulumi-lang-dotnet=\"`proxmoxve.acme.Account`\" pulumi-lang-go=\"`acme.Account`\" pulumi-lang-python=\"`acme.Account`\" pulumi-lang-yaml=\"`proxmoxve.acme.Account`\" pulumi-lang-java=\"`proxmoxve.acme.Account`\"\u003e`proxmoxve.acme.Account`\u003c/span\u003e)\n- DNS plugins are configured if using DNS-01 challenge (using \u003cspan pulumi-lang-nodejs=\"`proxmoxve.acme/dns.Plugin`\" pulumi-lang-dotnet=\"`proxmoxve.acme/dns.Plugin`\" pulumi-lang-go=\"`acme/dns.Plugin`\" pulumi-lang-python=\"`acme/dns.Plugin`\" pulumi-lang-yaml=\"`proxmoxve.acme/dns.Plugin`\" pulumi-lang-java=\"`proxmoxve.acme/dns.Plugin`\"\u003e`proxmoxve.acme/dns.Plugin`\u003c/span\u003e)\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// Example: Basic ACME certificate with HTTP-01 challenge (standalone)\nconst example = new proxmoxve.acme.Account(\"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});\nconst httpExample = new proxmoxve.acme.Certificate(\"http_example\", {\n    nodeName: \"pve-node-01\",\n    account: example.name,\n    domains: [{\n        domain: \"pve.example.com\",\n    }],\n});\n// Example: ACME certificate with DNS-01 challenge using Cloudflare\nconst cloudflare = new proxmoxve.acme.dns.Plugin(\"cloudflare\", {\n    plugin: \"cloudflare\",\n    api: \"cf\",\n    validationDelay: 120,\n    data: {\n        CF_Account_ID: \"your-cloudflare-account-id\",\n        CF_Token: \"your-cloudflare-api-token\",\n        CF_Zone_ID: \"your-cloudflare-zone-id\",\n    },\n});\nconst dnsExample = new proxmoxve.acme.Certificate(\"dns_example\", {\n    nodeName: \"pve-node-01\",\n    account: example.name,\n    domains: [{\n        domain: \"pve.example.com\",\n        plugin: cloudflare.plugin,\n    }],\n}, {\n    dependsOn: [\n        example,\n        cloudflare,\n    ],\n});\n// Example: Force certificate renewal\nconst forceRenew = new proxmoxve.acme.Certificate(\"force_renew\", {\n    nodeName: \"pve-node-01\",\n    account: example.name,\n    force: true,\n    domains: [{\n        domain: \"pve.example.com\",\n        plugin: cloudflare.plugin,\n    }],\n}, {\n    dependsOn: [\n        example,\n        cloudflare,\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# Example: Basic ACME certificate with HTTP-01 challenge (standalone)\nexample = proxmoxve.acme.Account(\"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\")\nhttp_example = proxmoxve.acme.Certificate(\"http_example\",\n    node_name=\"pve-node-01\",\n    account=example.name,\n    domains=[{\n        \"domain\": \"pve.example.com\",\n    }])\n# Example: ACME certificate with DNS-01 challenge using Cloudflare\ncloudflare = proxmoxve.acme.dns.Plugin(\"cloudflare\",\n    plugin=\"cloudflare\",\n    api=\"cf\",\n    validation_delay=120,\n    data={\n        \"CF_Account_ID\": \"your-cloudflare-account-id\",\n        \"CF_Token\": \"your-cloudflare-api-token\",\n        \"CF_Zone_ID\": \"your-cloudflare-zone-id\",\n    })\ndns_example = proxmoxve.acme.Certificate(\"dns_example\",\n    node_name=\"pve-node-01\",\n    account=example.name,\n    domains=[{\n        \"domain\": \"pve.example.com\",\n        \"plugin\": cloudflare.plugin,\n    }],\n    opts = pulumi.ResourceOptions(depends_on=[\n            example,\n            cloudflare,\n        ]))\n# Example: Force certificate renewal\nforce_renew = proxmoxve.acme.Certificate(\"force_renew\",\n    node_name=\"pve-node-01\",\n    account=example.name,\n    force=True,\n    domains=[{\n        \"domain\": \"pve.example.com\",\n        \"plugin\": cloudflare.plugin,\n    }],\n    opts = pulumi.ResourceOptions(depends_on=[\n            example,\n            cloudflare,\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: Basic ACME certificate with HTTP-01 challenge (standalone)\n    var example = new ProxmoxVE.Acme.Account(\"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    var httpExample = new ProxmoxVE.Acme.Certificate(\"http_example\", new()\n    {\n        NodeName = \"pve-node-01\",\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    // Example: ACME certificate with DNS-01 challenge using Cloudflare\n    var cloudflare = new ProxmoxVE.Acme.Dns.Plugin(\"cloudflare\", new()\n    {\n        PluginName = \"cloudflare\",\n        Api = \"cf\",\n        ValidationDelay = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(120) (example.pp:22,21-24)),\n        Data = \n        {\n            { \"CF_Account_ID\", \"your-cloudflare-account-id\" },\n            { \"CF_Token\", \"your-cloudflare-api-token\" },\n            { \"CF_Zone_ID\", \"your-cloudflare-zone-id\" },\n        },\n    });\n\n    var dnsExample = new ProxmoxVE.Acme.Certificate(\"dns_example\", new()\n    {\n        NodeName = \"pve-node-01\",\n        Account = example.Name,\n        Domains = new[]\n        {\n            new ProxmoxVE.Acme.Inputs.CertificateDomainArgs\n            {\n                Domain = \"pve.example.com\",\n                Plugin = cloudflare.PluginName,\n            },\n        },\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            example,\n            cloudflare,\n        },\n    });\n\n    // Example: Force certificate renewal\n    var forceRenew = new ProxmoxVE.Acme.Certificate(\"force_renew\", new()\n    {\n        NodeName = \"pve-node-01\",\n        Account = example.Name,\n        Force = true,\n        Domains = new[]\n        {\n            new ProxmoxVE.Acme.Inputs.CertificateDomainArgs\n            {\n                Domain = \"pve.example.com\",\n                Plugin = cloudflare.PluginName,\n            },\n        },\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            example,\n            cloudflare,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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// Example: Basic ACME certificate with HTTP-01 challenge (standalone)\n\t\texample, err := acme.NewAccount(ctx, \"example\", \u0026acme.AccountArgs{\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_, err = acme.NewCertificate(ctx, \"http_example\", \u0026acme.CertificateArgs{\n\t\t\tNodeName: pulumi.String(\"pve-node-01\"),\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\t// Example: ACME certificate with DNS-01 challenge using Cloudflare\n\t\tcloudflare, err := acme.NewPlugin(ctx, \"cloudflare\", \u0026acme.PluginArgs{\n\t\t\tPlugin:          pulumi.String(\"cloudflare\"),\n\t\t\tApi:             pulumi.String(\"cf\"),\n\t\t\tValidationDelay: pulumi.Int(120),\n\t\t\tData: pulumi.StringMap{\n\t\t\t\t\"CF_Account_ID\": pulumi.String(\"your-cloudflare-account-id\"),\n\t\t\t\t\"CF_Token\":      pulumi.String(\"your-cloudflare-api-token\"),\n\t\t\t\t\"CF_Zone_ID\":    pulumi.String(\"your-cloudflare-zone-id\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = acme.NewCertificate(ctx, \"dns_example\", \u0026acme.CertificateArgs{\n\t\t\tNodeName: pulumi.String(\"pve-node-01\"),\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\tPlugin: cloudflare.Plugin,\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample,\n\t\t\tcloudflare,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Example: Force certificate renewal\n\t\t_, err = acme.NewCertificate(ctx, \"force_renew\", \u0026acme.CertificateArgs{\n\t\t\tNodeName: pulumi.String(\"pve-node-01\"),\n\t\t\tAccount:  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\tPlugin: cloudflare.Plugin,\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample,\n\t\t\tcloudflare,\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.Account;\nimport io.muehlbachler.pulumi.proxmoxve.acme.AccountArgs;\nimport io.muehlbachler.pulumi.proxmoxve.acme.Certificate;\nimport io.muehlbachler.pulumi.proxmoxve.acme.CertificateArgs;\nimport com.pulumi.proxmoxve.acme.inputs.CertificateDomainArgs;\nimport io.muehlbachler.pulumi.proxmoxve.acme.Plugin;\nimport io.muehlbachler.pulumi.proxmoxve.acme.PluginArgs;\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        // Example: Basic ACME certificate with HTTP-01 challenge (standalone)\n        var example = new Account(\"example\", AccountArgs.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        var httpExample = new Certificate(\"httpExample\", CertificateArgs.builder()\n            .nodeName(\"pve-node-01\")\n            .account(example.name())\n            .domains(CertificateDomainArgs.builder()\n                .domain(\"pve.example.com\")\n                .build())\n            .build());\n\n        // Example: ACME certificate with DNS-01 challenge using Cloudflare\n        var cloudflare = new Plugin(\"cloudflare\", PluginArgs.builder()\n            .plugin(\"cloudflare\")\n            .api(\"cf\")\n            .validationDelay(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(120) (example.pp:22,21-24)))\n            .data(Map.ofEntries(\n                Map.entry(\"CF_Account_ID\", \"your-cloudflare-account-id\"),\n                Map.entry(\"CF_Token\", \"your-cloudflare-api-token\"),\n                Map.entry(\"CF_Zone_ID\", \"your-cloudflare-zone-id\")\n            ))\n            .build());\n\n        var dnsExample = new Certificate(\"dnsExample\", CertificateArgs.builder()\n            .nodeName(\"pve-node-01\")\n            .account(example.name())\n            .domains(CertificateDomainArgs.builder()\n                .domain(\"pve.example.com\")\n                .plugin(cloudflare.plugin())\n                .build())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(                \n                    example,\n                    cloudflare)\n                .build());\n\n        // Example: Force certificate renewal\n        var forceRenew = new Certificate(\"forceRenew\", CertificateArgs.builder()\n            .nodeName(\"pve-node-01\")\n            .account(example.name())\n            .force(true)\n            .domains(CertificateDomainArgs.builder()\n                .domain(\"pve.example.com\")\n                .plugin(cloudflare.plugin())\n                .build())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(                \n                    example,\n                    cloudflare)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Example: Basic ACME certificate with HTTP-01 challenge (standalone)\n  example:\n    type: proxmoxve:acme:Account\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  httpExample:\n    type: proxmoxve:acme:Certificate\n    name: http_example\n    properties:\n      nodeName: pve-node-01\n      account: ${example.name}\n      domains:\n        - domain: pve.example.com\n  # Example: ACME certificate with DNS-01 challenge using Cloudflare\n  cloudflare:\n    type: proxmoxve:acme/dns:Plugin\n    properties:\n      plugin: cloudflare\n      api: cf\n      validationDelay: 120\n      data:\n        CF_Account_ID: your-cloudflare-account-id\n        CF_Token: your-cloudflare-api-token\n        CF_Zone_ID: your-cloudflare-zone-id\n  dnsExample:\n    type: proxmoxve:acme:Certificate\n    name: dns_example\n    properties:\n      nodeName: pve-node-01\n      account: ${example.name}\n      domains:\n        - domain: pve.example.com\n          plugin: ${cloudflare.plugin}\n    options:\n      dependsOn:\n        - ${example}\n        - ${cloudflare}\n  # Example: Force certificate renewal\n  forceRenew:\n    type: proxmoxve:acme:Certificate\n    name: force_renew\n    properties:\n      nodeName: pve-node-01\n      account: ${example.name}\n      force: true\n      domains:\n        - domain: pve.example.com\n          plugin: ${cloudflare.plugin}\n    options:\n      dependsOn:\n        - ${example}\n        - ${cloudflare}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n!/usr/bin/env sh\nACME certificates can be imported using the node name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:acme/certificate:Certificate example pve-node-01\n```\n\n",
            "properties": {
                "account": {
                    "type": "string",
                    "description": "The ACME account name to use for ordering the certificate.\n"
                },
                "certificate": {
                    "type": "string",
                    "description": "The PEM-encoded certificate data.\n",
                    "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.\n"
                },
                "fingerprint": {
                    "type": "string",
                    "description": "The certificate fingerprint.\n"
                },
                "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.\n"
                },
                "issuer": {
                    "type": "string",
                    "description": "The certificate issuer.\n"
                },
                "nodeName": {
                    "type": "string",
                    "description": "The name of the Proxmox VE node for which to order/manage the ACME certificate.\n"
                },
                "notAfter": {
                    "type": "string",
                    "description": "The certificate expiration timestamp.\n"
                },
                "notBefore": {
                    "type": "string",
                    "description": "The certificate start timestamp.\n"
                },
                "subject": {
                    "type": "string",
                    "description": "The certificate subject.\n"
                },
                "subjectAlternativeNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The certificate subject alternative names (SANs).\n"
                }
            },
            "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.\n"
                },
                "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.\n"
                },
                "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.\n"
                },
                "nodeName": {
                    "type": "string",
                    "description": "The name of the Proxmox VE node for which to order/manage the ACME certificate.\n"
                }
            },
            "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.\n"
                    },
                    "certificate": {
                        "type": "string",
                        "description": "The PEM-encoded certificate data.\n",
                        "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.\n"
                    },
                    "fingerprint": {
                        "type": "string",
                        "description": "The certificate fingerprint.\n"
                    },
                    "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.\n"
                    },
                    "issuer": {
                        "type": "string",
                        "description": "The certificate issuer.\n"
                    },
                    "nodeName": {
                        "type": "string",
                        "description": "The name of the Proxmox VE node for which to order/manage the ACME certificate.\n"
                    },
                    "notAfter": {
                        "type": "string",
                        "description": "The certificate expiration timestamp.\n"
                    },
                    "notBefore": {
                        "type": "string",
                        "description": "The certificate start timestamp.\n"
                    },
                    "subject": {
                        "type": "string",
                        "description": "The certificate subject.\n"
                    },
                    "subjectAlternativeNames": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The certificate subject alternative names (SANs).\n"
                    }
                },
                "type": "object"
            }
        },
        "proxmoxve:acme/certificateLegacy:CertificateLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.acme.Certificate`\" pulumi-lang-dotnet=\"`proxmoxve.acme.Certificate`\" pulumi-lang-go=\"`acme.Certificate`\" pulumi-lang-python=\"`acme.Certificate`\" pulumi-lang-yaml=\"`proxmoxve.acme.Certificate`\" pulumi-lang-java=\"`proxmoxve.acme.Certificate`\"\u003e`proxmoxve.acme.Certificate`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages ACME SSL certificates for Proxmox VE nodes.\n\nThis resource orders and renews certificates from an ACME Certificate Authority (like Let's Encrypt) for a specific node. Before using this resource, ensure that:\n- An ACME account is configured (using \u003cspan pulumi-lang-nodejs=\"`proxmoxve.acme.Account`\" pulumi-lang-dotnet=\"`proxmoxve.acme.Account`\" pulumi-lang-go=\"`acme.Account`\" pulumi-lang-python=\"`acme.Account`\" pulumi-lang-yaml=\"`proxmoxve.acme.Account`\" pulumi-lang-java=\"`proxmoxve.acme.Account`\"\u003e`proxmoxve.acme.Account`\u003c/span\u003e)\n- DNS plugins are configured if using DNS-01 challenge (using \u003cspan pulumi-lang-nodejs=\"`proxmoxve.acme/dns.Plugin`\" pulumi-lang-dotnet=\"`proxmoxve.acme/dns.Plugin`\" pulumi-lang-go=\"`acme/dns.Plugin`\" pulumi-lang-python=\"`acme/dns.Plugin`\" pulumi-lang-yaml=\"`proxmoxve.acme/dns.Plugin`\" pulumi-lang-java=\"`proxmoxve.acme/dns.Plugin`\"\u003e`proxmoxve.acme/dns.Plugin`\u003c/span\u003e)\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// Example: Basic ACME certificate with HTTP-01 challenge (standalone)\nconst example = new proxmoxve.acme.AccountLegacy(\"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});\nconst httpExample = new proxmoxve.acme.CertificateLegacy(\"http_example\", {\n    nodeName: \"pve-node-01\",\n    account: example.name,\n    domains: [{\n        domain: \"pve.example.com\",\n    }],\n});\n// Example: ACME certificate with DNS-01 challenge using Cloudflare\nconst cloudflare = new proxmoxve.acme.dns.PluginLegacy(\"cloudflare\", {\n    plugin: \"cloudflare\",\n    api: \"cf\",\n    validationDelay: 120,\n    data: {\n        CF_Account_ID: \"your-cloudflare-account-id\",\n        CF_Token: \"your-cloudflare-api-token\",\n        CF_Zone_ID: \"your-cloudflare-zone-id\",\n    },\n});\nconst dnsExample = new proxmoxve.acme.CertificateLegacy(\"dns_example\", {\n    nodeName: \"pve-node-01\",\n    account: example.name,\n    domains: [{\n        domain: \"pve.example.com\",\n        plugin: cloudflare.plugin,\n    }],\n}, {\n    dependsOn: [\n        example,\n        cloudflare,\n    ],\n});\n// Example: Force certificate renewal\nconst forceRenew = new proxmoxve.acme.CertificateLegacy(\"force_renew\", {\n    nodeName: \"pve-node-01\",\n    account: example.name,\n    force: true,\n    domains: [{\n        domain: \"pve.example.com\",\n        plugin: cloudflare.plugin,\n    }],\n}, {\n    dependsOn: [\n        example,\n        cloudflare,\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# Example: Basic ACME certificate with HTTP-01 challenge (standalone)\nexample = proxmoxve.acme.AccountLegacy(\"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\")\nhttp_example = proxmoxve.acme.CertificateLegacy(\"http_example\",\n    node_name=\"pve-node-01\",\n    account=example.name,\n    domains=[{\n        \"domain\": \"pve.example.com\",\n    }])\n# Example: ACME certificate with DNS-01 challenge using Cloudflare\ncloudflare = proxmoxve.acme.dns.PluginLegacy(\"cloudflare\",\n    plugin=\"cloudflare\",\n    api=\"cf\",\n    validation_delay=120,\n    data={\n        \"CF_Account_ID\": \"your-cloudflare-account-id\",\n        \"CF_Token\": \"your-cloudflare-api-token\",\n        \"CF_Zone_ID\": \"your-cloudflare-zone-id\",\n    })\ndns_example = proxmoxve.acme.CertificateLegacy(\"dns_example\",\n    node_name=\"pve-node-01\",\n    account=example.name,\n    domains=[{\n        \"domain\": \"pve.example.com\",\n        \"plugin\": cloudflare.plugin,\n    }],\n    opts = pulumi.ResourceOptions(depends_on=[\n            example,\n            cloudflare,\n        ]))\n# Example: Force certificate renewal\nforce_renew = proxmoxve.acme.CertificateLegacy(\"force_renew\",\n    node_name=\"pve-node-01\",\n    account=example.name,\n    force=True,\n    domains=[{\n        \"domain\": \"pve.example.com\",\n        \"plugin\": cloudflare.plugin,\n    }],\n    opts = pulumi.ResourceOptions(depends_on=[\n            example,\n            cloudflare,\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: Basic ACME certificate with HTTP-01 challenge (standalone)\n    var example = new ProxmoxVE.Acme.AccountLegacy(\"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    var httpExample = new ProxmoxVE.Acme.CertificateLegacy(\"http_example\", new()\n    {\n        NodeName = \"pve-node-01\",\n        Account = example.Name,\n        Domains = new[]\n        {\n            new ProxmoxVE.Acme.Inputs.CertificateLegacyDomainArgs\n            {\n                Domain = \"pve.example.com\",\n            },\n        },\n    });\n\n    // Example: ACME certificate with DNS-01 challenge using Cloudflare\n    var cloudflare = new ProxmoxVE.Acme.Dns.PluginLegacy(\"cloudflare\", new()\n    {\n        PluginName = \"cloudflare\",\n        Api = \"cf\",\n        ValidationDelay = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(120) (example.pp:22,21-24)),\n        Data = \n        {\n            { \"CF_Account_ID\", \"your-cloudflare-account-id\" },\n            { \"CF_Token\", \"your-cloudflare-api-token\" },\n            { \"CF_Zone_ID\", \"your-cloudflare-zone-id\" },\n        },\n    });\n\n    var dnsExample = new ProxmoxVE.Acme.CertificateLegacy(\"dns_example\", new()\n    {\n        NodeName = \"pve-node-01\",\n        Account = example.Name,\n        Domains = new[]\n        {\n            new ProxmoxVE.Acme.Inputs.CertificateLegacyDomainArgs\n            {\n                Domain = \"pve.example.com\",\n                Plugin = cloudflare.PluginName,\n            },\n        },\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            example,\n            cloudflare,\n        },\n    });\n\n    // Example: Force certificate renewal\n    var forceRenew = new ProxmoxVE.Acme.CertificateLegacy(\"force_renew\", new()\n    {\n        NodeName = \"pve-node-01\",\n        Account = example.Name,\n        Force = true,\n        Domains = new[]\n        {\n            new ProxmoxVE.Acme.Inputs.CertificateLegacyDomainArgs\n            {\n                Domain = \"pve.example.com\",\n                Plugin = cloudflare.PluginName,\n            },\n        },\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            example,\n            cloudflare,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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// Example: Basic ACME certificate with HTTP-01 challenge (standalone)\n\t\texample, err := acme.NewAccountLegacy(ctx, \"example\", \u0026acme.AccountLegacyArgs{\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_, err = acme.NewCertificateLegacy(ctx, \"http_example\", \u0026acme.CertificateLegacyArgs{\n\t\t\tNodeName: pulumi.String(\"pve-node-01\"),\n\t\t\tAccount:  example.Name,\n\t\t\tDomains: acme.CertificateLegacyDomainArray{\n\t\t\t\t\u0026acme.CertificateLegacyDomainArgs{\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\t// Example: ACME certificate with DNS-01 challenge using Cloudflare\n\t\tcloudflare, err := acme.NewPluginLegacy(ctx, \"cloudflare\", \u0026acme.PluginLegacyArgs{\n\t\t\tPlugin:          pulumi.String(\"cloudflare\"),\n\t\t\tApi:             pulumi.String(\"cf\"),\n\t\t\tValidationDelay: pulumi.Int(120),\n\t\t\tData: pulumi.StringMap{\n\t\t\t\t\"CF_Account_ID\": pulumi.String(\"your-cloudflare-account-id\"),\n\t\t\t\t\"CF_Token\":      pulumi.String(\"your-cloudflare-api-token\"),\n\t\t\t\t\"CF_Zone_ID\":    pulumi.String(\"your-cloudflare-zone-id\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = acme.NewCertificateLegacy(ctx, \"dns_example\", \u0026acme.CertificateLegacyArgs{\n\t\t\tNodeName: pulumi.String(\"pve-node-01\"),\n\t\t\tAccount:  example.Name,\n\t\t\tDomains: acme.CertificateLegacyDomainArray{\n\t\t\t\t\u0026acme.CertificateLegacyDomainArgs{\n\t\t\t\t\tDomain: pulumi.String(\"pve.example.com\"),\n\t\t\t\t\tPlugin: cloudflare.Plugin,\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample,\n\t\t\tcloudflare,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Example: Force certificate renewal\n\t\t_, err = acme.NewCertificateLegacy(ctx, \"force_renew\", \u0026acme.CertificateLegacyArgs{\n\t\t\tNodeName: pulumi.String(\"pve-node-01\"),\n\t\t\tAccount:  example.Name,\n\t\t\tForce:    pulumi.Bool(true),\n\t\t\tDomains: acme.CertificateLegacyDomainArray{\n\t\t\t\t\u0026acme.CertificateLegacyDomainArgs{\n\t\t\t\t\tDomain: pulumi.String(\"pve.example.com\"),\n\t\t\t\t\tPlugin: cloudflare.Plugin,\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample,\n\t\t\tcloudflare,\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.AccountLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.acme.AccountLegacyArgs;\nimport io.muehlbachler.pulumi.proxmoxve.acme.CertificateLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.acme.CertificateLegacyArgs;\nimport com.pulumi.proxmoxve.acme.inputs.CertificateLegacyDomainArgs;\nimport io.muehlbachler.pulumi.proxmoxve.acme.PluginLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.acme.PluginLegacyArgs;\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        // Example: Basic ACME certificate with HTTP-01 challenge (standalone)\n        var example = new AccountLegacy(\"example\", AccountLegacyArgs.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        var httpExample = new CertificateLegacy(\"httpExample\", CertificateLegacyArgs.builder()\n            .nodeName(\"pve-node-01\")\n            .account(example.name())\n            .domains(CertificateLegacyDomainArgs.builder()\n                .domain(\"pve.example.com\")\n                .build())\n            .build());\n\n        // Example: ACME certificate with DNS-01 challenge using Cloudflare\n        var cloudflare = new PluginLegacy(\"cloudflare\", PluginLegacyArgs.builder()\n            .plugin(\"cloudflare\")\n            .api(\"cf\")\n            .validationDelay(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(120) (example.pp:22,21-24)))\n            .data(Map.ofEntries(\n                Map.entry(\"CF_Account_ID\", \"your-cloudflare-account-id\"),\n                Map.entry(\"CF_Token\", \"your-cloudflare-api-token\"),\n                Map.entry(\"CF_Zone_ID\", \"your-cloudflare-zone-id\")\n            ))\n            .build());\n\n        var dnsExample = new CertificateLegacy(\"dnsExample\", CertificateLegacyArgs.builder()\n            .nodeName(\"pve-node-01\")\n            .account(example.name())\n            .domains(CertificateLegacyDomainArgs.builder()\n                .domain(\"pve.example.com\")\n                .plugin(cloudflare.plugin())\n                .build())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(                \n                    example,\n                    cloudflare)\n                .build());\n\n        // Example: Force certificate renewal\n        var forceRenew = new CertificateLegacy(\"forceRenew\", CertificateLegacyArgs.builder()\n            .nodeName(\"pve-node-01\")\n            .account(example.name())\n            .force(true)\n            .domains(CertificateLegacyDomainArgs.builder()\n                .domain(\"pve.example.com\")\n                .plugin(cloudflare.plugin())\n                .build())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(                \n                    example,\n                    cloudflare)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Example: Basic ACME certificate with HTTP-01 challenge (standalone)\n  example:\n    type: proxmoxve:acme:AccountLegacy\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  httpExample:\n    type: proxmoxve:acme:CertificateLegacy\n    name: http_example\n    properties:\n      nodeName: pve-node-01\n      account: ${example.name}\n      domains:\n        - domain: pve.example.com\n  # Example: ACME certificate with DNS-01 challenge using Cloudflare\n  cloudflare:\n    type: proxmoxve:acme/dns:PluginLegacy\n    properties:\n      plugin: cloudflare\n      api: cf\n      validationDelay: 120\n      data:\n        CF_Account_ID: your-cloudflare-account-id\n        CF_Token: your-cloudflare-api-token\n        CF_Zone_ID: your-cloudflare-zone-id\n  dnsExample:\n    type: proxmoxve:acme:CertificateLegacy\n    name: dns_example\n    properties:\n      nodeName: pve-node-01\n      account: ${example.name}\n      domains:\n        - domain: pve.example.com\n          plugin: ${cloudflare.plugin}\n    options:\n      dependsOn:\n        - ${example}\n        - ${cloudflare}\n  # Example: Force certificate renewal\n  forceRenew:\n    type: proxmoxve:acme:CertificateLegacy\n    name: force_renew\n    properties:\n      nodeName: pve-node-01\n      account: ${example.name}\n      force: true\n      domains:\n        - domain: pve.example.com\n          plugin: ${cloudflare.plugin}\n    options:\n      dependsOn:\n        - ${example}\n        - ${cloudflare}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n!/usr/bin/env sh\nACME certificates can be imported using the node name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:acme/certificateLegacy:CertificateLegacy example pve-node-01\n```\n\n",
            "properties": {
                "account": {
                    "type": "string",
                    "description": "The ACME account name to use for ordering the certificate.\n"
                },
                "certificate": {
                    "type": "string",
                    "description": "The PEM-encoded certificate data.\n",
                    "language": {
                        "csharp": {
                            "name": "certificatePem"
                        }
                    }
                },
                "domains": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/proxmoxve:acme/CertificateLegacyDomain:CertificateLegacyDomain"
                    },
                    "description": "The list of domains to include in the certificate. At least one domain is required.\n"
                },
                "fingerprint": {
                    "type": "string",
                    "description": "The certificate fingerprint.\n"
                },
                "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.\n"
                },
                "issuer": {
                    "type": "string",
                    "description": "The certificate issuer.\n"
                },
                "nodeName": {
                    "type": "string",
                    "description": "The name of the Proxmox VE node for which to order/manage the ACME certificate.\n"
                },
                "notAfter": {
                    "type": "string",
                    "description": "The certificate expiration timestamp.\n"
                },
                "notBefore": {
                    "type": "string",
                    "description": "The certificate start timestamp.\n"
                },
                "subject": {
                    "type": "string",
                    "description": "The certificate subject.\n"
                },
                "subjectAlternativeNames": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The certificate subject alternative names (SANs).\n"
                }
            },
            "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.\n"
                },
                "domains": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/proxmoxve:acme/CertificateLegacyDomain:CertificateLegacyDomain"
                    },
                    "description": "The list of domains to include in the certificate. At least one domain is required.\n"
                },
                "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.\n"
                },
                "nodeName": {
                    "type": "string",
                    "description": "The name of the Proxmox VE node for which to order/manage the ACME certificate.\n"
                }
            },
            "requiredInputs": [
                "account",
                "domains",
                "nodeName"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering CertificateLegacy resources.\n",
                "properties": {
                    "account": {
                        "type": "string",
                        "description": "The ACME account name to use for ordering the certificate.\n"
                    },
                    "certificate": {
                        "type": "string",
                        "description": "The PEM-encoded certificate data.\n",
                        "language": {
                            "csharp": {
                                "name": "certificatePem"
                            }
                        }
                    },
                    "domains": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/proxmoxve:acme/CertificateLegacyDomain:CertificateLegacyDomain"
                        },
                        "description": "The list of domains to include in the certificate. At least one domain is required.\n"
                    },
                    "fingerprint": {
                        "type": "string",
                        "description": "The certificate fingerprint.\n"
                    },
                    "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.\n"
                    },
                    "issuer": {
                        "type": "string",
                        "description": "The certificate issuer.\n"
                    },
                    "nodeName": {
                        "type": "string",
                        "description": "The name of the Proxmox VE node for which to order/manage the ACME certificate.\n"
                    },
                    "notAfter": {
                        "type": "string",
                        "description": "The certificate expiration timestamp.\n"
                    },
                    "notBefore": {
                        "type": "string",
                        "description": "The certificate start timestamp.\n"
                    },
                    "subject": {
                        "type": "string",
                        "description": "The certificate subject.\n"
                    },
                    "subjectAlternativeNames": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The certificate subject alternative names (SANs).\n"
                    }
                },
                "type": "object"
            }
        },
        "proxmoxve:acme/dns/plugin:Plugin": {
            "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.acme.dns.Plugin(\"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.acme.dns.Plugin(\"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.Acme.Dns.Plugin(\"example\", new()\n    {\n        PluginName = \"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/v8/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.NewPlugin(ctx, \"example\", \u0026acme.PluginArgs{\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.acme.Plugin;\nimport io.muehlbachler.pulumi.proxmoxve.acme.PluginArgs;\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 Plugin(\"example\", PluginArgs.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:acme/dns:Plugin\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\nACME accounts can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:acme/dns/plugin:Plugin 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",
                    "language": {
                        "csharp": {
                            "name": "pluginName"
                        }
                    }
                },
                "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",
                    "language": {
                        "csharp": {
                            "name": "pluginName"
                        }
                    }
                },
                "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 Plugin 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",
                        "language": {
                            "csharp": {
                                "name": "pluginName"
                            }
                        }
                    },
                    "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:acme/dns/pluginLegacy:PluginLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.acme/dns.Plugin`\" pulumi-lang-dotnet=\"`proxmoxve.acme/dns.Plugin`\" pulumi-lang-go=\"`acme/dns.Plugin`\" pulumi-lang-python=\"`acme/dns.Plugin`\" pulumi-lang-yaml=\"`proxmoxve.acme/dns.Plugin`\" pulumi-lang-java=\"`proxmoxve.acme/dns.Plugin`\"\u003e`proxmoxve.acme/dns.Plugin`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages 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.acme.dns.PluginLegacy(\"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.acme.dns.PluginLegacy(\"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.Acme.Dns.PluginLegacy(\"example\", new()\n    {\n        PluginName = \"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/v8/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.NewPluginLegacy(ctx, \"example\", \u0026acme.PluginLegacyArgs{\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.acme.PluginLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.acme.PluginLegacyArgs;\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 PluginLegacy(\"example\", PluginLegacyArgs.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:acme/dns:PluginLegacy\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\nACME accounts can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:acme/dns/pluginLegacy:PluginLegacy 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",
                    "language": {
                        "csharp": {
                            "name": "pluginName"
                        }
                    }
                },
                "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",
                    "language": {
                        "csharp": {
                            "name": "pluginName"
                        }
                    }
                },
                "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 PluginLegacy 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",
                        "language": {
                            "csharp": {
                                "name": "pluginName"
                            }
                        }
                    },
                    "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: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 = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(0) (example.pp:3,14-15)),\n        Node = \"pve\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(0) (example.pp:3,14-15)))\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\nAn APT repository can be imported using a comma-separated list consisting of the name of the Proxmox VE node,\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/repositoryLegacy:RepositoryLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.apt.Repository`\" pulumi-lang-dotnet=\"`proxmoxve.apt.Repository`\" pulumi-lang-go=\"`apt.Repository`\" pulumi-lang-python=\"`apt.Repository`\" pulumi-lang-yaml=\"`proxmoxve.apt.Repository`\" pulumi-lang-java=\"`proxmoxve.apt.Repository`\"\u003e`proxmoxve.apt.Repository`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages 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.RepositoryLegacy(\"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.RepositoryLegacy(\"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.RepositoryLegacy(\"example\", new()\n    {\n        Enabled = true,\n        FilePath = \"/etc/apt/sources.list\",\n        Index = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(0) (example.pp:3,14-15)),\n        Node = \"pve\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.NewRepositoryLegacy(ctx, \"example\", \u0026apt.RepositoryLegacyArgs{\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.RepositoryLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.apt.RepositoryLegacyArgs;\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 RepositoryLegacy(\"example\", RepositoryLegacyArgs.builder()\n            .enabled(true)\n            .filePath(\"/etc/apt/sources.list\")\n            .index(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(0) (example.pp:3,14-15)))\n            .node(\"pve\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:apt:RepositoryLegacy\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\nAn APT repository can be imported using a comma-separated list consisting of the name of the Proxmox VE node,\nthe absolute source list file path, and the index in the exact same order, e.g.:\n\n```sh\n$ pulumi import proxmoxve:apt/repositoryLegacy:RepositoryLegacy 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 RepositoryLegacy 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/v8/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\nAn APT standard repository can be imported using a comma-separated list consisting of the name of the Proxmox VE node,\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:apt/standard/repositoryLegacy:RepositoryLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.apt/standard.Repository`\" pulumi-lang-dotnet=\"`proxmoxve.apt/standard.Repository`\" pulumi-lang-go=\"`apt/standard.Repository`\" pulumi-lang-python=\"`apt/standard.Repository`\" pulumi-lang-yaml=\"`proxmoxve.apt/standard.Repository`\" pulumi-lang-java=\"`proxmoxve.apt/standard.Repository`\"\u003e`proxmoxve.apt/standard.Repository`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages 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.RepositoryLegacy(\"example\", {\n    handle: \"no-subscription\",\n    node: \"pve\",\n});\nconst exampleRepositoryLegacy = new proxmoxve.apt.RepositoryLegacy(\"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.RepositoryLegacy(\"example\",\n    handle=\"no-subscription\",\n    node=\"pve\")\nexample_repository_legacy = proxmoxve.apt.RepositoryLegacy(\"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.RepositoryLegacy(\"example\", new()\n    {\n        Handle = \"no-subscription\",\n        Node = \"pve\",\n    });\n\n    var exampleRepositoryLegacy = new ProxmoxVE.Apt.RepositoryLegacy(\"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/v8/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.NewRepositoryLegacy(ctx, \"example\", \u0026apt.RepositoryLegacyArgs{\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.NewRepositoryLegacy(ctx, \"example\", \u0026apt.RepositoryLegacyArgs{\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.RepositoryLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.apt.RepositoryLegacyArgs;\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 RepositoryLegacy(\"example\", RepositoryLegacyArgs.builder()\n            .handle(\"no-subscription\")\n            .node(\"pve\")\n            .build());\n\n        var exampleRepositoryLegacy = new RepositoryLegacy(\"exampleRepositoryLegacy\", RepositoryLegacyArgs.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:RepositoryLegacy\n    properties:\n      handle: no-subscription\n      node: pve\n  exampleRepositoryLegacy:\n    type: proxmoxve:apt:RepositoryLegacy\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\nAn APT standard repository can be imported using a comma-separated list consisting of the name of the Proxmox VE node,\nand the standard repository handle in the exact same order, e.g.:\n\n```sh\n$ pulumi import proxmoxve:apt/standard/repositoryLegacy:RepositoryLegacy 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 RepositoryLegacy 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:backup/job:Job": {
            "description": "Manages a Proxmox VE cluster backup job.\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 dailyBackup = new proxmoxve.backup.Job(\"daily_backup\", {\n    resourceId: \"daily-backup\",\n    schedule: \"*-*-* 02:00\",\n    storage: \"local\",\n    all: true,\n    mode: \"snapshot\",\n    compress: \"zstd\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\ndaily_backup = proxmoxve.backup.Job(\"daily_backup\",\n    resource_id=\"daily-backup\",\n    schedule=\"*-*-* 02:00\",\n    storage=\"local\",\n    all=True,\n    mode=\"snapshot\",\n    compress=\"zstd\")\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 dailyBackup = new ProxmoxVE.Backup.Job(\"daily_backup\", new()\n    {\n        ResourceId = \"daily-backup\",\n        Schedule = \"*-*-* 02:00\",\n        Storage = \"local\",\n        All = true,\n        Mode = \"snapshot\",\n        Compress = \"zstd\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/go/proxmoxve/backup\"\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 := backup.NewJob(ctx, \"daily_backup\", \u0026backup.JobArgs{\n\t\t\tResourceId: pulumi.String(\"daily-backup\"),\n\t\t\tSchedule:   pulumi.String(\"*-*-* 02:00\"),\n\t\t\tStorage:    pulumi.String(\"local\"),\n\t\t\tAll:        pulumi.Bool(true),\n\t\t\tMode:       pulumi.String(\"snapshot\"),\n\t\t\tCompress:   pulumi.String(\"zstd\"),\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.backup.Job;\nimport io.muehlbachler.pulumi.proxmoxve.backup.JobArgs;\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 dailyBackup = new Job(\"dailyBackup\", JobArgs.builder()\n            .resourceId(\"daily-backup\")\n            .schedule(\"*-*-* 02:00\")\n            .storage(\"local\")\n            .all(true)\n            .mode(\"snapshot\")\n            .compress(\"zstd\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  dailyBackup:\n    type: proxmoxve:backup:Job\n    name: daily_backup\n    properties:\n      resourceId: daily-backup\n      schedule: '*-*-* 02:00'\n      storage: local\n      all: true\n      mode: snapshot\n      compress: zstd\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n```sh\n$ pulumi import proxmoxve:backup/job:Job daily_backup daily-backup\n```\n\n",
            "properties": {
                "all": {
                    "type": "boolean",
                    "description": "Whether to back up all known guests on the node.\n"
                },
                "bwlimit": {
                    "type": "integer",
                    "description": "I/O bandwidth limit in KiB/s.\n"
                },
                "compress": {
                    "type": "string",
                    "description": "The compression algorithm (0, 1, gzip, lzo, or zstd).\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Whether the backup job is enabled.\n"
                },
                "excludePaths": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of paths to exclude from the backup.\n"
                },
                "fleecing": {
                    "$ref": "#/types/proxmoxve:backup/JobFleecing:JobFleecing",
                    "description": "Fleecing configuration for the backup job.\n"
                },
                "ionice": {
                    "type": "integer",
                    "description": "I/O priority (0-8).\n"
                },
                "lockwait": {
                    "type": "integer",
                    "description": "Maximum wait time in minutes for the global lock.\n"
                },
                "mailnotification": {
                    "type": "string",
                    "description": "Email notification setting (always or failure).\n"
                },
                "mailtos": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of email addresses to send notifications to.\n"
                },
                "maxfiles": {
                    "type": "integer",
                    "description": "Deprecated: use\u003cspan pulumi-lang-nodejs=\" pruneBackups \" pulumi-lang-dotnet=\" PruneBackups \" pulumi-lang-go=\" pruneBackups \" pulumi-lang-python=\" prune_backups \" pulumi-lang-yaml=\" pruneBackups \" pulumi-lang-java=\" pruneBackups \"\u003e pruneBackups \u003c/span\u003einstead. Maximum number of backup files per guest.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "The backup mode (snapshot, suspend, or stop).\n"
                },
                "node": {
                    "type": "string",
                    "description": "The cluster node name to limit the backup job to.\n"
                },
                "notesTemplate": {
                    "type": "string",
                    "description": "Template for notes attached to the backup.\n"
                },
                "pbsChangeDetectionMode": {
                    "type": "string",
                    "description": "PBS change detection mode (legacy, data, or metadata).\n"
                },
                "performance": {
                    "$ref": "#/types/proxmoxve:backup/JobPerformance:JobPerformance",
                    "description": "Performance-related settings for the backup job.\n"
                },
                "pigz": {
                    "type": "integer",
                    "description": "Number of pigz threads (0 disables, 1 uses single-threaded gzip).\n"
                },
                "pool": {
                    "type": "string",
                    "description": "Limit backup to guests in the specified pool.\n"
                },
                "protected": {
                    "type": "boolean",
                    "description": "Whether the backup should be marked as protected.\n"
                },
                "pruneBackups": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Retention options as a map of keep policies (e.g. keep-last = \"3\", keep-weekly = \"2\").\n"
                },
                "remove": {
                    "type": "boolean",
                    "description": "Whether to remove old backups if there are more than maxfiles.\n"
                },
                "repeatMissed": {
                    "type": "boolean",
                    "description": "Whether to repeat missed backup jobs as soon as possible.\n"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The identifier of the backup job.\n"
                },
                "schedule": {
                    "type": "string",
                    "description": "Backup schedule in systemd calendar event format.\n"
                },
                "script": {
                    "type": "string",
                    "description": "Path to a script to execute before/after the backup job.\n"
                },
                "starttime": {
                    "type": "string",
                    "description": "The scheduled start time (HH:MM).\n"
                },
                "stdexcludes": {
                    "type": "boolean",
                    "description": "Whether to exclude common temporary files from the backup.\n"
                },
                "stopwait": {
                    "type": "integer",
                    "description": "Maximum wait time in minutes for a guest to stop.\n"
                },
                "storage": {
                    "type": "string",
                    "description": "The storage identifier for the backup.\n"
                },
                "tmpdir": {
                    "type": "string",
                    "description": "Path to the temporary directory for the backup job.\n"
                },
                "vmids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of guest VM/CT IDs to include in the backup job.\n"
                },
                "zstd": {
                    "type": "integer",
                    "description": "Number of zstd threads (0 uses half of available cores).\n"
                }
            },
            "required": [
                "all",
                "bwlimit",
                "compress",
                "enabled",
                "resourceId",
                "ionice",
                "mailnotification",
                "mode",
                "protected",
                "pruneBackups",
                "remove",
                "repeatMissed",
                "schedule",
                "stdexcludes",
                "storage"
            ],
            "inputProperties": {
                "all": {
                    "type": "boolean",
                    "description": "Whether to back up all known guests on the node.\n"
                },
                "bwlimit": {
                    "type": "integer",
                    "description": "I/O bandwidth limit in KiB/s.\n"
                },
                "compress": {
                    "type": "string",
                    "description": "The compression algorithm (0, 1, gzip, lzo, or zstd).\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Whether the backup job is enabled.\n"
                },
                "excludePaths": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of paths to exclude from the backup.\n"
                },
                "fleecing": {
                    "$ref": "#/types/proxmoxve:backup/JobFleecing:JobFleecing",
                    "description": "Fleecing configuration for the backup job.\n"
                },
                "ionice": {
                    "type": "integer",
                    "description": "I/O priority (0-8).\n"
                },
                "lockwait": {
                    "type": "integer",
                    "description": "Maximum wait time in minutes for the global lock.\n"
                },
                "mailnotification": {
                    "type": "string",
                    "description": "Email notification setting (always or failure).\n"
                },
                "mailtos": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of email addresses to send notifications to.\n"
                },
                "maxfiles": {
                    "type": "integer",
                    "description": "Deprecated: use\u003cspan pulumi-lang-nodejs=\" pruneBackups \" pulumi-lang-dotnet=\" PruneBackups \" pulumi-lang-go=\" pruneBackups \" pulumi-lang-python=\" prune_backups \" pulumi-lang-yaml=\" pruneBackups \" pulumi-lang-java=\" pruneBackups \"\u003e pruneBackups \u003c/span\u003einstead. Maximum number of backup files per guest.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "The backup mode (snapshot, suspend, or stop).\n"
                },
                "node": {
                    "type": "string",
                    "description": "The cluster node name to limit the backup job to.\n"
                },
                "notesTemplate": {
                    "type": "string",
                    "description": "Template for notes attached to the backup.\n"
                },
                "pbsChangeDetectionMode": {
                    "type": "string",
                    "description": "PBS change detection mode (legacy, data, or metadata).\n"
                },
                "performance": {
                    "$ref": "#/types/proxmoxve:backup/JobPerformance:JobPerformance",
                    "description": "Performance-related settings for the backup job.\n"
                },
                "pigz": {
                    "type": "integer",
                    "description": "Number of pigz threads (0 disables, 1 uses single-threaded gzip).\n"
                },
                "pool": {
                    "type": "string",
                    "description": "Limit backup to guests in the specified pool.\n"
                },
                "protected": {
                    "type": "boolean",
                    "description": "Whether the backup should be marked as protected.\n"
                },
                "pruneBackups": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "Retention options as a map of keep policies (e.g. keep-last = \"3\", keep-weekly = \"2\").\n"
                },
                "remove": {
                    "type": "boolean",
                    "description": "Whether to remove old backups if there are more than maxfiles.\n"
                },
                "repeatMissed": {
                    "type": "boolean",
                    "description": "Whether to repeat missed backup jobs as soon as possible.\n"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The identifier of the backup job.\n"
                },
                "schedule": {
                    "type": "string",
                    "description": "Backup schedule in systemd calendar event format.\n"
                },
                "script": {
                    "type": "string",
                    "description": "Path to a script to execute before/after the backup job.\n"
                },
                "starttime": {
                    "type": "string",
                    "description": "The scheduled start time (HH:MM).\n"
                },
                "stdexcludes": {
                    "type": "boolean",
                    "description": "Whether to exclude common temporary files from the backup.\n"
                },
                "stopwait": {
                    "type": "integer",
                    "description": "Maximum wait time in minutes for a guest to stop.\n"
                },
                "storage": {
                    "type": "string",
                    "description": "The storage identifier for the backup.\n"
                },
                "tmpdir": {
                    "type": "string",
                    "description": "Path to the temporary directory for the backup job.\n"
                },
                "vmids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of guest VM/CT IDs to include in the backup job.\n"
                },
                "zstd": {
                    "type": "integer",
                    "description": "Number of zstd threads (0 uses half of available cores).\n"
                }
            },
            "requiredInputs": [
                "resourceId",
                "schedule",
                "storage"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Job resources.\n",
                "properties": {
                    "all": {
                        "type": "boolean",
                        "description": "Whether to back up all known guests on the node.\n"
                    },
                    "bwlimit": {
                        "type": "integer",
                        "description": "I/O bandwidth limit in KiB/s.\n"
                    },
                    "compress": {
                        "type": "string",
                        "description": "The compression algorithm (0, 1, gzip, lzo, or zstd).\n"
                    },
                    "enabled": {
                        "type": "boolean",
                        "description": "Whether the backup job is enabled.\n"
                    },
                    "excludePaths": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of paths to exclude from the backup.\n"
                    },
                    "fleecing": {
                        "$ref": "#/types/proxmoxve:backup/JobFleecing:JobFleecing",
                        "description": "Fleecing configuration for the backup job.\n"
                    },
                    "ionice": {
                        "type": "integer",
                        "description": "I/O priority (0-8).\n"
                    },
                    "lockwait": {
                        "type": "integer",
                        "description": "Maximum wait time in minutes for the global lock.\n"
                    },
                    "mailnotification": {
                        "type": "string",
                        "description": "Email notification setting (always or failure).\n"
                    },
                    "mailtos": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of email addresses to send notifications to.\n"
                    },
                    "maxfiles": {
                        "type": "integer",
                        "description": "Deprecated: use\u003cspan pulumi-lang-nodejs=\" pruneBackups \" pulumi-lang-dotnet=\" PruneBackups \" pulumi-lang-go=\" pruneBackups \" pulumi-lang-python=\" prune_backups \" pulumi-lang-yaml=\" pruneBackups \" pulumi-lang-java=\" pruneBackups \"\u003e pruneBackups \u003c/span\u003einstead. Maximum number of backup files per guest.\n"
                    },
                    "mode": {
                        "type": "string",
                        "description": "The backup mode (snapshot, suspend, or stop).\n"
                    },
                    "node": {
                        "type": "string",
                        "description": "The cluster node name to limit the backup job to.\n"
                    },
                    "notesTemplate": {
                        "type": "string",
                        "description": "Template for notes attached to the backup.\n"
                    },
                    "pbsChangeDetectionMode": {
                        "type": "string",
                        "description": "PBS change detection mode (legacy, data, or metadata).\n"
                    },
                    "performance": {
                        "$ref": "#/types/proxmoxve:backup/JobPerformance:JobPerformance",
                        "description": "Performance-related settings for the backup job.\n"
                    },
                    "pigz": {
                        "type": "integer",
                        "description": "Number of pigz threads (0 disables, 1 uses single-threaded gzip).\n"
                    },
                    "pool": {
                        "type": "string",
                        "description": "Limit backup to guests in the specified pool.\n"
                    },
                    "protected": {
                        "type": "boolean",
                        "description": "Whether the backup should be marked as protected.\n"
                    },
                    "pruneBackups": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "Retention options as a map of keep policies (e.g. keep-last = \"3\", keep-weekly = \"2\").\n"
                    },
                    "remove": {
                        "type": "boolean",
                        "description": "Whether to remove old backups if there are more than maxfiles.\n"
                    },
                    "repeatMissed": {
                        "type": "boolean",
                        "description": "Whether to repeat missed backup jobs as soon as possible.\n"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The identifier of the backup job.\n"
                    },
                    "schedule": {
                        "type": "string",
                        "description": "Backup schedule in systemd calendar event format.\n"
                    },
                    "script": {
                        "type": "string",
                        "description": "Path to a script to execute before/after the backup job.\n"
                    },
                    "starttime": {
                        "type": "string",
                        "description": "The scheduled start time (HH:MM).\n"
                    },
                    "stdexcludes": {
                        "type": "boolean",
                        "description": "Whether to exclude common temporary files from the backup.\n"
                    },
                    "stopwait": {
                        "type": "integer",
                        "description": "Maximum wait time in minutes for a guest to stop.\n"
                    },
                    "storage": {
                        "type": "string",
                        "description": "The storage identifier for the backup.\n"
                    },
                    "tmpdir": {
                        "type": "string",
                        "description": "Path to the temporary directory for the backup job.\n"
                    },
                    "vmids": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of guest VM/CT IDs to include in the backup job.\n"
                    },
                    "zstd": {
                        "type": "integer",
                        "description": "Number of zstd threads (0 uses half of available cores).\n"
                    }
                },
                "type": "object"
            }
        },
        "proxmoxve:cloned/vm:Vm": {
            "description": "\u003e **EXPERIMENTAL**\n\nClone a VM from a source template/VM and manage only explicitly-defined configuration. This resource uses explicit opt-in management: only configuration blocks and devices explicitly listed in your Terraform code are managed. Inherited settings from the template are preserved unless explicitly overridden or deleted. Removing a configuration from Terraform stops managing it but does not delete it from the VM.\n\n## Limitations\n\nThis resource intentionally manages only a subset of VM configuration. The following are currently not managed and must be inherited from the source template (or managed via \u003cspan pulumi-lang-nodejs=\"`proxmoxve.Vm`\" pulumi-lang-dotnet=\"`proxmoxve.Vm`\" pulumi-lang-go=\"`Vm`\" pulumi-lang-python=\"`Vm`\" pulumi-lang-yaml=\"`proxmoxve.Vm`\" pulumi-lang-java=\"`proxmoxve.Vm`\"\u003e`proxmoxve.Vm`\u003c/span\u003e with a \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 block):\n\n- BIOS / machine / boot order\n- EFI disk / secure boot settings\n- TPM state\n- Cloud-init / initialization\n- QEMU guest agent configuration\n- PCI/USB passthrough, serial/audio devices, watchdog, VirtioFS\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// Example 1: Basic clone with minimal management\nconst basicClone = new proxmoxve.cloned.Vm(\"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.cloned.Vm(\"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.cloned.Vm(\"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.cloned.Vm(\"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.cloned.Vm(\"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.cloned.Vm(\"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.cloned.Vm(\"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.cloned.Vm(\"imported\", {\n    resourceId: \"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.cloned.Vm(\"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.cloned.Vm(\"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.cloned.Vm(\"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.cloned.Vm(\"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.cloned.Vm(\"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.cloned.Vm(\"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.cloned.Vm(\"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.cloned.Vm(\"imported\",\n    resource_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.Cloned.Vm(\"basic_clone\", new()\n    {\n        NodeName = \"pve\",\n        Name = \"basic-clone\",\n        Clone = new ProxmoxVE.Cloned.Inputs.VmCloneArgs\n        {\n            SourceVmId = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:6,18-21)),\n            Full = true,\n        },\n        Cpu = new ProxmoxVE.Cloned.Inputs.VmCpuArgs\n        {\n            Cores = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(4) (example.pp:12,13-14)),\n        },\n    });\n\n    // Example 2: Clone with explicit network management\n    var networkManaged = new ProxmoxVE.Cloned.Vm(\"network_managed\", new()\n    {\n        NodeName = \"pve\",\n        Name = \"network-clone\",\n        Clone = new ProxmoxVE.Cloned.Inputs.VmCloneArgs\n        {\n            SourceVmId = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:23,18-21)),\n        },\n        Network = \n        {\n            { \"net0\", new ProxmoxVE.Cloned.Inputs.VmNetworkArgs\n            {\n                Bridge = \"vmbr0\",\n                Model = \"virtio\",\n                Tag = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:29,16-19)),\n            } },\n            { \"net1\", new ProxmoxVE.Cloned.Inputs.VmNetworkArgs\n            {\n                Bridge = \"vmbr1\",\n                Model = \"virtio\",\n                Firewall = true,\n                MacAddress = \"BC:24:11:2E:C5:00\",\n            } },\n        },\n        Cpu = new ProxmoxVE.Cloned.Inputs.VmCpuArgs\n        {\n            Cores = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2) (example.pp:40,13-14)),\n        },\n    });\n\n    // Example 3: Clone with disk management\n    var diskManaged = new ProxmoxVE.Cloned.Vm(\"disk_managed\", new()\n    {\n        NodeName = \"pve\",\n        Name = \"disk-clone\",\n        Clone = new ProxmoxVE.Cloned.Inputs.VmCloneArgs\n        {\n            SourceVmId = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:51,23-26)),\n            TargetDatastore = \"local-lvm\",\n        },\n        Disk = \n        {\n            { \"scsi0\", new ProxmoxVE.Cloned.Inputs.VmDiskArgs\n            {\n                DatastoreId = \"local-lvm\",\n                SizeGb = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(50) (example.pp:57,21-23)),\n                Discard = \"on\",\n                Ssd = true,\n            } },\n            { \"scsi1\", new ProxmoxVE.Cloned.Inputs.VmDiskArgs\n            {\n                DatastoreId = \"local-lvm\",\n                SizeGb = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:63,21-24)),\n                Backup = false,\n            } },\n        },\n    });\n\n    // Example 4: Clone with explicit device deletion\n    var selectiveDelete = new ProxmoxVE.Cloned.Vm(\"selective_delete\", new()\n    {\n        NodeName = \"pve\",\n        Name = \"minimal-clone\",\n        Clone = new ProxmoxVE.Cloned.Inputs.VmCloneArgs\n        {\n            SourceVmId = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:76,18-21)),\n        },\n        Network = \n        {\n            { \"net0\", new ProxmoxVE.Cloned.Inputs.VmNetworkArgs\n            {\n                Bridge = \"vmbr0\",\n                Model = \"virtio\",\n            } },\n        },\n        Delete = new ProxmoxVE.Cloned.Inputs.VmDeleteArgs\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.Cloned.Vm(\"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.Cloned.Inputs.VmCloneArgs\n        {\n            SourceVmId = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:98,23-26)),\n            SourceNodeName = \"pve\",\n            Full = true,\n            TargetDatastore = \"local-lvm\",\n            Retries = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(3) (example.pp:102,23-24)),\n        },\n        Cpu = new ProxmoxVE.Cloned.Inputs.VmCpuArgs\n        {\n            Cores = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(8) (example.pp:105,20-21)),\n            Sockets = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1) (example.pp:106,20-21)),\n            Architecture = \"x86_64\",\n            Type = \"host\",\n        },\n        Memory = new ProxmoxVE.Cloned.Inputs.VmMemoryArgs\n        {\n            Size = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(8192) (example.pp:111,15-19)),\n            Balloon = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2048) (example.pp:112,15-19)),\n            Shares = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2000) (example.pp:113,15-19)),\n        },\n        Network = \n        {\n            { \"net0\", new ProxmoxVE.Cloned.Inputs.VmNetworkArgs\n            {\n                Bridge = \"vmbr0\",\n                Model = \"virtio\",\n                Tag = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:119,19-22)),\n                Firewall = true,\n                RateLimit = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:121,19-22)),\n            } },\n        },\n        Disk = \n        {\n            { \"scsi0\", new ProxmoxVE.Cloned.Inputs.VmDiskArgs\n            {\n                DatastoreId = \"local-lvm\",\n                SizeGb = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:128,21-24)),\n                Discard = \"on\",\n                Iothread = true,\n                Ssd = true,\n                Cache = \"writethrough\",\n            } },\n        },\n        Vga = new ProxmoxVE.Cloned.Inputs.VmVgaArgs\n        {\n            Type = \"std\",\n            Memory = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(16) (example.pp:137,14-16)),\n        },\n        Delete = new ProxmoxVE.Cloned.Inputs.VmDeleteArgs\n        {\n            Disks = new[]\n            {\n                \"ide2\",\n            },\n        },\n        StopOnDestroy = false,\n        PurgeOnDestroy = true,\n        DeleteUnreferencedDisksOnDestroy = false,\n        Timeouts = new ProxmoxVE.Cloned.Inputs.VmTimeoutsArgs\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.Cloned.Vm(\"test_clone\", new()\n    {\n        NodeName = \"pve\",\n        Name = \"test-vm\",\n        Clone = new ProxmoxVE.Cloned.Inputs.VmCloneArgs\n        {\n            SourceVmId = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:162,18-21)),\n            Full = false,\n        },\n        Cpu = new ProxmoxVE.Cloned.Inputs.VmCpuArgs\n        {\n            Cores = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2) (example.pp:167,13-14)),\n        },\n        Network = \n        {\n            { \"net0\", new ProxmoxVE.Cloned.Inputs.VmNetworkArgs\n            {\n                Bridge = \"vmbr0\",\n                Model = \"virtio\",\n            } },\n        },\n    });\n\n    // Example 7: Clone with pool assignment\n    var pooledClone = new ProxmoxVE.Cloned.Vm(\"pooled_clone\", new()\n    {\n        NodeName = \"pve\",\n        Name = \"pooled-vm\",\n        Clone = new ProxmoxVE.Cloned.Inputs.VmCloneArgs\n        {\n            SourceVmId = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:184,18-21)),\n            PoolId = \"production\",\n        },\n        Cpu = new ProxmoxVE.Cloned.Inputs.VmCpuArgs\n        {\n            Cores = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(4) (example.pp:188,13-14)),\n        },\n    });\n\n    // Example 8: Import existing cloned VM\n    var imported = new ProxmoxVE.Cloned.Vm(\"imported\", new()\n    {\n        ResourceId = \"123\",\n        NodeName = \"pve\",\n        Clone = new ProxmoxVE.Cloned.Inputs.VmCloneArgs\n        {\n            SourceVmId = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:199,18-21)),\n        },\n        Cpu = new ProxmoxVE.Cloned.Inputs.VmCpuArgs\n        {\n            Cores = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(4) (example.pp:203,13-14)),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/go/proxmoxve/cloned\"\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 := cloned.NewVm(ctx, \"basic_clone\", \u0026cloned.VmArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tName:     pulumi.String(\"basic-clone\"),\n\t\t\tClone: \u0026cloned.VmCloneArgs{\n\t\t\t\tSourceVmId: pulumi.Int(100),\n\t\t\t\tFull:       pulumi.Bool(true),\n\t\t\t},\n\t\t\tCpu: \u0026cloned.VmCpuArgs{\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 = cloned.NewVm(ctx, \"network_managed\", \u0026cloned.VmArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tName:     pulumi.String(\"network-clone\"),\n\t\t\tClone: \u0026cloned.VmCloneArgs{\n\t\t\t\tSourceVmId: pulumi.Int(100),\n\t\t\t},\n\t\t\tNetwork: cloned.VmNetworkMap{\n\t\t\t\t\"net0\": \u0026cloned.VmNetworkArgs{\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\": \u0026cloned.VmNetworkArgs{\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: \u0026cloned.VmCpuArgs{\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 = cloned.NewVm(ctx, \"disk_managed\", \u0026cloned.VmArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tName:     pulumi.String(\"disk-clone\"),\n\t\t\tClone: \u0026cloned.VmCloneArgs{\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: cloned.VmDiskMap{\n\t\t\t\t\"scsi0\": \u0026cloned.VmDiskArgs{\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\": \u0026cloned.VmDiskArgs{\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 = cloned.NewVm(ctx, \"selective_delete\", \u0026cloned.VmArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tName:     pulumi.String(\"minimal-clone\"),\n\t\t\tClone: \u0026cloned.VmCloneArgs{\n\t\t\t\tSourceVmId: pulumi.Int(100),\n\t\t\t},\n\t\t\tNetwork: cloned.VmNetworkMap{\n\t\t\t\t\"net0\": \u0026cloned.VmNetworkArgs{\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: \u0026cloned.VmDeleteArgs{\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 = cloned.NewVm(ctx, \"full_featured\", \u0026cloned.VmArgs{\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: \u0026cloned.VmCloneArgs{\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: \u0026cloned.VmCpuArgs{\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: \u0026cloned.VmMemoryArgs{\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: cloned.VmNetworkMap{\n\t\t\t\t\"net0\": \u0026cloned.VmNetworkArgs{\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: cloned.VmDiskMap{\n\t\t\t\t\"scsi0\": \u0026cloned.VmDiskArgs{\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: \u0026cloned.VmVgaArgs{\n\t\t\t\tType:   pulumi.String(\"std\"),\n\t\t\t\tMemory: pulumi.Int(16),\n\t\t\t},\n\t\t\tDelete: \u0026cloned.VmDeleteArgs{\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: \u0026cloned.VmTimeoutsArgs{\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 = cloned.NewVm(ctx, \"test_clone\", \u0026cloned.VmArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tName:     pulumi.String(\"test-vm\"),\n\t\t\tClone: \u0026cloned.VmCloneArgs{\n\t\t\t\tSourceVmId: pulumi.Int(100),\n\t\t\t\tFull:       pulumi.Bool(false),\n\t\t\t},\n\t\t\tCpu: \u0026cloned.VmCpuArgs{\n\t\t\t\tCores: pulumi.Int(2),\n\t\t\t},\n\t\t\tNetwork: cloned.VmNetworkMap{\n\t\t\t\t\"net0\": \u0026cloned.VmNetworkArgs{\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 = cloned.NewVm(ctx, \"pooled_clone\", \u0026cloned.VmArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tName:     pulumi.String(\"pooled-vm\"),\n\t\t\tClone: \u0026cloned.VmCloneArgs{\n\t\t\t\tSourceVmId: pulumi.Int(100),\n\t\t\t\tPoolId:     pulumi.String(\"production\"),\n\t\t\t},\n\t\t\tCpu: \u0026cloned.VmCpuArgs{\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 = cloned.NewVm(ctx, \"imported\", \u0026cloned.VmArgs{\n\t\t\tResourceId: pulumi.String(\"123\"),\n\t\t\tNodeName:   pulumi.String(\"pve\"),\n\t\t\tClone: \u0026cloned.VmCloneArgs{\n\t\t\t\tSourceVmId: pulumi.Int(100),\n\t\t\t},\n\t\t\tCpu: \u0026cloned.VmCpuArgs{\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.cloned.Vm;\nimport io.muehlbachler.pulumi.proxmoxve.cloned.VmArgs;\nimport com.pulumi.proxmoxve.cloned.inputs.VmCloneArgs;\nimport com.pulumi.proxmoxve.cloned.inputs.VmCpuArgs;\nimport com.pulumi.proxmoxve.cloned.inputs.VmDeleteArgs;\nimport com.pulumi.proxmoxve.cloned.inputs.VmMemoryArgs;\nimport com.pulumi.proxmoxve.cloned.inputs.VmVgaArgs;\nimport com.pulumi.proxmoxve.cloned.inputs.VmTimeoutsArgs;\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 Vm(\"basicClone\", VmArgs.builder()\n            .nodeName(\"pve\")\n            .name(\"basic-clone\")\n            .clone(VmCloneArgs.builder()\n                .sourceVmId(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:6,18-21)))\n                .full(true)\n                .build())\n            .cpu(VmCpuArgs.builder()\n                .cores(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(4) (example.pp:12,13-14)))\n                .build())\n            .build());\n\n        // Example 2: Clone with explicit network management\n        var networkManaged = new Vm(\"networkManaged\", VmArgs.builder()\n            .nodeName(\"pve\")\n            .name(\"network-clone\")\n            .clone(VmCloneArgs.builder()\n                .sourceVmId(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:23,18-21)))\n                .build())\n            .network(Map.ofEntries(\n                Map.entry(\"net0\", VmNetworkArgs.builder()\n                    .bridge(\"vmbr0\")\n                    .model(\"virtio\")\n                    .tag(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:29,16-19)))\n                    .build()),\n                Map.entry(\"net1\", VmNetworkArgs.builder()\n                    .bridge(\"vmbr1\")\n                    .model(\"virtio\")\n                    .firewall(true)\n                    .macAddress(\"BC:24:11:2E:C5:00\")\n                    .build())\n            ))\n            .cpu(VmCpuArgs.builder()\n                .cores(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2) (example.pp:40,13-14)))\n                .build())\n            .build());\n\n        // Example 3: Clone with disk management\n        var diskManaged = new Vm(\"diskManaged\", VmArgs.builder()\n            .nodeName(\"pve\")\n            .name(\"disk-clone\")\n            .clone(VmCloneArgs.builder()\n                .sourceVmId(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:51,23-26)))\n                .targetDatastore(\"local-lvm\")\n                .build())\n            .disk(Map.ofEntries(\n                Map.entry(\"scsi0\", VmDiskArgs.builder()\n                    .datastoreId(\"local-lvm\")\n                    .sizeGb(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(50) (example.pp:57,21-23)))\n                    .discard(\"on\")\n                    .ssd(true)\n                    .build()),\n                Map.entry(\"scsi1\", VmDiskArgs.builder()\n                    .datastoreId(\"local-lvm\")\n                    .sizeGb(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:63,21-24)))\n                    .backup(false)\n                    .build())\n            ))\n            .build());\n\n        // Example 4: Clone with explicit device deletion\n        var selectiveDelete = new Vm(\"selectiveDelete\", VmArgs.builder()\n            .nodeName(\"pve\")\n            .name(\"minimal-clone\")\n            .clone(VmCloneArgs.builder()\n                .sourceVmId(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:76,18-21)))\n                .build())\n            .network(Map.of(\"net0\", VmNetworkArgs.builder()\n                .bridge(\"vmbr0\")\n                .model(\"virtio\")\n                .build()))\n            .delete(VmDeleteArgs.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 Vm(\"fullFeatured\", VmArgs.builder()\n            .nodeName(\"pve\")\n            .name(\"production-vm\")\n            .description(\"Production VM cloned from template\")\n            .tags(            \n                \"production\",\n                \"web\")\n            .clone(VmCloneArgs.builder()\n                .sourceVmId(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:98,23-26)))\n                .sourceNodeName(\"pve\")\n                .full(true)\n                .targetDatastore(\"local-lvm\")\n                .retries(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(3) (example.pp:102,23-24)))\n                .build())\n            .cpu(VmCpuArgs.builder()\n                .cores(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(8) (example.pp:105,20-21)))\n                .sockets(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1) (example.pp:106,20-21)))\n                .architecture(\"x86_64\")\n                .type(\"host\")\n                .build())\n            .memory(VmMemoryArgs.builder()\n                .size(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(8192) (example.pp:111,15-19)))\n                .balloon(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2048) (example.pp:112,15-19)))\n                .shares(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2000) (example.pp:113,15-19)))\n                .build())\n            .network(Map.of(\"net0\", VmNetworkArgs.builder()\n                .bridge(\"vmbr0\")\n                .model(\"virtio\")\n                .tag(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:119,19-22)))\n                .firewall(true)\n                .rateLimit(100.0)\n                .build()))\n            .disk(Map.of(\"scsi0\", VmDiskArgs.builder()\n                .datastoreId(\"local-lvm\")\n                .sizeGb(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:128,21-24)))\n                .discard(\"on\")\n                .iothread(true)\n                .ssd(true)\n                .cache(\"writethrough\")\n                .build()))\n            .vga(VmVgaArgs.builder()\n                .type(\"std\")\n                .memory(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(16) (example.pp:137,14-16)))\n                .build())\n            .delete(VmDeleteArgs.builder()\n                .disks(\"ide2\")\n                .build())\n            .stopOnDestroy(false)\n            .purgeOnDestroy(true)\n            .deleteUnreferencedDisksOnDestroy(false)\n            .timeouts(VmTimeoutsArgs.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 Vm(\"testClone\", VmArgs.builder()\n            .nodeName(\"pve\")\n            .name(\"test-vm\")\n            .clone(VmCloneArgs.builder()\n                .sourceVmId(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:162,18-21)))\n                .full(false)\n                .build())\n            .cpu(VmCpuArgs.builder()\n                .cores(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2) (example.pp:167,13-14)))\n                .build())\n            .network(Map.of(\"net0\", VmNetworkArgs.builder()\n                .bridge(\"vmbr0\")\n                .model(\"virtio\")\n                .build()))\n            .build());\n\n        // Example 7: Clone with pool assignment\n        var pooledClone = new Vm(\"pooledClone\", VmArgs.builder()\n            .nodeName(\"pve\")\n            .name(\"pooled-vm\")\n            .clone(VmCloneArgs.builder()\n                .sourceVmId(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:184,18-21)))\n                .poolId(\"production\")\n                .build())\n            .cpu(VmCpuArgs.builder()\n                .cores(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(4) (example.pp:188,13-14)))\n                .build())\n            .build());\n\n        // Example 8: Import existing cloned VM\n        var imported = new Vm(\"imported\", VmArgs.builder()\n            .resourceId(\"123\")\n            .nodeName(\"pve\")\n            .clone(VmCloneArgs.builder()\n                .sourceVmId(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:199,18-21)))\n                .build())\n            .cpu(VmCpuArgs.builder()\n                .cores(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(4) (example.pp:203,13-14)))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Example 1: Basic clone with minimal management\n  basicClone:\n    type: proxmoxve:cloned:Vm\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:cloned:Vm\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:cloned:Vm\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:cloned:Vm\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:cloned:Vm\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:cloned:Vm\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:cloned:Vm\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:cloned:Vm\n    properties:\n      resourceId: 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:cloned/VmCdrom:VmCdrom"
                    },
                    "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:cloned/VmClone:VmClone",
                    "description": "Clone settings. Changes require recreation.\n"
                },
                "cpu": {
                    "$ref": "#/types/proxmoxve:cloned/VmCpu:VmCpu",
                    "description": "The CPU configuration.\n"
                },
                "delete": {
                    "$ref": "#/types/proxmoxve:cloned/VmDelete:VmDelete",
                    "description": "Explicit deletions to perform after cloning/updating. Entries persist across applies.\n"
                },
                "deleteUnreferencedDisksOnDestroy": {
                    "type": "boolean",
                    "description": "Delete unreferenced disks on destroy. WARNING: When set to true, any disks not explicitly managed by Terraform will be deleted on destroy, potentially causing data loss. Defaults to false for safety.\n"
                },
                "description": {
                    "type": "string",
                    "description": "Optional VM description applied after cloning.\n"
                },
                "disk": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/types/proxmoxve:cloned/VmDisk:VmDisk"
                    },
                    "description": "Disks keyed by slot (scsi0, virtio0, sata0, ide0, ...). Only listed keys are managed.\n"
                },
                "memory": {
                    "$ref": "#/types/proxmoxve:cloned/VmMemory:VmMemory",
                    "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:cloned/VmNetwork:VmNetwork"
                    },
                    "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The VM identifier in the Proxmox cluster.\n"
                },
                "rng": {
                    "$ref": "#/types/proxmoxve:cloned/VmRng:VmRng",
                    "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"
                },
                "started": {
                    "type": "boolean",
                    "description": "Whether the VM should be started after cloning. Defaults to true.\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:cloned/VmTimeouts:VmTimeouts"
                },
                "vga": {
                    "$ref": "#/types/proxmoxve:cloned/VmVga:VmVga",
                    "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": [
                "clone",
                "deleteUnreferencedDisksOnDestroy",
                "resourceId",
                "name",
                "nodeName",
                "purgeOnDestroy",
                "started",
                "stopOnDestroy"
            ],
            "inputProperties": {
                "cdrom": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/types/proxmoxve:cloned/VmCdrom:VmCdrom"
                    },
                    "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:cloned/VmClone:VmClone",
                    "description": "Clone settings. Changes require recreation.\n"
                },
                "cpu": {
                    "$ref": "#/types/proxmoxve:cloned/VmCpu:VmCpu",
                    "description": "The CPU configuration.\n"
                },
                "delete": {
                    "$ref": "#/types/proxmoxve:cloned/VmDelete:VmDelete",
                    "description": "Explicit deletions to perform after cloning/updating. Entries persist across applies.\n"
                },
                "deleteUnreferencedDisksOnDestroy": {
                    "type": "boolean",
                    "description": "Delete unreferenced disks on destroy. WARNING: When set to true, any disks not explicitly managed by Terraform will be deleted on destroy, potentially causing data loss. Defaults to false for safety.\n"
                },
                "description": {
                    "type": "string",
                    "description": "Optional VM description applied after cloning.\n"
                },
                "disk": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/types/proxmoxve:cloned/VmDisk:VmDisk"
                    },
                    "description": "Disks keyed by slot (scsi0, virtio0, sata0, ide0, ...). Only listed keys are managed.\n"
                },
                "memory": {
                    "$ref": "#/types/proxmoxve:cloned/VmMemory:VmMemory",
                    "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:cloned/VmNetwork:VmNetwork"
                    },
                    "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The VM identifier in the Proxmox cluster.\n"
                },
                "rng": {
                    "$ref": "#/types/proxmoxve:cloned/VmRng:VmRng",
                    "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"
                },
                "started": {
                    "type": "boolean",
                    "description": "Whether the VM should be started after cloning. Defaults to true.\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:cloned/VmTimeouts:VmTimeouts"
                },
                "vga": {
                    "$ref": "#/types/proxmoxve:cloned/VmVga:VmVga",
                    "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": [
                "clone",
                "nodeName"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Vm resources.\n",
                "properties": {
                    "cdrom": {
                        "type": "object",
                        "additionalProperties": {
                            "$ref": "#/types/proxmoxve:cloned/VmCdrom:VmCdrom"
                        },
                        "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:cloned/VmClone:VmClone",
                        "description": "Clone settings. Changes require recreation.\n"
                    },
                    "cpu": {
                        "$ref": "#/types/proxmoxve:cloned/VmCpu:VmCpu",
                        "description": "The CPU configuration.\n"
                    },
                    "delete": {
                        "$ref": "#/types/proxmoxve:cloned/VmDelete:VmDelete",
                        "description": "Explicit deletions to perform after cloning/updating. Entries persist across applies.\n"
                    },
                    "deleteUnreferencedDisksOnDestroy": {
                        "type": "boolean",
                        "description": "Delete unreferenced disks on destroy. WARNING: When set to true, any disks not explicitly managed by Terraform will be deleted on destroy, potentially causing data loss. Defaults to false for safety.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "Optional VM description applied after cloning.\n"
                    },
                    "disk": {
                        "type": "object",
                        "additionalProperties": {
                            "$ref": "#/types/proxmoxve:cloned/VmDisk:VmDisk"
                        },
                        "description": "Disks keyed by slot (scsi0, virtio0, sata0, ide0, ...). Only listed keys are managed.\n"
                    },
                    "memory": {
                        "$ref": "#/types/proxmoxve:cloned/VmMemory:VmMemory",
                        "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:cloned/VmNetwork:VmNetwork"
                        },
                        "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"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The VM identifier in the Proxmox cluster.\n"
                    },
                    "rng": {
                        "$ref": "#/types/proxmoxve:cloned/VmRng:VmRng",
                        "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"
                    },
                    "started": {
                        "type": "boolean",
                        "description": "Whether the VM should be started after cloning. Defaults to true.\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:cloned/VmTimeouts:VmTimeouts"
                    },
                    "vga": {
                        "$ref": "#/types/proxmoxve:cloned/VmVga:VmVga",
                        "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"
            },
            "aliases": [
                {
                    "type": "proxmox_virtual_environment_cloned_vm"
                }
            ]
        },
        "proxmoxve:cloned/vmLegacy:VmLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.cloned.Vm`\" pulumi-lang-dotnet=\"`proxmoxve.cloned.Vm`\" pulumi-lang-go=\"`cloned.Vm`\" pulumi-lang-python=\"`cloned.Vm`\" pulumi-lang-yaml=\"`proxmoxve.cloned.Vm`\" pulumi-lang-java=\"`proxmoxve.cloned.Vm`\"\u003e`proxmoxve.cloned.Vm`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\n\u003e **EXPERIMENTAL**\n\nClone a VM from a source template/VM and manage only explicitly-defined configuration. This resource uses explicit opt-in management: only configuration blocks and devices explicitly listed in your Terraform code are managed. Inherited settings from the template are preserved unless explicitly overridden or deleted. Removing a configuration from Terraform stops managing it but does not delete it from the VM.\n\n## Limitations\n\nThis resource intentionally manages only a subset of VM configuration. The following are currently not managed and must be inherited from the source template (or managed via \u003cspan pulumi-lang-nodejs=\"`proxmoxve.VmLegacy`\" pulumi-lang-dotnet=\"`proxmoxve.VmLegacy`\" pulumi-lang-go=\"`VmLegacy`\" pulumi-lang-python=\"`VmLegacy`\" pulumi-lang-yaml=\"`proxmoxve.VmLegacy`\" pulumi-lang-java=\"`proxmoxve.VmLegacy`\"\u003e`proxmoxve.VmLegacy`\u003c/span\u003e with a \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 block):\n\n- BIOS / machine / boot order\n- EFI disk / secure boot settings\n- TPM state\n- Cloud-init / initialization\n- QEMU guest agent configuration\n- PCI/USB passthrough, serial/audio devices, watchdog, VirtioFS\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// Example 1: Basic clone with minimal management\nconst basicClone = new proxmoxve.cloned.VmLegacy(\"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.cloned.VmLegacy(\"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.cloned.VmLegacy(\"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.cloned.VmLegacy(\"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.cloned.VmLegacy(\"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.cloned.VmLegacy(\"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.cloned.VmLegacy(\"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.cloned.VmLegacy(\"imported\", {\n    resourceId: \"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.cloned.VmLegacy(\"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.cloned.VmLegacy(\"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.cloned.VmLegacy(\"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.cloned.VmLegacy(\"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.cloned.VmLegacy(\"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.cloned.VmLegacy(\"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.cloned.VmLegacy(\"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.cloned.VmLegacy(\"imported\",\n    resource_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.Cloned.VmLegacy(\"basic_clone\", new()\n    {\n        NodeName = \"pve\",\n        Name = \"basic-clone\",\n        Clone = new ProxmoxVE.Cloned.Inputs.VmLegacyCloneArgs\n        {\n            SourceVmId = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:6,18-21)),\n            Full = true,\n        },\n        Cpu = new ProxmoxVE.Cloned.Inputs.VmLegacyCpuArgs\n        {\n            Cores = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(4) (example.pp:12,13-14)),\n        },\n    });\n\n    // Example 2: Clone with explicit network management\n    var networkManaged = new ProxmoxVE.Cloned.VmLegacy(\"network_managed\", new()\n    {\n        NodeName = \"pve\",\n        Name = \"network-clone\",\n        Clone = new ProxmoxVE.Cloned.Inputs.VmLegacyCloneArgs\n        {\n            SourceVmId = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:23,18-21)),\n        },\n        Network = \n        {\n            { \"net0\", new ProxmoxVE.Cloned.Inputs.VmLegacyNetworkArgs\n            {\n                Bridge = \"vmbr0\",\n                Model = \"virtio\",\n                Tag = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:29,16-19)),\n            } },\n            { \"net1\", new ProxmoxVE.Cloned.Inputs.VmLegacyNetworkArgs\n            {\n                Bridge = \"vmbr1\",\n                Model = \"virtio\",\n                Firewall = true,\n                MacAddress = \"BC:24:11:2E:C5:00\",\n            } },\n        },\n        Cpu = new ProxmoxVE.Cloned.Inputs.VmLegacyCpuArgs\n        {\n            Cores = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2) (example.pp:40,13-14)),\n        },\n    });\n\n    // Example 3: Clone with disk management\n    var diskManaged = new ProxmoxVE.Cloned.VmLegacy(\"disk_managed\", new()\n    {\n        NodeName = \"pve\",\n        Name = \"disk-clone\",\n        Clone = new ProxmoxVE.Cloned.Inputs.VmLegacyCloneArgs\n        {\n            SourceVmId = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:51,23-26)),\n            TargetDatastore = \"local-lvm\",\n        },\n        Disk = \n        {\n            { \"scsi0\", new ProxmoxVE.Cloned.Inputs.VmLegacyDiskArgs\n            {\n                DatastoreId = \"local-lvm\",\n                SizeGb = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(50) (example.pp:57,21-23)),\n                Discard = \"on\",\n                Ssd = true,\n            } },\n            { \"scsi1\", new ProxmoxVE.Cloned.Inputs.VmLegacyDiskArgs\n            {\n                DatastoreId = \"local-lvm\",\n                SizeGb = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:63,21-24)),\n                Backup = false,\n            } },\n        },\n    });\n\n    // Example 4: Clone with explicit device deletion\n    var selectiveDelete = new ProxmoxVE.Cloned.VmLegacy(\"selective_delete\", new()\n    {\n        NodeName = \"pve\",\n        Name = \"minimal-clone\",\n        Clone = new ProxmoxVE.Cloned.Inputs.VmLegacyCloneArgs\n        {\n            SourceVmId = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:76,18-21)),\n        },\n        Network = \n        {\n            { \"net0\", new ProxmoxVE.Cloned.Inputs.VmLegacyNetworkArgs\n            {\n                Bridge = \"vmbr0\",\n                Model = \"virtio\",\n            } },\n        },\n        Delete = new ProxmoxVE.Cloned.Inputs.VmLegacyDeleteArgs\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.Cloned.VmLegacy(\"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.Cloned.Inputs.VmLegacyCloneArgs\n        {\n            SourceVmId = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:98,23-26)),\n            SourceNodeName = \"pve\",\n            Full = true,\n            TargetDatastore = \"local-lvm\",\n            Retries = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(3) (example.pp:102,23-24)),\n        },\n        Cpu = new ProxmoxVE.Cloned.Inputs.VmLegacyCpuArgs\n        {\n            Cores = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(8) (example.pp:105,20-21)),\n            Sockets = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1) (example.pp:106,20-21)),\n            Architecture = \"x86_64\",\n            Type = \"host\",\n        },\n        Memory = new ProxmoxVE.Cloned.Inputs.VmLegacyMemoryArgs\n        {\n            Size = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(8192) (example.pp:111,15-19)),\n            Balloon = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2048) (example.pp:112,15-19)),\n            Shares = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2000) (example.pp:113,15-19)),\n        },\n        Network = \n        {\n            { \"net0\", new ProxmoxVE.Cloned.Inputs.VmLegacyNetworkArgs\n            {\n                Bridge = \"vmbr0\",\n                Model = \"virtio\",\n                Tag = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:119,19-22)),\n                Firewall = true,\n                RateLimit = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:121,19-22)),\n            } },\n        },\n        Disk = \n        {\n            { \"scsi0\", new ProxmoxVE.Cloned.Inputs.VmLegacyDiskArgs\n            {\n                DatastoreId = \"local-lvm\",\n                SizeGb = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:128,21-24)),\n                Discard = \"on\",\n                Iothread = true,\n                Ssd = true,\n                Cache = \"writethrough\",\n            } },\n        },\n        Vga = new ProxmoxVE.Cloned.Inputs.VmLegacyVgaArgs\n        {\n            Type = \"std\",\n            Memory = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(16) (example.pp:137,14-16)),\n        },\n        Delete = new ProxmoxVE.Cloned.Inputs.VmLegacyDeleteArgs\n        {\n            Disks = new[]\n            {\n                \"ide2\",\n            },\n        },\n        StopOnDestroy = false,\n        PurgeOnDestroy = true,\n        DeleteUnreferencedDisksOnDestroy = false,\n        Timeouts = new ProxmoxVE.Cloned.Inputs.VmLegacyTimeoutsArgs\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.Cloned.VmLegacy(\"test_clone\", new()\n    {\n        NodeName = \"pve\",\n        Name = \"test-vm\",\n        Clone = new ProxmoxVE.Cloned.Inputs.VmLegacyCloneArgs\n        {\n            SourceVmId = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:162,18-21)),\n            Full = false,\n        },\n        Cpu = new ProxmoxVE.Cloned.Inputs.VmLegacyCpuArgs\n        {\n            Cores = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2) (example.pp:167,13-14)),\n        },\n        Network = \n        {\n            { \"net0\", new ProxmoxVE.Cloned.Inputs.VmLegacyNetworkArgs\n            {\n                Bridge = \"vmbr0\",\n                Model = \"virtio\",\n            } },\n        },\n    });\n\n    // Example 7: Clone with pool assignment\n    var pooledClone = new ProxmoxVE.Cloned.VmLegacy(\"pooled_clone\", new()\n    {\n        NodeName = \"pve\",\n        Name = \"pooled-vm\",\n        Clone = new ProxmoxVE.Cloned.Inputs.VmLegacyCloneArgs\n        {\n            SourceVmId = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:184,18-21)),\n            PoolId = \"production\",\n        },\n        Cpu = new ProxmoxVE.Cloned.Inputs.VmLegacyCpuArgs\n        {\n            Cores = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(4) (example.pp:188,13-14)),\n        },\n    });\n\n    // Example 8: Import existing cloned VM\n    var imported = new ProxmoxVE.Cloned.VmLegacy(\"imported\", new()\n    {\n        ResourceId = \"123\",\n        NodeName = \"pve\",\n        Clone = new ProxmoxVE.Cloned.Inputs.VmLegacyCloneArgs\n        {\n            SourceVmId = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:199,18-21)),\n        },\n        Cpu = new ProxmoxVE.Cloned.Inputs.VmLegacyCpuArgs\n        {\n            Cores = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(4) (example.pp:203,13-14)),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/go/proxmoxve/cloned\"\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 := cloned.NewVmLegacy(ctx, \"basic_clone\", \u0026cloned.VmLegacyArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tName:     pulumi.String(\"basic-clone\"),\n\t\t\tClone: \u0026cloned.VmLegacyCloneArgs{\n\t\t\t\tSourceVmId: pulumi.Int(100),\n\t\t\t\tFull:       pulumi.Bool(true),\n\t\t\t},\n\t\t\tCpu: \u0026cloned.VmLegacyCpuArgs{\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 = cloned.NewVmLegacy(ctx, \"network_managed\", \u0026cloned.VmLegacyArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tName:     pulumi.String(\"network-clone\"),\n\t\t\tClone: \u0026cloned.VmLegacyCloneArgs{\n\t\t\t\tSourceVmId: pulumi.Int(100),\n\t\t\t},\n\t\t\tNetwork: cloned.VmLegacyNetworkMap{\n\t\t\t\t\"net0\": \u0026cloned.VmLegacyNetworkArgs{\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\": \u0026cloned.VmLegacyNetworkArgs{\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: \u0026cloned.VmLegacyCpuArgs{\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 = cloned.NewVmLegacy(ctx, \"disk_managed\", \u0026cloned.VmLegacyArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tName:     pulumi.String(\"disk-clone\"),\n\t\t\tClone: \u0026cloned.VmLegacyCloneArgs{\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: cloned.VmLegacyDiskMap{\n\t\t\t\t\"scsi0\": \u0026cloned.VmLegacyDiskArgs{\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\": \u0026cloned.VmLegacyDiskArgs{\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 = cloned.NewVmLegacy(ctx, \"selective_delete\", \u0026cloned.VmLegacyArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tName:     pulumi.String(\"minimal-clone\"),\n\t\t\tClone: \u0026cloned.VmLegacyCloneArgs{\n\t\t\t\tSourceVmId: pulumi.Int(100),\n\t\t\t},\n\t\t\tNetwork: cloned.VmLegacyNetworkMap{\n\t\t\t\t\"net0\": \u0026cloned.VmLegacyNetworkArgs{\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: \u0026cloned.VmLegacyDeleteArgs{\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 = cloned.NewVmLegacy(ctx, \"full_featured\", \u0026cloned.VmLegacyArgs{\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: \u0026cloned.VmLegacyCloneArgs{\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: \u0026cloned.VmLegacyCpuArgs{\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: \u0026cloned.VmLegacyMemoryArgs{\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: cloned.VmLegacyNetworkMap{\n\t\t\t\t\"net0\": \u0026cloned.VmLegacyNetworkArgs{\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: cloned.VmLegacyDiskMap{\n\t\t\t\t\"scsi0\": \u0026cloned.VmLegacyDiskArgs{\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: \u0026cloned.VmLegacyVgaArgs{\n\t\t\t\tType:   pulumi.String(\"std\"),\n\t\t\t\tMemory: pulumi.Int(16),\n\t\t\t},\n\t\t\tDelete: \u0026cloned.VmLegacyDeleteArgs{\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: \u0026cloned.VmLegacyTimeoutsArgs{\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 = cloned.NewVmLegacy(ctx, \"test_clone\", \u0026cloned.VmLegacyArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tName:     pulumi.String(\"test-vm\"),\n\t\t\tClone: \u0026cloned.VmLegacyCloneArgs{\n\t\t\t\tSourceVmId: pulumi.Int(100),\n\t\t\t\tFull:       pulumi.Bool(false),\n\t\t\t},\n\t\t\tCpu: \u0026cloned.VmLegacyCpuArgs{\n\t\t\t\tCores: pulumi.Int(2),\n\t\t\t},\n\t\t\tNetwork: cloned.VmLegacyNetworkMap{\n\t\t\t\t\"net0\": \u0026cloned.VmLegacyNetworkArgs{\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 = cloned.NewVmLegacy(ctx, \"pooled_clone\", \u0026cloned.VmLegacyArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tName:     pulumi.String(\"pooled-vm\"),\n\t\t\tClone: \u0026cloned.VmLegacyCloneArgs{\n\t\t\t\tSourceVmId: pulumi.Int(100),\n\t\t\t\tPoolId:     pulumi.String(\"production\"),\n\t\t\t},\n\t\t\tCpu: \u0026cloned.VmLegacyCpuArgs{\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 = cloned.NewVmLegacy(ctx, \"imported\", \u0026cloned.VmLegacyArgs{\n\t\t\tResourceId: pulumi.String(\"123\"),\n\t\t\tNodeName:   pulumi.String(\"pve\"),\n\t\t\tClone: \u0026cloned.VmLegacyCloneArgs{\n\t\t\t\tSourceVmId: pulumi.Int(100),\n\t\t\t},\n\t\t\tCpu: \u0026cloned.VmLegacyCpuArgs{\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.cloned.VmLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.cloned.VmLegacyArgs;\nimport com.pulumi.proxmoxve.cloned.inputs.VmLegacyCloneArgs;\nimport com.pulumi.proxmoxve.cloned.inputs.VmLegacyCpuArgs;\nimport com.pulumi.proxmoxve.cloned.inputs.VmLegacyDeleteArgs;\nimport com.pulumi.proxmoxve.cloned.inputs.VmLegacyMemoryArgs;\nimport com.pulumi.proxmoxve.cloned.inputs.VmLegacyVgaArgs;\nimport com.pulumi.proxmoxve.cloned.inputs.VmLegacyTimeoutsArgs;\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 VmLegacy(\"basicClone\", VmLegacyArgs.builder()\n            .nodeName(\"pve\")\n            .name(\"basic-clone\")\n            .clone(VmLegacyCloneArgs.builder()\n                .sourceVmId(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:6,18-21)))\n                .full(true)\n                .build())\n            .cpu(VmLegacyCpuArgs.builder()\n                .cores(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(4) (example.pp:12,13-14)))\n                .build())\n            .build());\n\n        // Example 2: Clone with explicit network management\n        var networkManaged = new VmLegacy(\"networkManaged\", VmLegacyArgs.builder()\n            .nodeName(\"pve\")\n            .name(\"network-clone\")\n            .clone(VmLegacyCloneArgs.builder()\n                .sourceVmId(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:23,18-21)))\n                .build())\n            .network(Map.ofEntries(\n                Map.entry(\"net0\", VmLegacyNetworkArgs.builder()\n                    .bridge(\"vmbr0\")\n                    .model(\"virtio\")\n                    .tag(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:29,16-19)))\n                    .build()),\n                Map.entry(\"net1\", VmLegacyNetworkArgs.builder()\n                    .bridge(\"vmbr1\")\n                    .model(\"virtio\")\n                    .firewall(true)\n                    .macAddress(\"BC:24:11:2E:C5:00\")\n                    .build())\n            ))\n            .cpu(VmLegacyCpuArgs.builder()\n                .cores(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2) (example.pp:40,13-14)))\n                .build())\n            .build());\n\n        // Example 3: Clone with disk management\n        var diskManaged = new VmLegacy(\"diskManaged\", VmLegacyArgs.builder()\n            .nodeName(\"pve\")\n            .name(\"disk-clone\")\n            .clone(VmLegacyCloneArgs.builder()\n                .sourceVmId(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:51,23-26)))\n                .targetDatastore(\"local-lvm\")\n                .build())\n            .disk(Map.ofEntries(\n                Map.entry(\"scsi0\", VmLegacyDiskArgs.builder()\n                    .datastoreId(\"local-lvm\")\n                    .sizeGb(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(50) (example.pp:57,21-23)))\n                    .discard(\"on\")\n                    .ssd(true)\n                    .build()),\n                Map.entry(\"scsi1\", VmLegacyDiskArgs.builder()\n                    .datastoreId(\"local-lvm\")\n                    .sizeGb(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:63,21-24)))\n                    .backup(false)\n                    .build())\n            ))\n            .build());\n\n        // Example 4: Clone with explicit device deletion\n        var selectiveDelete = new VmLegacy(\"selectiveDelete\", VmLegacyArgs.builder()\n            .nodeName(\"pve\")\n            .name(\"minimal-clone\")\n            .clone(VmLegacyCloneArgs.builder()\n                .sourceVmId(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:76,18-21)))\n                .build())\n            .network(Map.of(\"net0\", VmLegacyNetworkArgs.builder()\n                .bridge(\"vmbr0\")\n                .model(\"virtio\")\n                .build()))\n            .delete(VmLegacyDeleteArgs.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 VmLegacy(\"fullFeatured\", VmLegacyArgs.builder()\n            .nodeName(\"pve\")\n            .name(\"production-vm\")\n            .description(\"Production VM cloned from template\")\n            .tags(            \n                \"production\",\n                \"web\")\n            .clone(VmLegacyCloneArgs.builder()\n                .sourceVmId(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:98,23-26)))\n                .sourceNodeName(\"pve\")\n                .full(true)\n                .targetDatastore(\"local-lvm\")\n                .retries(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(3) (example.pp:102,23-24)))\n                .build())\n            .cpu(VmLegacyCpuArgs.builder()\n                .cores(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(8) (example.pp:105,20-21)))\n                .sockets(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1) (example.pp:106,20-21)))\n                .architecture(\"x86_64\")\n                .type(\"host\")\n                .build())\n            .memory(VmLegacyMemoryArgs.builder()\n                .size(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(8192) (example.pp:111,15-19)))\n                .balloon(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2048) (example.pp:112,15-19)))\n                .shares(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2000) (example.pp:113,15-19)))\n                .build())\n            .network(Map.of(\"net0\", VmLegacyNetworkArgs.builder()\n                .bridge(\"vmbr0\")\n                .model(\"virtio\")\n                .tag(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:119,19-22)))\n                .firewall(true)\n                .rateLimit(100.0)\n                .build()))\n            .disk(Map.of(\"scsi0\", VmLegacyDiskArgs.builder()\n                .datastoreId(\"local-lvm\")\n                .sizeGb(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:128,21-24)))\n                .discard(\"on\")\n                .iothread(true)\n                .ssd(true)\n                .cache(\"writethrough\")\n                .build()))\n            .vga(VmLegacyVgaArgs.builder()\n                .type(\"std\")\n                .memory(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(16) (example.pp:137,14-16)))\n                .build())\n            .delete(VmLegacyDeleteArgs.builder()\n                .disks(\"ide2\")\n                .build())\n            .stopOnDestroy(false)\n            .purgeOnDestroy(true)\n            .deleteUnreferencedDisksOnDestroy(false)\n            .timeouts(VmLegacyTimeoutsArgs.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 VmLegacy(\"testClone\", VmLegacyArgs.builder()\n            .nodeName(\"pve\")\n            .name(\"test-vm\")\n            .clone(VmLegacyCloneArgs.builder()\n                .sourceVmId(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:162,18-21)))\n                .full(false)\n                .build())\n            .cpu(VmLegacyCpuArgs.builder()\n                .cores(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2) (example.pp:167,13-14)))\n                .build())\n            .network(Map.of(\"net0\", VmLegacyNetworkArgs.builder()\n                .bridge(\"vmbr0\")\n                .model(\"virtio\")\n                .build()))\n            .build());\n\n        // Example 7: Clone with pool assignment\n        var pooledClone = new VmLegacy(\"pooledClone\", VmLegacyArgs.builder()\n            .nodeName(\"pve\")\n            .name(\"pooled-vm\")\n            .clone(VmLegacyCloneArgs.builder()\n                .sourceVmId(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:184,18-21)))\n                .poolId(\"production\")\n                .build())\n            .cpu(VmLegacyCpuArgs.builder()\n                .cores(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(4) (example.pp:188,13-14)))\n                .build())\n            .build());\n\n        // Example 8: Import existing cloned VM\n        var imported = new VmLegacy(\"imported\", VmLegacyArgs.builder()\n            .resourceId(\"123\")\n            .nodeName(\"pve\")\n            .clone(VmLegacyCloneArgs.builder()\n                .sourceVmId(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:199,18-21)))\n                .build())\n            .cpu(VmLegacyCpuArgs.builder()\n                .cores(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(4) (example.pp:203,13-14)))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Example 1: Basic clone with minimal management\n  basicClone:\n    type: proxmoxve:cloned:VmLegacy\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:cloned:VmLegacy\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:cloned:VmLegacy\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:cloned:VmLegacy\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:cloned:VmLegacy\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:cloned:VmLegacy\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:cloned:VmLegacy\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:cloned:VmLegacy\n    properties:\n      resourceId: 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:cloned/VmLegacyCdrom:VmLegacyCdrom"
                    },
                    "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:cloned/VmLegacyClone:VmLegacyClone",
                    "description": "Clone settings. Changes require recreation.\n"
                },
                "cpu": {
                    "$ref": "#/types/proxmoxve:cloned/VmLegacyCpu:VmLegacyCpu",
                    "description": "The CPU configuration.\n"
                },
                "delete": {
                    "$ref": "#/types/proxmoxve:cloned/VmLegacyDelete:VmLegacyDelete",
                    "description": "Explicit deletions to perform after cloning/updating. Entries persist across applies.\n"
                },
                "deleteUnreferencedDisksOnDestroy": {
                    "type": "boolean",
                    "description": "Delete unreferenced disks on destroy. WARNING: When set to true, any disks not explicitly managed by Terraform will be deleted on destroy, potentially causing data loss. Defaults to false for safety.\n"
                },
                "description": {
                    "type": "string",
                    "description": "Optional VM description applied after cloning.\n"
                },
                "disk": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/types/proxmoxve:cloned/VmLegacyDisk:VmLegacyDisk"
                    },
                    "description": "Disks keyed by slot (scsi0, virtio0, sata0, ide0, ...). Only listed keys are managed.\n"
                },
                "memory": {
                    "$ref": "#/types/proxmoxve:cloned/VmLegacyMemory:VmLegacyMemory",
                    "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:cloned/VmLegacyNetwork:VmLegacyNetwork"
                    },
                    "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The VM identifier in the Proxmox cluster.\n"
                },
                "rng": {
                    "$ref": "#/types/proxmoxve:cloned/VmLegacyRng:VmLegacyRng",
                    "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"
                },
                "started": {
                    "type": "boolean",
                    "description": "Whether the VM should be started after cloning. Defaults to true.\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:cloned/VmLegacyTimeouts:VmLegacyTimeouts"
                },
                "vga": {
                    "$ref": "#/types/proxmoxve:cloned/VmLegacyVga:VmLegacyVga",
                    "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": [
                "clone",
                "deleteUnreferencedDisksOnDestroy",
                "resourceId",
                "name",
                "nodeName",
                "purgeOnDestroy",
                "started",
                "stopOnDestroy"
            ],
            "inputProperties": {
                "cdrom": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/types/proxmoxve:cloned/VmLegacyCdrom:VmLegacyCdrom"
                    },
                    "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:cloned/VmLegacyClone:VmLegacyClone",
                    "description": "Clone settings. Changes require recreation.\n"
                },
                "cpu": {
                    "$ref": "#/types/proxmoxve:cloned/VmLegacyCpu:VmLegacyCpu",
                    "description": "The CPU configuration.\n"
                },
                "delete": {
                    "$ref": "#/types/proxmoxve:cloned/VmLegacyDelete:VmLegacyDelete",
                    "description": "Explicit deletions to perform after cloning/updating. Entries persist across applies.\n"
                },
                "deleteUnreferencedDisksOnDestroy": {
                    "type": "boolean",
                    "description": "Delete unreferenced disks on destroy. WARNING: When set to true, any disks not explicitly managed by Terraform will be deleted on destroy, potentially causing data loss. Defaults to false for safety.\n"
                },
                "description": {
                    "type": "string",
                    "description": "Optional VM description applied after cloning.\n"
                },
                "disk": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/types/proxmoxve:cloned/VmLegacyDisk:VmLegacyDisk"
                    },
                    "description": "Disks keyed by slot (scsi0, virtio0, sata0, ide0, ...). Only listed keys are managed.\n"
                },
                "memory": {
                    "$ref": "#/types/proxmoxve:cloned/VmLegacyMemory:VmLegacyMemory",
                    "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:cloned/VmLegacyNetwork:VmLegacyNetwork"
                    },
                    "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The VM identifier in the Proxmox cluster.\n"
                },
                "rng": {
                    "$ref": "#/types/proxmoxve:cloned/VmLegacyRng:VmLegacyRng",
                    "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"
                },
                "started": {
                    "type": "boolean",
                    "description": "Whether the VM should be started after cloning. Defaults to true.\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:cloned/VmLegacyTimeouts:VmLegacyTimeouts"
                },
                "vga": {
                    "$ref": "#/types/proxmoxve:cloned/VmLegacyVga:VmLegacyVga",
                    "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": [
                "clone",
                "nodeName"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering VmLegacy resources.\n",
                "properties": {
                    "cdrom": {
                        "type": "object",
                        "additionalProperties": {
                            "$ref": "#/types/proxmoxve:cloned/VmLegacyCdrom:VmLegacyCdrom"
                        },
                        "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:cloned/VmLegacyClone:VmLegacyClone",
                        "description": "Clone settings. Changes require recreation.\n"
                    },
                    "cpu": {
                        "$ref": "#/types/proxmoxve:cloned/VmLegacyCpu:VmLegacyCpu",
                        "description": "The CPU configuration.\n"
                    },
                    "delete": {
                        "$ref": "#/types/proxmoxve:cloned/VmLegacyDelete:VmLegacyDelete",
                        "description": "Explicit deletions to perform after cloning/updating. Entries persist across applies.\n"
                    },
                    "deleteUnreferencedDisksOnDestroy": {
                        "type": "boolean",
                        "description": "Delete unreferenced disks on destroy. WARNING: When set to true, any disks not explicitly managed by Terraform will be deleted on destroy, potentially causing data loss. Defaults to false for safety.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "Optional VM description applied after cloning.\n"
                    },
                    "disk": {
                        "type": "object",
                        "additionalProperties": {
                            "$ref": "#/types/proxmoxve:cloned/VmLegacyDisk:VmLegacyDisk"
                        },
                        "description": "Disks keyed by slot (scsi0, virtio0, sata0, ide0, ...). Only listed keys are managed.\n"
                    },
                    "memory": {
                        "$ref": "#/types/proxmoxve:cloned/VmLegacyMemory:VmLegacyMemory",
                        "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:cloned/VmLegacyNetwork:VmLegacyNetwork"
                        },
                        "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"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The VM identifier in the Proxmox cluster.\n"
                    },
                    "rng": {
                        "$ref": "#/types/proxmoxve:cloned/VmLegacyRng:VmLegacyRng",
                        "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"
                    },
                    "started": {
                        "type": "boolean",
                        "description": "Whether the VM should be started after cloning. Defaults to true.\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:cloned/VmLegacyTimeouts:VmLegacyTimeouts"
                    },
                    "vga": {
                        "$ref": "#/types/proxmoxve:cloned/VmLegacyVga:VmLegacyVga",
                        "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:cluster/firewall/security/groupLegacy:GroupLegacy": {
            "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.cluster.firewall.security.GroupLegacy(\"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.cluster.firewall.security.GroupLegacy(\"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.Cluster.Firewall.Security.GroupLegacy(\"webserver\", new()\n    {\n        Name = \"webserver\",\n        Comment = \"Managed by Pulumi\",\n        Rules = new[]\n        {\n            new ProxmoxVE.Cluster.Firewall.Security.Inputs.GroupLegacyRuleArgs\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.Cluster.Firewall.Security.Inputs.GroupLegacyRuleArgs\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/v8/go/proxmoxve/cluster\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/go/proxmoxve/cluster/firewall\"\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 := firewall.NewGroupLegacy(ctx, \"webserver\", \u0026firewall.GroupLegacyArgs{\n\t\t\tName:    pulumi.String(\"webserver\"),\n\t\t\tComment: pulumi.String(\"Managed by Pulumi\"),\n\t\t\tRules: firewall / security.GroupLegacyRuleArray{\n\t\t\t\t\u0026firewall / security.GroupLegacyRuleArgs{\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\u0026firewall / security.GroupLegacyRuleArgs{\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.cluster.GroupLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.cluster.GroupLegacyArgs;\nimport com.pulumi.proxmoxve.cluster.inputs.GroupLegacyRuleArgs;\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 GroupLegacy(\"webserver\", GroupLegacyArgs.builder()\n            .name(\"webserver\")\n            .comment(\"Managed by Pulumi\")\n            .rules(            \n                GroupLegacyRuleArgs.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                GroupLegacyRuleArgs.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:cluster/firewall/security:GroupLegacy\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 \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, e.g.,\n\n```sh\n$ pulumi import proxmoxve:cluster/firewall/security/groupLegacy:GroupLegacy 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:cluster/firewall/security/GroupLegacyRule:GroupLegacyRule"
                    },
                    "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:cluster/firewall/security/GroupLegacyRule:GroupLegacyRule"
                    },
                    "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 GroupLegacy 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:cluster/firewall/security/GroupLegacyRule:GroupLegacyRule"
                        },
                        "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:cluster/firewallLegacy:FirewallLegacy": {
            "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.cluster.FirewallLegacy(\"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.cluster.FirewallLegacy(\"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.Cluster.FirewallLegacy(\"example\", new()\n    {\n        Enabled = false,\n        Ebtables = false,\n        InputPolicy = \"DROP\",\n        OutputPolicy = \"ACCEPT\",\n        ForwardPolicy = \"ACCEPT\",\n        LogRatelimit = new ProxmoxVE.Cluster.Inputs.FirewallLegacyLogRatelimitArgs\n        {\n            Enabled = false,\n            Burst = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(10) (example.pp:9,15-17)),\n            Rate = \"5/second\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.NewFirewallLegacy(ctx, \"example\", \u0026cluster.FirewallLegacyArgs{\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: \u0026cluster.FirewallLegacyLogRatelimitArgs{\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.cluster.FirewallLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.cluster.FirewallLegacyArgs;\nimport com.pulumi.proxmoxve.cluster.inputs.FirewallLegacyLogRatelimitArgs;\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 FirewallLegacy(\"example\", FirewallLegacyArgs.builder()\n            .enabled(false)\n            .ebtables(false)\n            .inputPolicy(\"DROP\")\n            .outputPolicy(\"ACCEPT\")\n            .forwardPolicy(\"ACCEPT\")\n            .logRatelimit(FirewallLegacyLogRatelimitArgs.builder()\n                .enabled(false)\n                .burst(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(10) (example.pp:9,15-17)))\n                .rate(\"5/second\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:cluster:FirewallLegacy\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\n```sh\n$ pulumi import proxmoxve:cluster/firewallLegacy:FirewallLegacy 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:cluster/FirewallLegacyLogRatelimit:FirewallLegacyLogRatelimit",
                    "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:cluster/FirewallLegacyLogRatelimit:FirewallLegacyLogRatelimit",
                    "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 FirewallLegacy 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:cluster/FirewallLegacyLogRatelimit:FirewallLegacyLogRatelimit",
                        "description": "The log rate limit.\n"
                    },
                    "outputPolicy": {
                        "type": "string",
                        "description": "The default output policy (`ACCEPT`, `DROP`, `REJECT`).\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 = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(555555) (example.pp:4,29-35)),\n        BandwidthLimitDefault = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(666666) (example.pp:5,29-35)),\n        MaxWorkers = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(5) (example.pp:6,29-30)),\n        MigrationCidr = \"10.0.0.0/8\",\n        MigrationType = \"secure\",\n        NextId = new ProxmoxVE.Cluster.Inputs.OptionsNextIdArgs\n        {\n            Lower = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:10,13-16)),\n            Upper = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(9.99999999e+08) (example.pp:11,13-22)),\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/v8/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(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(555555) (example.pp:4,29-35)))\n            .bandwidthLimitDefault(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(666666) (example.pp:5,29-35)))\n            .maxWorkers(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(5) (example.pp:6,29-30)))\n            .migrationCidr(\"10.0.0.0/8\")\n            .migrationType(\"secure\")\n            .nextId(OptionsNextIdArgs.builder()\n                .lower(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:10,13-16)))\n                .upper(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(9.99999999e+08) (example.pp:11,13-22)))\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\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:cluster/optionsLegacy:OptionsLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.cluster.Options`\" pulumi-lang-dotnet=\"`proxmoxve.cluster.Options`\" pulumi-lang-go=\"`cluster.Options`\" pulumi-lang-python=\"`cluster.Options`\" pulumi-lang-yaml=\"`proxmoxve.cluster.Options`\" pulumi-lang-java=\"`proxmoxve.cluster.Options`\"\u003e`proxmoxve.cluster.Options`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages 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.OptionsLegacy(\"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.OptionsLegacy(\"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.OptionsLegacy(\"options\", new()\n    {\n        Language = \"en\",\n        Keyboard = \"pl\",\n        EmailFrom = \"ged@gont.earthsea\",\n        BandwidthLimitMigration = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(555555) (example.pp:4,29-35)),\n        BandwidthLimitDefault = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(666666) (example.pp:5,29-35)),\n        MaxWorkers = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(5) (example.pp:6,29-30)),\n        MigrationCidr = \"10.0.0.0/8\",\n        MigrationType = \"secure\",\n        NextId = new ProxmoxVE.Cluster.Inputs.OptionsLegacyNextIdArgs\n        {\n            Lower = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:10,13-16)),\n            Upper = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(9.99999999e+08) (example.pp:11,13-22)),\n        },\n        Notify = new ProxmoxVE.Cluster.Inputs.OptionsLegacyNotifyArgs\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/v8/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.NewOptionsLegacy(ctx, \"options\", \u0026cluster.OptionsLegacyArgs{\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.OptionsLegacyNextIdArgs{\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.OptionsLegacyNotifyArgs{\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.OptionsLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.cluster.OptionsLegacyArgs;\nimport com.pulumi.proxmoxve.cluster.inputs.OptionsLegacyNextIdArgs;\nimport com.pulumi.proxmoxve.cluster.inputs.OptionsLegacyNotifyArgs;\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 OptionsLegacy(\"options\", OptionsLegacyArgs.builder()\n            .language(\"en\")\n            .keyboard(\"pl\")\n            .emailFrom(\"ged@gont.earthsea\")\n            .bandwidthLimitMigration(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(555555) (example.pp:4,29-35)))\n            .bandwidthLimitDefault(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(666666) (example.pp:5,29-35)))\n            .maxWorkers(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(5) (example.pp:6,29-30)))\n            .migrationCidr(\"10.0.0.0/8\")\n            .migrationType(\"secure\")\n            .nextId(OptionsLegacyNextIdArgs.builder()\n                .lower(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:10,13-16)))\n                .upper(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(9.99999999e+08) (example.pp:11,13-22)))\n                .build())\n            .notify(OptionsLegacyNotifyArgs.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:OptionsLegacy\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\nCluster options are global and can be imported using e.g.:\n\n```sh\n$ pulumi import proxmoxve:cluster/optionsLegacy:OptionsLegacy 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/OptionsLegacyNextId:OptionsLegacyNextId",
                    "description": "The ranges for the next free VM ID auto-selection pool.\n"
                },
                "notify": {
                    "$ref": "#/types/proxmoxve:cluster/OptionsLegacyNotify:OptionsLegacyNotify",
                    "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/OptionsLegacyNextId:OptionsLegacyNextId",
                    "description": "The ranges for the next free VM ID auto-selection pool.\n"
                },
                "notify": {
                    "$ref": "#/types/proxmoxve:cluster/OptionsLegacyNotify:OptionsLegacyNotify",
                    "description": "Cluster-wide notification settings.\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering OptionsLegacy 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/OptionsLegacyNextId:OptionsLegacyNextId",
                        "description": "The ranges for the next free VM ID auto-selection pool.\n"
                    },
                    "notify": {
                        "$ref": "#/types/proxmoxve:cluster/OptionsLegacyNotify:OptionsLegacyNotify",
                        "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.FileLegacy`\" pulumi-lang-dotnet=\"`proxmoxve.FileLegacy`\" pulumi-lang-go=\"`FileLegacy`\" pulumi-lang-python=\"`FileLegacy`\" pulumi-lang-yaml=\"`proxmoxve.FileLegacy`\" pulumi-lang-java=\"`proxmoxve.FileLegacy`\"\u003e`proxmoxve.FileLegacy`\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`contentType \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 = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(4444) (example.pp:65,23-27)),\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/v8/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(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(4444) (example.pp:65,23-27)))\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",
                    "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, the file will be replaced when either: (1) the file size in the datastore has changed outside of Terraform, or (2) the file size reported by the URL differs from the downloaded file (detecting upstream updates like new cloud image versions). 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 size checks are performed and the file is never automatically replaced.\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 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",
                    "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, the file will be replaced when either: (1) the file size in the datastore has changed outside of Terraform, or (2) the file size reported by the URL differs from the downloaded file (detecting upstream updates like new cloud image versions). 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 size checks are performed and the file is never automatically replaced.\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 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",
                        "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, the file will be replaced when either: (1) the file size in the datastore has changed outside of Terraform, or (2) the file size reported by the URL differs from the downloaded file (detecting upstream updates like new cloud image versions). 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 size checks are performed and the file is never automatically replaced.\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 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:download/fileLegacy:FileLegacy": {
            "description": "\u003e **Deprecated:** Use \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 instead. This resource will be removed in v1.0.\n\nManages 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.FileLegacy`\" pulumi-lang-dotnet=\"`proxmoxve.FileLegacy`\" pulumi-lang-go=\"`FileLegacy`\" pulumi-lang-python=\"`FileLegacy`\" pulumi-lang-yaml=\"`proxmoxve.FileLegacy`\" pulumi-lang-java=\"`proxmoxve.FileLegacy`\"\u003e`proxmoxve.FileLegacy`\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`contentType \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.FileLegacy(\"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.FileLegacy(\"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.FileLegacy(\"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.FileLegacy(\"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.FileLegacy(\"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.FileLegacy(\"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.FileLegacy(\"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.FileLegacy(\"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.FileLegacy(\"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.FileLegacy(\"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.FileLegacy(\"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.FileLegacy(\"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.FileLegacy(\"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.FileLegacy(\"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.FileLegacy(\"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.FileLegacy(\"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.FileLegacy(\"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.FileLegacy(\"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.FileLegacy(\"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.FileLegacy(\"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.FileLegacy(\"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.FileLegacy(\"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.FileLegacy(\"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 = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(4444) (example.pp:65,23-27)),\n    });\n\n    var latestUbuntu22JammyLxcImg = new ProxmoxVE.Download.FileLegacy(\"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/v8/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.NewFileLegacy(ctx, \"release_20231228_debian_12_bookworm_qcow2_img\", \u0026download.FileLegacyArgs{\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.NewFileLegacy(ctx, \"release_20231228_debian_12_bookworm_qcow2\", \u0026download.FileLegacyArgs{\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.NewFileLegacy(ctx, \"latest_debian_12_bookworm_qcow2_img\", \u0026download.FileLegacyArgs{\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.NewFileLegacy(ctx, \"latest_debian_12_bookworm_qcow2\", \u0026download.FileLegacyArgs{\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.NewFileLegacy(ctx, \"latest_ubuntu_22_jammy_qcow2_img\", \u0026download.FileLegacyArgs{\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.NewFileLegacy(ctx, \"latest_static_ubuntu_24_noble_qcow2_img\", \u0026download.FileLegacyArgs{\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.NewFileLegacy(ctx, \"release_20231211_ubuntu_22_jammy_lxc_img\", \u0026download.FileLegacyArgs{\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.NewFileLegacy(ctx, \"latest_ubuntu_22_jammy_lxc_img\", \u0026download.FileLegacyArgs{\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.FileLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.download.FileLegacyArgs;\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 FileLegacy(\"release20231228Debian12BookwormQcow2Img\", FileLegacyArgs.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 FileLegacy(\"release20231228Debian12BookwormQcow2\", FileLegacyArgs.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 FileLegacy(\"latestDebian12BookwormQcow2Img\", FileLegacyArgs.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 FileLegacy(\"latestDebian12BookwormQcow2\", FileLegacyArgs.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 FileLegacy(\"latestUbuntu22JammyQcow2Img\", FileLegacyArgs.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 FileLegacy(\"latestStaticUbuntu24NobleQcow2Img\", FileLegacyArgs.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 FileLegacy(\"release20231211Ubuntu22JammyLxcImg\", FileLegacyArgs.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(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(4444) (example.pp:65,23-27)))\n            .build());\n\n        var latestUbuntu22JammyLxcImg = new FileLegacy(\"latestUbuntu22JammyLxcImg\", FileLegacyArgs.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:FileLegacy\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:FileLegacy\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:FileLegacy\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:FileLegacy\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:FileLegacy\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:FileLegacy\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:FileLegacy\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:FileLegacy\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",
                    "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, the file will be replaced when either: (1) the file size in the datastore has changed outside of Terraform, or (2) the file size reported by the URL differs from the downloaded file (detecting upstream updates like new cloud image versions). 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 size checks are performed and the file is never automatically replaced.\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 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",
                    "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, the file will be replaced when either: (1) the file size in the datastore has changed outside of Terraform, or (2) the file size reported by the URL differs from the downloaded file (detecting upstream updates like new cloud image versions). 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 size checks are performed and the file is never automatically replaced.\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 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 FileLegacy 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",
                        "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, the file will be replaced when either: (1) the file size in the datastore has changed outside of Terraform, or (2) the file size reported by the URL differs from the downloaded file (detecting upstream updates like new cloud image versions). 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 size checks are performed and the file is never automatically replaced.\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 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:firewall/aliasLegacy:AliasLegacy": {
            "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.firewall.AliasLegacy(\"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.firewall.AliasLegacy(\"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.firewall.AliasLegacy(\"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.firewall.AliasLegacy(\"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.Firewall.AliasLegacy(\"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.Firewall.AliasLegacy(\"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/v8/go/proxmoxve/firewall\"\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 := firewall.NewAliasLegacy(ctx, \"local_network\", \u0026firewall.AliasLegacyArgs{\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 = firewall.NewAliasLegacy(ctx, \"ubuntu_vm\", \u0026firewall.AliasLegacyArgs{\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.firewall.AliasLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.firewall.AliasLegacyArgs;\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 AliasLegacy(\"localNetwork\", AliasLegacyArgs.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 AliasLegacy(\"ubuntuVm\", AliasLegacyArgs.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:firewall:AliasLegacy\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:firewall:AliasLegacy\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 AliasLegacy 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:firewall/ipsetLegacy:IpsetLegacy": {
            "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.firewall.IpsetLegacy(\"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.firewall.IpsetLegacy(\"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.Firewall.IpsetLegacy(\"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.Firewall.Inputs.IpsetLegacyCidrArgs\n            {\n                Name = \"192.168.0.0/23\",\n                Comment = \"Local network 1\",\n            },\n            new ProxmoxVE.Firewall.Inputs.IpsetLegacyCidrArgs\n            {\n                Name = \"192.168.0.1\",\n                Comment = \"Server 1\",\n                Nomatch = true,\n            },\n            new ProxmoxVE.Firewall.Inputs.IpsetLegacyCidrArgs\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/v8/go/proxmoxve/firewall\"\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 := firewall.NewIpsetLegacy(ctx, \"ipset\", \u0026firewall.IpsetLegacyArgs{\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: firewall.IpsetLegacyCidrArray{\n\t\t\t\t\u0026firewall.IpsetLegacyCidrArgs{\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\u0026firewall.IpsetLegacyCidrArgs{\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\u0026firewall.IpsetLegacyCidrArgs{\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.firewall.IpsetLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.firewall.IpsetLegacyArgs;\nimport com.pulumi.proxmoxve.firewall.inputs.IpsetLegacyCidrArgs;\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 IpsetLegacy(\"ipset\", IpsetLegacyArgs.builder()\n            .nodeName(example.nodeName())\n            .vmId(example.vmId())\n            .name(\"local_network\")\n            .comment(\"Managed by Pulumi\")\n            .cidrs(            \n                IpsetLegacyCidrArgs.builder()\n                    .name(\"192.168.0.0/23\")\n                    .comment(\"Local network 1\")\n                    .build(),\n                IpsetLegacyCidrArgs.builder()\n                    .name(\"192.168.0.1\")\n                    .comment(\"Server 1\")\n                    .nomatch(true)\n                    .build(),\n                IpsetLegacyCidrArgs.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:firewall:IpsetLegacy\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### Cluster IPSet\nUse the import ID: `cluster/\u003cipset_name\u003e`\nExample uses ipset name \u003cspan pulumi-lang-nodejs=\"`localNetwork`\" pulumi-lang-dotnet=\"`LocalNetwork`\" pulumi-lang-go=\"`localNetwork`\" pulumi-lang-python=\"`local_network`\" pulumi-lang-yaml=\"`localNetwork`\" pulumi-lang-java=\"`localNetwork`\"\u003e`localNetwork`\u003c/span\u003e.\n\n**Example:**\n```sh\n$ pulumi import proxmoxve:firewall/ipsetLegacy:IpsetLegacy cluster_ipset cluster/local_network\n```\n\n### VM IPSet\nUse the import ID format: `vm/\u003cnode_name\u003e/\u003cvm_id\u003e/\u003cipset_name\u003e`\nExample uses node name \u003cspan pulumi-lang-nodejs=\"`pve`\" pulumi-lang-dotnet=\"`Pve`\" pulumi-lang-go=\"`pve`\" pulumi-lang-python=\"`pve`\" pulumi-lang-yaml=\"`pve`\" pulumi-lang-java=\"`pve`\"\u003e`pve`\u003c/span\u003e and VM ID \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 and ipset name \u003cspan pulumi-lang-nodejs=\"`localNetwork`\" pulumi-lang-dotnet=\"`LocalNetwork`\" pulumi-lang-go=\"`localNetwork`\" pulumi-lang-python=\"`local_network`\" pulumi-lang-yaml=\"`localNetwork`\" pulumi-lang-java=\"`localNetwork`\"\u003e`localNetwork`\u003c/span\u003e.\n\n**Example:**\n```sh\n$ pulumi import proxmoxve:firewall/ipsetLegacy:IpsetLegacy vm_ipset vm/pve/100/local_network\n```\n\n### Container IPSet\nUse the import ID format: `container/\u003cnode_name\u003e/\u003ccontainer_id\u003e/\u003cipset_name\u003e`\nExample uses node name \u003cspan pulumi-lang-nodejs=\"`pve`\" pulumi-lang-dotnet=\"`Pve`\" pulumi-lang-go=\"`pve`\" pulumi-lang-python=\"`pve`\" pulumi-lang-yaml=\"`pve`\" pulumi-lang-java=\"`pve`\"\u003e`pve`\u003c/span\u003e and container ID \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 and ipset name \u003cspan pulumi-lang-nodejs=\"`localNetwork`\" pulumi-lang-dotnet=\"`LocalNetwork`\" pulumi-lang-go=\"`localNetwork`\" pulumi-lang-python=\"`local_network`\" pulumi-lang-yaml=\"`localNetwork`\" pulumi-lang-java=\"`localNetwork`\"\u003e`localNetwork`\u003c/span\u003e.\n\n**Example:**\n```sh\n$ pulumi import proxmoxve:firewall/ipsetLegacy:IpsetLegacy container_ipset container/pve/100/local_network\n```\n\n",
            "properties": {
                "cidrs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/proxmoxve:firewall/IpsetLegacyCidr:IpsetLegacyCidr"
                    },
                    "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:firewall/IpsetLegacyCidr:IpsetLegacyCidr"
                    },
                    "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 IpsetLegacy resources.\n",
                "properties": {
                    "cidrs": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/proxmoxve:firewall/IpsetLegacyCidr:IpsetLegacyCidr"
                        },
                        "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:firewall/optionsLegacy:OptionsLegacy": {
            "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.firewall.OptionsLegacy(\"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.firewall.OptionsLegacy(\"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.Firewall.OptionsLegacy(\"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/v8/go/proxmoxve/firewall\"\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 := firewall.NewOptionsLegacy(ctx, \"example\", \u0026firewall.OptionsLegacyArgs{\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.firewall.OptionsLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.firewall.OptionsLegacyArgs;\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 OptionsLegacy(\"example\", OptionsLegacyArgs.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:firewall:OptionsLegacy\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### VM Firewall Options\nUse the import ID format: `vm/\u003cnode_name\u003e/\u003cvm_id\u003e`\nExample uses node name \u003cspan pulumi-lang-nodejs=\"`pve`\" pulumi-lang-dotnet=\"`Pve`\" pulumi-lang-go=\"`pve`\" pulumi-lang-python=\"`pve`\" pulumi-lang-yaml=\"`pve`\" pulumi-lang-java=\"`pve`\"\u003e`pve`\u003c/span\u003e and VM ID \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.\n\n**Example:**\n```sh\n$ pulumi import proxmoxve:firewall/optionsLegacy:OptionsLegacy vm_firewall_options vm/pve/100\n```\n\n### Container Firewall Options\nUse the import ID format: `container/\u003cnode_name\u003e/\u003ccontainer_id\u003e`\nExample uses node name \u003cspan pulumi-lang-nodejs=\"`pve`\" pulumi-lang-dotnet=\"`Pve`\" pulumi-lang-go=\"`pve`\" pulumi-lang-python=\"`pve`\" pulumi-lang-yaml=\"`pve`\" pulumi-lang-java=\"`pve`\"\u003e`pve`\u003c/span\u003e and container ID \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.\n\n**Example:**\n```sh\n$ pulumi import proxmoxve:firewall/optionsLegacy:OptionsLegacy 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`vmId`\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`containerId`\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`vmId`\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`containerId`\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`vmId`\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`containerId`\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`vmId`\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`containerId`\u003c/span\u003e must be specified.**\n"
                }
            },
            "requiredInputs": [
                "nodeName"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering OptionsLegacy 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`vmId`\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`containerId`\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`vmId`\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`containerId`\u003c/span\u003e must be specified.**\n"
                    }
                },
                "type": "object"
            }
        },
        "proxmoxve:firewall/rulesLegacy:RulesLegacy": {
            "description": "Manages cluster-level, node-level or VM/container-level firewall rules.\n\n\u003e Before creating a new \u003cspan pulumi-lang-nodejs=\"`proxmoxve.firewall.RulesLegacy`\" pulumi-lang-dotnet=\"`proxmoxve.firewall.RulesLegacy`\" pulumi-lang-go=\"`firewall.RulesLegacy`\" pulumi-lang-python=\"`firewall.RulesLegacy`\" pulumi-lang-yaml=\"`proxmoxve.firewall.RulesLegacy`\" pulumi-lang-java=\"`proxmoxve.firewall.RulesLegacy`\"\u003e`proxmoxve.firewall.RulesLegacy`\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.firewall.RulesLegacy(\"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.firewall.RulesLegacy(\"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.Firewall.RulesLegacy(\"inbound\", new()\n    {\n        NodeName = example.NodeName,\n        VmId = example.VmId,\n        Rules = new[]\n        {\n            new ProxmoxVE.Firewall.Inputs.RulesLegacyRuleArgs\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.Firewall.Inputs.RulesLegacyRuleArgs\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.Firewall.Inputs.RulesLegacyRuleArgs\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/v8/go/proxmoxve/firewall\"\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 := firewall.NewRulesLegacy(ctx, \"inbound\", \u0026firewall.RulesLegacyArgs{\n\t\t\tNodeName: pulumi.Any(example.NodeName),\n\t\t\tVmId:     pulumi.Any(example.VmId),\n\t\t\tRules: firewall.RulesLegacyRuleArray{\n\t\t\t\t\u0026firewall.RulesLegacyRuleArgs{\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\u0026firewall.RulesLegacyRuleArgs{\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\u0026firewall.RulesLegacyRuleArgs{\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.firewall.RulesLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.firewall.RulesLegacyArgs;\nimport com.pulumi.proxmoxve.firewall.inputs.RulesLegacyRuleArgs;\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 RulesLegacy(\"inbound\", RulesLegacyArgs.builder()\n            .nodeName(example.nodeName())\n            .vmId(example.vmId())\n            .rules(            \n                RulesLegacyRuleArgs.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                RulesLegacyRuleArgs.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                RulesLegacyRuleArgs.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:firewall:RulesLegacy\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### Cluster Rules\nUse the import ID: \u003cspan pulumi-lang-nodejs=\"`cluster`\" pulumi-lang-dotnet=\"`Cluster`\" pulumi-lang-go=\"`cluster`\" pulumi-lang-python=\"`cluster`\" pulumi-lang-yaml=\"`cluster`\" pulumi-lang-java=\"`cluster`\"\u003e`cluster`\u003c/span\u003e\n\n**Example:**\n```sh\n$ pulumi import proxmoxve:firewall/rulesLegacy:RulesLegacy cluster_rules cluster\n```\n\n### Node Rules\nUse the import ID format: `node/\u003cnode_name\u003e`\nExample uses node name \u003cspan pulumi-lang-nodejs=\"`pve`\" pulumi-lang-dotnet=\"`Pve`\" pulumi-lang-go=\"`pve`\" pulumi-lang-python=\"`pve`\" pulumi-lang-yaml=\"`pve`\" pulumi-lang-java=\"`pve`\"\u003e`pve`\u003c/span\u003e.\n\n**Example:**\n```sh\n$ pulumi import proxmoxve:firewall/rulesLegacy:RulesLegacy node_rules node/pve\n```\n\n### VM Rules\nUse the import ID format: `vm/\u003cnode_name\u003e/\u003cvm_id\u003e`\nExample uses node name \u003cspan pulumi-lang-nodejs=\"`pve`\" pulumi-lang-dotnet=\"`Pve`\" pulumi-lang-go=\"`pve`\" pulumi-lang-python=\"`pve`\" pulumi-lang-yaml=\"`pve`\" pulumi-lang-java=\"`pve`\"\u003e`pve`\u003c/span\u003e and VM ID \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.\n\n**Example:**\n```sh\n$ pulumi import proxmoxve:firewall/rulesLegacy:RulesLegacy vm_rules vm/pve/100\n```\n\n### Container Rules\nUse the import ID format: `container/\u003cnode_name\u003e/\u003ccontainer_id\u003e`\nExample uses node name \u003cspan pulumi-lang-nodejs=\"`pve`\" pulumi-lang-dotnet=\"`Pve`\" pulumi-lang-go=\"`pve`\" pulumi-lang-python=\"`pve`\" pulumi-lang-yaml=\"`pve`\" pulumi-lang-java=\"`pve`\"\u003e`pve`\u003c/span\u003e and container ID \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.\n\n**Example:**\n```sh\n$ pulumi import proxmoxve:firewall/rulesLegacy:RulesLegacy 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:firewall/RulesLegacyRule:RulesLegacyRule"
                    },
                    "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:firewall/RulesLegacyRule:RulesLegacyRule"
                    },
                    "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 RulesLegacy 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:firewall/RulesLegacyRule:RulesLegacyRule"
                        },
                        "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: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/v8/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\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/dirLegacy:DirLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.hardware/mapping.Dir`\" pulumi-lang-dotnet=\"`proxmoxve.hardware/mapping.Dir`\" pulumi-lang-go=\"`hardware/mapping.Dir`\" pulumi-lang-python=\"`hardware/mapping.Dir`\" pulumi-lang-yaml=\"`proxmoxve.hardware/mapping.Dir`\" pulumi-lang-java=\"`proxmoxve.hardware/mapping.Dir`\"\u003e`proxmoxve.hardware/mapping.Dir`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages 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.DirLegacy(\"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.DirLegacy(\"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.DirLegacy(\"example\", new()\n    {\n        Comment = \"This is a comment\",\n        Name = \"example\",\n        Maps = new[]\n        {\n            new ProxmoxVE.Hardware.Mapping.Inputs.DirLegacyMapArgs\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/v8/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.NewDirLegacy(ctx, \"example\", \u0026hardware.DirLegacyArgs{\n\t\t\tComment: pulumi.String(\"This is a comment\"),\n\t\t\tName:    pulumi.String(\"example\"),\n\t\t\tMaps: mapping.DirLegacyMapTypeArray{\n\t\t\t\t\u0026mapping.DirLegacyMapTypeArgs{\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.DirLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.hardware.DirLegacyArgs;\nimport com.pulumi.proxmoxve.hardware.inputs.DirLegacyMapArgs;\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 DirLegacy(\"example\", DirLegacyArgs.builder()\n            .comment(\"This is a comment\")\n            .name(\"example\")\n            .maps(DirLegacyMapArgs.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:DirLegacy\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\nA directory mapping can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:hardware/mapping/dirLegacy:DirLegacy 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/DirLegacyMap:DirLegacyMap"
                    },
                    "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/DirLegacyMap:DirLegacyMap"
                    },
                    "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 DirLegacy resources.\n",
                "properties": {
                    "comment": {
                        "type": "string",
                        "description": "The comment of this directory mapping.\n"
                    },
                    "maps": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/proxmoxve:hardware/mapping/DirLegacyMap:DirLegacyMap"
                        },
                        "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 = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(0) (example.pp:6,19-20)),\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/v8/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(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(0) (example.pp:6,19-20)))\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\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/pciLegacy:PciLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.hardware/mapping.Pci`\" pulumi-lang-dotnet=\"`proxmoxve.hardware/mapping.Pci`\" pulumi-lang-go=\"`hardware/mapping.Pci`\" pulumi-lang-python=\"`hardware/mapping.Pci`\" pulumi-lang-yaml=\"`proxmoxve.hardware/mapping.Pci`\" pulumi-lang-java=\"`proxmoxve.hardware/mapping.Pci`\"\u003e`proxmoxve.hardware/mapping.Pci`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages 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.PciLegacy(\"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.PciLegacy(\"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.PciLegacy(\"example\", new()\n    {\n        Comment = \"This is a comment\",\n        Name = \"example\",\n        Maps = new[]\n        {\n            new ProxmoxVE.Hardware.Mapping.Inputs.PciLegacyMapArgs\n            {\n                Comment = \"This is a device specific comment\",\n                Id = \"8086:5916\",\n                IommuGroup = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(0) (example.pp:6,19-20)),\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/v8/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.NewPciLegacy(ctx, \"example\", \u0026hardware.PciLegacyArgs{\n\t\t\tComment: pulumi.String(\"This is a comment\"),\n\t\t\tName:    pulumi.String(\"example\"),\n\t\t\tMaps: mapping.PciLegacyMapTypeArray{\n\t\t\t\t\u0026mapping.PciLegacyMapTypeArgs{\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.PciLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.hardware.PciLegacyArgs;\nimport com.pulumi.proxmoxve.hardware.inputs.PciLegacyMapArgs;\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 PciLegacy(\"example\", PciLegacyArgs.builder()\n            .comment(\"This is a comment\")\n            .name(\"example\")\n            .maps(PciLegacyMapArgs.builder()\n                .comment(\"This is a device specific comment\")\n                .id(\"8086:5916\")\n                .iommuGroup(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(0) (example.pp:6,19-20)))\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:PciLegacy\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\nA PCI hardware mapping can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:hardware/mapping/pciLegacy:PciLegacy 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/PciLegacyMap:PciLegacyMap"
                    },
                    "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/PciLegacyMap:PciLegacyMap"
                    },
                    "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 PciLegacy resources.\n",
                "properties": {
                    "comment": {
                        "type": "string",
                        "description": "The comment of this PCI hardware mapping.\n"
                    },
                    "maps": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/proxmoxve:hardware/mapping/PciLegacyMap:PciLegacyMap"
                        },
                        "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/v8/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\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:hardware/mapping/usbLegacy:UsbLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.hardware/mapping.Usb`\" pulumi-lang-dotnet=\"`proxmoxve.hardware/mapping.Usb`\" pulumi-lang-go=\"`hardware/mapping.Usb`\" pulumi-lang-python=\"`hardware/mapping.Usb`\" pulumi-lang-yaml=\"`proxmoxve.hardware/mapping.Usb`\" pulumi-lang-java=\"`proxmoxve.hardware/mapping.Usb`\"\u003e`proxmoxve.hardware/mapping.Usb`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages 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.UsbLegacy(\"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.UsbLegacy(\"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.UsbLegacy(\"example\", new()\n    {\n        Comment = \"This is a comment\",\n        Name = \"example\",\n        Maps = new[]\n        {\n            new ProxmoxVE.Hardware.Mapping.Inputs.UsbLegacyMapArgs\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/v8/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.NewUsbLegacy(ctx, \"example\", \u0026hardware.UsbLegacyArgs{\n\t\t\tComment: pulumi.String(\"This is a comment\"),\n\t\t\tName:    pulumi.String(\"example\"),\n\t\t\tMaps: mapping.UsbLegacyMapTypeArray{\n\t\t\t\t\u0026mapping.UsbLegacyMapTypeArgs{\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.UsbLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.hardware.UsbLegacyArgs;\nimport com.pulumi.proxmoxve.hardware.inputs.UsbLegacyMapArgs;\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 UsbLegacy(\"example\", UsbLegacyArgs.builder()\n            .comment(\"This is a comment\")\n            .name(\"example\")\n            .maps(UsbLegacyMapArgs.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:UsbLegacy\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\nA USB hardware mapping can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:hardware/mapping/usbLegacy:UsbLegacy 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/UsbLegacyMap:UsbLegacyMap"
                    },
                    "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/UsbLegacyMap:UsbLegacyMap"
                    },
                    "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 UsbLegacy resources.\n",
                "properties": {
                    "comment": {
                        "type": "string",
                        "description": "The comment of this USB hardware mapping.\n"
                    },
                    "maps": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/proxmoxve:hardware/mapping/UsbLegacyMap:UsbLegacyMap"
                        },
                        "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: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.UserLegacy(\"operations_automation\", {\n    comment: \"Managed by Pulumi\",\n    password: \"a-strong-password\",\n    userId: \"operations-automation@pve\",\n});\nconst operationsMonitoring = new proxmoxve.RoleLegacy(\"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.UserLegacy(\"operations_automation\",\n    comment=\"Managed by Pulumi\",\n    password=\"a-strong-password\",\n    user_id=\"operations-automation@pve\")\noperations_monitoring = proxmoxve.RoleLegacy(\"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.Index.UserLegacy(\"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.Index.RoleLegacy(\"operations_monitoring\", new()\n    {\n        RoleId = \"operations-monitoring\",\n        Privileges = new[]\n        {\n            \"VM.GuestAgent.Audit\",\n        },\n    });\n\n    var operationsAutomationMonitoring = new ProxmoxVE.Index.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/v8/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\toperationsAutomation, err := proxmoxve.NewUserLegacy(ctx, \"operations_automation\", \u0026proxmoxve.UserLegacyArgs{\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 := proxmoxve.NewRoleLegacy(ctx, \"operations_monitoring\", \u0026proxmoxve.RoleLegacyArgs{\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.UserLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.UserLegacyArgs;\nimport io.muehlbachler.pulumi.proxmoxve.RoleLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.RoleLegacyArgs;\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 UserLegacy(\"operationsAutomation\", UserLegacyArgs.builder()\n            .comment(\"Managed by Pulumi\")\n            .password(\"a-strong-password\")\n            .userId(\"operations-automation@pve\")\n            .build());\n\n        var operationsMonitoring = new RoleLegacy(\"operationsMonitoring\", RoleLegacyArgs.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:UserLegacy\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:RoleLegacy\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\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`tokenId`\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`userId`\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`groupId`\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`userId`\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`groupId`\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`tokenId`\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`tokenId`\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`userId`\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`groupId`\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`userId`\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`groupId`\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`tokenId`\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`tokenId`\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`userId`\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`groupId`\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`userId`\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`groupId`\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`tokenId`\u003c/span\u003e)\n"
                    }
                },
                "type": "object"
            }
        },
        "proxmoxve:index/aclLegacy:AclLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.Acl`\" pulumi-lang-dotnet=\"`proxmoxve.Acl`\" pulumi-lang-go=\"`Acl`\" pulumi-lang-python=\"`Acl`\" pulumi-lang-yaml=\"`proxmoxve.Acl`\" pulumi-lang-java=\"`proxmoxve.Acl`\"\u003e`proxmoxve.Acl`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages 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.UserLegacy(\"operations_automation\", {\n    comment: \"Managed by Pulumi\",\n    password: \"a-strong-password\",\n    userId: \"operations-automation@pve\",\n});\nconst operationsMonitoring = new proxmoxve.RoleLegacy(\"operations_monitoring\", {\n    roleId: \"operations-monitoring\",\n    privileges: [\"VM.GuestAgent.Audit\"],\n});\nconst operationsAutomationMonitoring = new proxmoxve.AclLegacy(\"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.UserLegacy(\"operations_automation\",\n    comment=\"Managed by Pulumi\",\n    password=\"a-strong-password\",\n    user_id=\"operations-automation@pve\")\noperations_monitoring = proxmoxve.RoleLegacy(\"operations_monitoring\",\n    role_id=\"operations-monitoring\",\n    privileges=[\"VM.GuestAgent.Audit\"])\noperations_automation_monitoring = proxmoxve.AclLegacy(\"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.Index.UserLegacy(\"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.Index.RoleLegacy(\"operations_monitoring\", new()\n    {\n        RoleId = \"operations-monitoring\",\n        Privileges = new[]\n        {\n            \"VM.GuestAgent.Audit\",\n        },\n    });\n\n    var operationsAutomationMonitoring = new ProxmoxVE.Index.AclLegacy(\"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/v8/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\toperationsAutomation, err := proxmoxve.NewUserLegacy(ctx, \"operations_automation\", \u0026proxmoxve.UserLegacyArgs{\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 := proxmoxve.NewRoleLegacy(ctx, \"operations_monitoring\", \u0026proxmoxve.RoleLegacyArgs{\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.NewAclLegacy(ctx, \"operations_automation_monitoring\", \u0026proxmoxve.AclLegacyArgs{\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.UserLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.UserLegacyArgs;\nimport io.muehlbachler.pulumi.proxmoxve.RoleLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.RoleLegacyArgs;\nimport io.muehlbachler.pulumi.proxmoxve.AclLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.AclLegacyArgs;\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 UserLegacy(\"operationsAutomation\", UserLegacyArgs.builder()\n            .comment(\"Managed by Pulumi\")\n            .password(\"a-strong-password\")\n            .userId(\"operations-automation@pve\")\n            .build());\n\n        var operationsMonitoring = new RoleLegacy(\"operationsMonitoring\", RoleLegacyArgs.builder()\n            .roleId(\"operations-monitoring\")\n            .privileges(\"VM.GuestAgent.Audit\")\n            .build());\n\n        var operationsAutomationMonitoring = new AclLegacy(\"operationsAutomationMonitoring\", AclLegacyArgs.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:UserLegacy\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:RoleLegacy\n    name: operations_monitoring\n    properties:\n      roleId: operations-monitoring\n      privileges:\n        - VM.GuestAgent.Audit\n  operationsAutomationMonitoring:\n    type: proxmoxve:AclLegacy\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\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/aclLegacy:AclLegacy 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`tokenId`\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`userId`\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`groupId`\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`userId`\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`groupId`\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`tokenId`\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`tokenId`\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`userId`\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`groupId`\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`userId`\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`groupId`\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`tokenId`\u003c/span\u003e)\n"
                }
            },
            "requiredInputs": [
                "path",
                "roleId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering AclLegacy 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`tokenId`\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`userId`\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`groupId`\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`userId`\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`groupId`\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`tokenId`\u003c/span\u003e)\n"
                    }
                },
                "type": "object"
            }
        },
        "proxmoxve:index/certificateLegacy:CertificateLegacy": {
            "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.CertificateLegacy(\"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.CertificateLegacy(\"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.Index.PrivateKey(\"proxmox_virtual_environment_certificate\", new()\n    {\n        Algorithm = \"RSA\",\n        RsaBits = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2048) (example.pp:9,19-23)),\n    });\n\n    var proxmoxVirtualEnvironmentCertificateSelfSignedCert = new Tls.Index.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 = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(8760) (example.pp:20,25-29)),\n        AllowedUses = new[]\n        {\n            \"key_encipherment\",\n            \"digital_signature\",\n            \"server_auth\",\n        },\n    });\n\n    var example = new ProxmoxVE.Index.CertificateLegacy(\"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/v8/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.NewCertificateLegacy(ctx, \"example\", \u0026proxmoxve.CertificateLegacyArgs{\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.CertificateLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.CertificateLegacyArgs;\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(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2048) (example.pp:9,19-23)))\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(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(8760) (example.pp:20,25-29)))\n            .allowedUses(            \n                \"key_encipherment\",\n                \"digital_signature\",\n                \"server_auth\")\n            .build());\n\n        var example = new CertificateLegacy(\"example\", CertificateLegacyArgs.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:CertificateLegacy\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 CertificateLegacy 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/containerLegacy:ContainerLegacy": {
            "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.FileLegacy(\"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.ContainerLegacy(\"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.FileLegacy(\"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.ContainerLegacy(\"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.FileLegacy(\"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.Index.RandomPassword(\"ubuntu_container_password\", new()\n    {\n        Length = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(16) (example.pp:74,21-23)),\n        OverrideSpecial = \"_%@\",\n        Special = true,\n    });\n\n    var ubuntuContainerKey = new Tls.Index.PrivateKey(\"ubuntu_container_key\", new()\n    {\n        Algorithm = \"RSA\",\n        RsaBits = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2048) (example.pp:82,19-23)),\n    });\n\n    var ubuntuContainer = new ProxmoxVE.Index.ContainerLegacy(\"ubuntu_container\", new()\n    {\n        Description = \"Managed by Pulumi\",\n        NodeName = \"first-node\",\n        VmId = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1234) (example.pp:4,19-23)),\n        Unprivileged = true,\n        Features = new ProxmoxVE.Inputs.ContainerLegacyFeaturesArgs\n        {\n            Nesting = true,\n        },\n        Initialization = new ProxmoxVE.Inputs.ContainerLegacyInitializationArgs\n        {\n            Hostname = \"terraform-provider-proxmox-ubuntu-container\",\n            IpConfigs = new[]\n            {\n                new ProxmoxVE.Inputs.ContainerLegacyInitializationIpConfigArgs\n                {\n                    Ipv4 = new ProxmoxVE.Inputs.ContainerLegacyInitializationIpConfigIpv4Args\n                    {\n                        Address = \"dhcp\",\n                    },\n                },\n            },\n            UserAccount = new ProxmoxVE.Inputs.ContainerLegacyInitializationUserAccountArgs\n            {\n                Keys = new[]\n                {\n                    Std.Index.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.Inputs.ContainerLegacyNetworkInterfaceArgs\n            {\n                Name = \"veth0\",\n            },\n        },\n        Disk = new ProxmoxVE.Inputs.ContainerLegacyDiskArgs\n        {\n            DatastoreId = \"local-lvm\",\n            Size = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(4) (example.pp:31,19-20)),\n        },\n        OperatingSystem = new ProxmoxVE.Inputs.ContainerLegacyOperatingSystemArgs\n        {\n            TemplateFileId = ubuntu2504LxcImg.Id,\n            Type = \"ubuntu\",\n        },\n        MountPoints = new[]\n        {\n            new ProxmoxVE.Inputs.ContainerLegacyMountPointArgs\n            {\n                Volume = \"/mnt/bindmounts/shared\",\n                Path = \"/mnt/shared\",\n            },\n            new ProxmoxVE.Inputs.ContainerLegacyMountPointArgs\n            {\n                Volume = \"local-lvm\",\n                Size = \"10G\",\n                Path = \"/mnt/volume\",\n            },\n            new ProxmoxVE.Inputs.ContainerLegacyMountPointArgs\n            {\n                Volume = \"local-lvm:subvol-108-disk-101\",\n                Size = \"10G\",\n                Path = \"/mnt/data\",\n            },\n        },\n        Startup = new ProxmoxVE.Inputs.ContainerLegacyStartupArgs\n        {\n            Order = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(3) (:0,0-0)),\n            UpDelay = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(60) (:0,0-0)),\n            DownDelay = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(60) (:0,0-0)),\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/v8/go/proxmoxve\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/go/proxmoxve/download\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi-std/sdk/v2/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.NewFileLegacy(ctx, \"ubuntu_2504_lxc_img\", \u0026download.FileLegacyArgs{\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 = proxmoxve.NewContainerLegacy(ctx, \"ubuntu_container\", \u0026proxmoxve.ContainerLegacyArgs{\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: \u0026proxmoxve.ContainerLegacyFeaturesArgs{\n\t\t\t\tNesting: pulumi.Bool(true),\n\t\t\t},\n\t\t\tInitialization: \u0026proxmoxve.ContainerLegacyInitializationArgs{\n\t\t\t\tHostname: pulumi.String(\"terraform-provider-proxmox-ubuntu-container\"),\n\t\t\t\tIpConfigs: proxmoxve.ContainerLegacyInitializationIpConfigArray{\n\t\t\t\t\t\u0026proxmoxve.ContainerLegacyInitializationIpConfigArgs{\n\t\t\t\t\t\tIpv4: \u0026proxmoxve.ContainerLegacyInitializationIpConfigIpv4Args{\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: \u0026proxmoxve.ContainerLegacyInitializationUserAccountArgs{\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\tval := invoke.Result\n\t\t\t\t\t\t\treturn \u0026val, 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: proxmoxve.ContainerLegacyNetworkInterfaceArray{\n\t\t\t\t\u0026proxmoxve.ContainerLegacyNetworkInterfaceArgs{\n\t\t\t\t\tName: pulumi.String(\"veth0\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisk: \u0026proxmoxve.ContainerLegacyDiskArgs{\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: \u0026proxmoxve.ContainerLegacyOperatingSystemArgs{\n\t\t\t\tTemplateFileId: ubuntu2504LxcImg.ID(),\n\t\t\t\tType:           pulumi.String(\"ubuntu\"),\n\t\t\t},\n\t\t\tMountPoints: proxmoxve.ContainerLegacyMountPointArray{\n\t\t\t\t\u0026proxmoxve.ContainerLegacyMountPointArgs{\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\u0026proxmoxve.ContainerLegacyMountPointArgs{\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\u0026proxmoxve.ContainerLegacyMountPointArgs{\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: \u0026proxmoxve.ContainerLegacyStartupArgs{\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.FileLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.download.FileLegacyArgs;\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.ContainerLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.ContainerLegacyArgs;\nimport com.pulumi.proxmoxve.inputs.ContainerLegacyFeaturesArgs;\nimport com.pulumi.proxmoxve.inputs.ContainerLegacyInitializationArgs;\nimport com.pulumi.proxmoxve.inputs.ContainerLegacyInitializationUserAccountArgs;\nimport com.pulumi.proxmoxve.inputs.ContainerLegacyNetworkInterfaceArgs;\nimport com.pulumi.proxmoxve.inputs.ContainerLegacyDiskArgs;\nimport com.pulumi.proxmoxve.inputs.ContainerLegacyOperatingSystemArgs;\nimport com.pulumi.proxmoxve.inputs.ContainerLegacyMountPointArgs;\nimport com.pulumi.proxmoxve.inputs.ContainerLegacyStartupArgs;\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 FileLegacy(\"ubuntu2504LxcImg\", FileLegacyArgs.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(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(16) (example.pp:74,21-23)))\n            .overrideSpecial(\"_%@\")\n            .special(true)\n            .build());\n\n        var ubuntuContainerKey = new PrivateKey(\"ubuntuContainerKey\", PrivateKeyArgs.builder()\n            .algorithm(\"RSA\")\n            .rsaBits(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2048) (example.pp:82,19-23)))\n            .build());\n\n        var ubuntuContainer = new ContainerLegacy(\"ubuntuContainer\", ContainerLegacyArgs.builder()\n            .description(\"Managed by Pulumi\")\n            .nodeName(\"first-node\")\n            .vmId(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1234) (example.pp:4,19-23)))\n            .unprivileged(true)\n            .features(ContainerLegacyFeaturesArgs.builder()\n                .nesting(true)\n                .build())\n            .initialization(ContainerLegacyInitializationArgs.builder()\n                .hostname(\"terraform-provider-proxmox-ubuntu-container\")\n                .ipConfigs(ContainerLegacyInitializationIpConfigArgs.builder()\n                    .ipv4(ContainerLegacyInitializationIpConfigIpv4Args.builder()\n                        .address(\"dhcp\")\n                        .build())\n                    .build())\n                .userAccount(ContainerLegacyInitializationUserAccountArgs.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(ContainerLegacyNetworkInterfaceArgs.builder()\n                .name(\"veth0\")\n                .build())\n            .disk(ContainerLegacyDiskArgs.builder()\n                .datastoreId(\"local-lvm\")\n                .size(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(4) (example.pp:31,19-20)))\n                .build())\n            .operatingSystem(ContainerLegacyOperatingSystemArgs.builder()\n                .templateFileId(ubuntu2504LxcImg.id())\n                .type(\"ubuntu\")\n                .build())\n            .mountPoints(            \n                ContainerLegacyMountPointArgs.builder()\n                    .volume(\"/mnt/bindmounts/shared\")\n                    .path(\"/mnt/shared\")\n                    .build(),\n                ContainerLegacyMountPointArgs.builder()\n                    .volume(\"local-lvm\")\n                    .size(\"10G\")\n                    .path(\"/mnt/volume\")\n                    .build(),\n                ContainerLegacyMountPointArgs.builder()\n                    .volume(\"local-lvm:subvol-108-disk-101\")\n                    .size(\"10G\")\n                    .path(\"/mnt/data\")\n                    .build())\n            .startup(ContainerLegacyStartupArgs.builder()\n                .order(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(3) (:0,0-0)))\n                .upDelay(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(60) (:0,0-0)))\n                .downDelay(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(60) (:0,0-0)))\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:ContainerLegacy\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:FileLegacy\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 \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`nodeName`\u003c/span\u003e and the \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`vmId`\u003c/span\u003e, e.g.,\n\n```sh\n$ pulumi import proxmoxve:index/containerLegacy:ContainerLegacy ubuntu_container first-node/1234\n```\n\n",
            "properties": {
                "clone": {
                    "$ref": "#/types/proxmoxve:index/ContainerLegacyClone:ContainerLegacyClone",
                    "description": "The cloning configuration.\n"
                },
                "console": {
                    "$ref": "#/types/proxmoxve:index/ContainerLegacyConsole:ContainerLegacyConsole",
                    "description": "The console configuration.\n"
                },
                "cpu": {
                    "$ref": "#/types/proxmoxve:index/ContainerLegacyCpu:ContainerLegacyCpu",
                    "description": "The CPU configuration.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description.\n"
                },
                "devicePassthroughs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/proxmoxve:index/ContainerLegacyDevicePassthrough:ContainerLegacyDevicePassthrough"
                    },
                    "description": "Device to pass through to the container (multiple blocks supported).\n"
                },
                "disk": {
                    "$ref": "#/types/proxmoxve:index/ContainerLegacyDisk:ContainerLegacyDisk",
                    "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:index/ContainerLegacyFeatures:ContainerLegacyFeatures",
                    "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"
                },
                "idmaps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/proxmoxve:index/ContainerLegacyIdmap:ContainerLegacyIdmap"
                    },
                    "description": "UID/GID mapping for unprivileged containers (multiple\nblocks supported). These are written as `lxc.idmap` entries in the container\nconfiguration file via SSH, since the Proxmox API does not support writing\n`lxc[n]` parameters.\n"
                },
                "initialization": {
                    "$ref": "#/types/proxmoxve:index/ContainerLegacyInitialization:ContainerLegacyInitialization",
                    "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:index/ContainerLegacyMemory:ContainerLegacyMemory",
                    "description": "The memory configuration.\n"
                },
                "mountPoints": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/proxmoxve:index/ContainerLegacyMountPoint:ContainerLegacyMountPoint"
                    },
                    "description": "A mount point"
                },
                "networkInterfaces": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/proxmoxve:index/ContainerLegacyNetworkInterface:ContainerLegacyNetworkInterface"
                    },
                    "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:index/ContainerLegacyOperatingSystem:ContainerLegacyOperatingSystem",
                    "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:index/ContainerLegacyStartup:ContainerLegacyStartup",
                    "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`ignoreChanges`\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`timeoutCreate`\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`timeoutClone`\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:index/ContainerLegacyWaitForIp:ContainerLegacyWaitForIp",
                    "description": "Configuration for waiting for specific IP address types when the container starts.\n"
                }
            },
            "required": [
                "ipv4",
                "ipv6",
                "nodeName",
                "vmId"
            ],
            "inputProperties": {
                "clone": {
                    "$ref": "#/types/proxmoxve:index/ContainerLegacyClone:ContainerLegacyClone",
                    "description": "The cloning configuration.\n"
                },
                "console": {
                    "$ref": "#/types/proxmoxve:index/ContainerLegacyConsole:ContainerLegacyConsole",
                    "description": "The console configuration.\n"
                },
                "cpu": {
                    "$ref": "#/types/proxmoxve:index/ContainerLegacyCpu:ContainerLegacyCpu",
                    "description": "The CPU configuration.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description.\n"
                },
                "devicePassthroughs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/proxmoxve:index/ContainerLegacyDevicePassthrough:ContainerLegacyDevicePassthrough"
                    },
                    "description": "Device to pass through to the container (multiple blocks supported).\n"
                },
                "disk": {
                    "$ref": "#/types/proxmoxve:index/ContainerLegacyDisk:ContainerLegacyDisk",
                    "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:index/ContainerLegacyFeatures:ContainerLegacyFeatures",
                    "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"
                },
                "idmaps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/proxmoxve:index/ContainerLegacyIdmap:ContainerLegacyIdmap"
                    },
                    "description": "UID/GID mapping for unprivileged containers (multiple\nblocks supported). These are written as `lxc.idmap` entries in the container\nconfiguration file via SSH, since the Proxmox API does not support writing\n`lxc[n]` parameters.\n"
                },
                "initialization": {
                    "$ref": "#/types/proxmoxve:index/ContainerLegacyInitialization:ContainerLegacyInitialization",
                    "description": "The initialization configuration.\n"
                },
                "memory": {
                    "$ref": "#/types/proxmoxve:index/ContainerLegacyMemory:ContainerLegacyMemory",
                    "description": "The memory configuration.\n"
                },
                "mountPoints": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/proxmoxve:index/ContainerLegacyMountPoint:ContainerLegacyMountPoint"
                    },
                    "description": "A mount point",
                    "willReplaceOnChanges": true
                },
                "networkInterfaces": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/proxmoxve:index/ContainerLegacyNetworkInterface:ContainerLegacyNetworkInterface"
                    },
                    "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:index/ContainerLegacyOperatingSystem:ContainerLegacyOperatingSystem",
                    "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:index/ContainerLegacyStartup:ContainerLegacyStartup",
                    "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`ignoreChanges`\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`timeoutCreate`\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`timeoutClone`\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:index/ContainerLegacyWaitForIp:ContainerLegacyWaitForIp",
                    "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 ContainerLegacy resources.\n",
                "properties": {
                    "clone": {
                        "$ref": "#/types/proxmoxve:index/ContainerLegacyClone:ContainerLegacyClone",
                        "description": "The cloning configuration.\n"
                    },
                    "console": {
                        "$ref": "#/types/proxmoxve:index/ContainerLegacyConsole:ContainerLegacyConsole",
                        "description": "The console configuration.\n"
                    },
                    "cpu": {
                        "$ref": "#/types/proxmoxve:index/ContainerLegacyCpu:ContainerLegacyCpu",
                        "description": "The CPU configuration.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "The description.\n"
                    },
                    "devicePassthroughs": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/proxmoxve:index/ContainerLegacyDevicePassthrough:ContainerLegacyDevicePassthrough"
                        },
                        "description": "Device to pass through to the container (multiple blocks supported).\n"
                    },
                    "disk": {
                        "$ref": "#/types/proxmoxve:index/ContainerLegacyDisk:ContainerLegacyDisk",
                        "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:index/ContainerLegacyFeatures:ContainerLegacyFeatures",
                        "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"
                    },
                    "idmaps": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/proxmoxve:index/ContainerLegacyIdmap:ContainerLegacyIdmap"
                        },
                        "description": "UID/GID mapping for unprivileged containers (multiple\nblocks supported). These are written as `lxc.idmap` entries in the container\nconfiguration file via SSH, since the Proxmox API does not support writing\n`lxc[n]` parameters.\n"
                    },
                    "initialization": {
                        "$ref": "#/types/proxmoxve:index/ContainerLegacyInitialization:ContainerLegacyInitialization",
                        "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:index/ContainerLegacyMemory:ContainerLegacyMemory",
                        "description": "The memory configuration.\n"
                    },
                    "mountPoints": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/proxmoxve:index/ContainerLegacyMountPoint:ContainerLegacyMountPoint"
                        },
                        "description": "A mount point",
                        "willReplaceOnChanges": true
                    },
                    "networkInterfaces": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/proxmoxve:index/ContainerLegacyNetworkInterface:ContainerLegacyNetworkInterface"
                        },
                        "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:index/ContainerLegacyOperatingSystem:ContainerLegacyOperatingSystem",
                        "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:index/ContainerLegacyStartup:ContainerLegacyStartup",
                        "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`ignoreChanges`\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`timeoutCreate`\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`timeoutClone`\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:index/ContainerLegacyWaitForIp:ContainerLegacyWaitForIp",
                        "description": "Configuration for waiting for specific IP address types when the container starts.\n"
                    }
                },
                "type": "object"
            }
        },
        "proxmoxve:index/dnsLegacy:DnsLegacy": {
            "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.getDnsLegacy({\n    nodeName: \"first-node\",\n});\nconst firstNodeDnsConfigurationDnsLegacy = new proxmoxve.DnsLegacy(\"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.get_dns_legacy(node_name=\"first-node\")\nfirst_node_dns_configuration_dns_legacy = proxmoxve.DnsLegacy(\"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.Index.GetDnsLegacy.Invoke(new()\n    {\n        NodeName = \"first-node\",\n    });\n\n    var firstNodeDnsConfigurationDnsLegacy = new ProxmoxVE.Index.DnsLegacy(\"first_node_dns_configuration\", new()\n    {\n        Domain = firstNodeDnsConfiguration.Apply(getDnsLegacyResult =\u003e getDnsLegacyResult.Domain),\n        NodeName = firstNodeDnsConfiguration.Apply(getDnsLegacyResult =\u003e getDnsLegacyResult.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/v8/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\tfirstNodeDnsConfiguration, err := proxmoxve.GetDnsLegacy(ctx, \u0026proxmoxve.LookupDnsLegacyArgs{\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.NewDnsLegacy(ctx, \"first_node_dns_configuration\", \u0026proxmoxve.DnsLegacyArgs{\n\t\t\tDomain:   pulumi.String(pulumi.String(firstNodeDnsConfiguration.Domain)),\n\t\t\tNodeName: pulumi.String(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.ProxmoxveFunctions;\nimport com.pulumi.proxmoxve.inputs.GetDnsLegacyArgs;\nimport io.muehlbachler.pulumi.proxmoxve.DnsLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.DnsLegacyArgs;\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 = ProxmoxveFunctions.getDnsLegacy(GetDnsLegacyArgs.builder()\n            .nodeName(\"first-node\")\n            .build());\n\n        var firstNodeDnsConfigurationDnsLegacy = new DnsLegacy(\"firstNodeDnsConfigurationDnsLegacy\", DnsLegacyArgs.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  firstNodeDnsConfigurationDnsLegacy:\n    type: proxmoxve:DnsLegacy\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:getDnsLegacy\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 \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`nodeName`\u003c/span\u003e, e.g.,\n\n```sh\n$ pulumi import proxmoxve:index/dnsLegacy:DnsLegacy 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 DnsLegacy 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/fileLegacy:FileLegacy": {
            "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`contentType`\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.FileLegacy(\"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.FileLegacy(\"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.Index.FileLegacy(\"backup\", new()\n    {\n        ContentType = \"backup\",\n        DatastoreId = \"local\",\n        NodeName = \"pve\",\n        SourceFile = new ProxmoxVE.Inputs.FileLegacySourceFileArgs\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/v8/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.NewFileLegacy(ctx, \"backup\", \u0026proxmoxve.FileLegacyArgs{\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: \u0026proxmoxve.FileLegacySourceFileArgs{\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.FileLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.FileLegacyArgs;\nimport com.pulumi.proxmoxve.inputs.FileLegacySourceFileArgs;\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 FileLegacy(\"backup\", FileLegacyArgs.builder()\n            .contentType(\"backup\")\n            .datastoreId(\"local\")\n            .nodeName(\"pve\")\n            .sourceFile(FileLegacySourceFileArgs.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:FileLegacy\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.FileLegacy`\" pulumi-lang-dotnet=\"`proxmoxve.download.FileLegacy`\" pulumi-lang-go=\"`download.FileLegacy`\" pulumi-lang-python=\"`download.FileLegacy`\" pulumi-lang-yaml=\"`proxmoxve.download.FileLegacy`\" pulumi-lang-java=\"`proxmoxve.download.FileLegacy`\"\u003e`proxmoxve.download.FileLegacy`\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`contentType \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.FileLegacy(\"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.FileLegacy(\"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.Index.FileLegacy(\"ubuntu_container_template\", new()\n    {\n        ContentType = \"iso\",\n        DatastoreId = \"local\",\n        NodeName = \"pve\",\n        SourceFile = new ProxmoxVE.Inputs.FileLegacySourceFileArgs\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/v8/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.NewFileLegacy(ctx, \"ubuntu_container_template\", \u0026proxmoxve.FileLegacyArgs{\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: \u0026proxmoxve.FileLegacySourceFileArgs{\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.FileLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.FileLegacyArgs;\nimport com.pulumi.proxmoxve.inputs.FileLegacySourceFileArgs;\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 FileLegacy(\"ubuntuContainerTemplate\", FileLegacyArgs.builder()\n            .contentType(\"iso\")\n            .datastoreId(\"local\")\n            .nodeName(\"pve\")\n            .sourceFile(FileLegacySourceFileArgs.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:FileLegacy\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.FileLegacy(\"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.FileLegacy(\"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.Index.FileLegacy(\"ubuntu_container_template\", new()\n    {\n        ContentType = \"import\",\n        DatastoreId = \"local\",\n        NodeName = \"pve\",\n        SourceFile = new ProxmoxVE.Inputs.FileLegacySourceFileArgs\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/v8/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.NewFileLegacy(ctx, \"ubuntu_container_template\", \u0026proxmoxve.FileLegacyArgs{\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: \u0026proxmoxve.FileLegacySourceFileArgs{\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.FileLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.FileLegacyArgs;\nimport com.pulumi.proxmoxve.inputs.FileLegacySourceFileArgs;\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 FileLegacy(\"ubuntuContainerTemplate\", FileLegacyArgs.builder()\n            .contentType(\"import\")\n            .datastoreId(\"local\")\n            .nodeName(\"pve\")\n            .sourceFile(FileLegacySourceFileArgs.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:FileLegacy\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.FileLegacy(\"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.FileLegacy(\"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.Index.FileLegacy(\"cloud_config\", new()\n    {\n        ContentType = \"snippets\",\n        DatastoreId = \"local\",\n        NodeName = \"pve\",\n        SourceRaw = new ProxmoxVE.Inputs.FileLegacySourceRawArgs\n        {\n            Data = Std.Index.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\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/go/proxmoxve\"\n\t\"github.com/pulumi/pulumi-std/sdk/v2/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 = proxmoxve.NewFileLegacy(ctx, \"cloud_config\", \u0026proxmoxve.FileLegacyArgs{\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: \u0026proxmoxve.FileLegacySourceRawArgs{\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.FileLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.FileLegacyArgs;\nimport com.pulumi.proxmoxve.inputs.FileLegacySourceRawArgs;\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 FileLegacy(\"cloudConfig\", FileLegacyArgs.builder()\n            .contentType(\"snippets\")\n            .datastoreId(\"local\")\n            .nodeName(\"pve\")\n            .sourceRaw(FileLegacySourceRawArgs.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:FileLegacy\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`fileMode`\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`hookScriptFileId`\u003c/span\u003e attribute of [a container](https://bpg.sh/docs/resources/virtual_environment_container#hook-script-file-id) or [a VM](https://bpg.sh/docs/resources/virtual_environment_vm#hook-script-file-id) 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.FileLegacy(\"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.FileLegacy(\"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.Index.FileLegacy(\"hook_script\", new()\n    {\n        ContentType = \"snippets\",\n        DatastoreId = \"local\",\n        NodeName = \"pve\",\n        FileMode = \"0700\",\n        SourceRaw = new ProxmoxVE.Inputs.FileLegacySourceRawArgs\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/v8/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.NewFileLegacy(ctx, \"hook_script\", \u0026proxmoxve.FileLegacyArgs{\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: \u0026proxmoxve.FileLegacySourceRawArgs{\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.FileLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.FileLegacyArgs;\nimport com.pulumi.proxmoxve.inputs.FileLegacySourceRawArgs;\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 FileLegacy(\"hookScript\", FileLegacyArgs.builder()\n            .contentType(\"snippets\")\n            .datastoreId(\"local\")\n            .nodeName(\"pve\")\n            .fileMode(\"0700\")\n            .sourceRaw(FileLegacySourceRawArgs.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:FileLegacy\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.FileLegacy`\" pulumi-lang-dotnet=\"`proxmoxve.download.FileLegacy`\" pulumi-lang-go=\"`download.FileLegacy`\" pulumi-lang-python=\"`download.FileLegacy`\" pulumi-lang-yaml=\"`proxmoxve.download.FileLegacy`\" pulumi-lang-java=\"`proxmoxve.download.FileLegacy`\"\u003e`proxmoxve.download.FileLegacy`\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.FileLegacy(\"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.FileLegacy(\"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.Index.FileLegacy(\"ubuntu_container_template\", new()\n    {\n        ContentType = \"vztmpl\",\n        DatastoreId = \"local\",\n        NodeName = \"first-node\",\n        SourceFile = new ProxmoxVE.Inputs.FileLegacySourceFileArgs\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/v8/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.NewFileLegacy(ctx, \"ubuntu_container_template\", \u0026proxmoxve.FileLegacyArgs{\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: \u0026proxmoxve.FileLegacySourceFileArgs{\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.FileLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.FileLegacyArgs;\nimport com.pulumi.proxmoxve.inputs.FileLegacySourceFileArgs;\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 FileLegacy(\"ubuntuContainerTemplate\", FileLegacyArgs.builder()\n            .contentType(\"vztmpl\")\n            .datastoreId(\"local\")\n            .nodeName(\"first-node\")\n            .sourceFile(FileLegacySourceFileArgs.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:FileLegacy\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 \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`nodeName`\u003c/span\u003e, \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`datastoreId`\u003c/span\u003e, \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`contentType`\u003c/span\u003e\nand the \u003cspan pulumi-lang-nodejs=\"`fileName`\" pulumi-lang-dotnet=\"`FileName`\" pulumi-lang-go=\"`fileName`\" pulumi-lang-python=\"`file_name`\" pulumi-lang-yaml=\"`fileName`\" pulumi-lang-java=\"`fileName`\"\u003e`fileName`\u003c/span\u003e in the following format:\n\n```text\nnode_name:datastore_id/content_type/file_name\n```\n\nExample:\n\n```sh\n$ pulumi import proxmoxve:index/fileLegacy:FileLegacy 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:index/FileLegacySourceFile:FileLegacySourceFile",
                    "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`sourceRaw`\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:index/FileLegacySourceRaw:FileLegacySourceRaw",
                    "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`sourceFile`\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:index/FileLegacySourceFile:FileLegacySourceFile",
                    "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`sourceRaw`\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:index/FileLegacySourceRaw:FileLegacySourceRaw",
                    "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`sourceFile`\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 FileLegacy 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:index/FileLegacySourceFile:FileLegacySourceFile",
                        "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`sourceRaw`\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:index/FileLegacySourceRaw:FileLegacySourceRaw",
                        "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`sourceFile`\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:index/groupLegacy:GroupLegacy": {
            "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.GroupLegacy(\"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.GroupLegacy(\"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.Index.GroupLegacy(\"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/v8/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.NewGroupLegacy(ctx, \"operations_team\", \u0026proxmoxve.GroupLegacyArgs{\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.GroupLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.GroupLegacyArgs;\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 GroupLegacy(\"operationsTeam\", GroupLegacyArgs.builder()\n            .comment(\"Managed by Pulumi\")\n            .groupId(\"operations-team\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  operationsTeam:\n    type: proxmoxve:GroupLegacy\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 \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`groupId`\u003c/span\u003e, e.g.,\n\n```sh\n$ pulumi import proxmoxve:index/groupLegacy:GroupLegacy operations_team operations-team\n```\n\n",
            "properties": {
                "acls": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/proxmoxve:index/GroupLegacyAcl:GroupLegacyAcl"
                    },
                    "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:index/GroupLegacyAcl:GroupLegacyAcl"
                    },
                    "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 GroupLegacy resources.\n",
                "properties": {
                    "acls": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/proxmoxve:index/GroupLegacyAcl:GroupLegacyAcl"
                        },
                        "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:index/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.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.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.Index.Hagroup(\"example\", new()\n    {\n        Group = \"example\",\n        Comment = \"This is a comment.\",\n        Nodes = \n        {\n            { \"node1\", null },\n            { \"node2\", %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2) (example.pp:5,13-14)) },\n            { \"node3\", %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1) (example.pp:6,13-14)) },\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/v8/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.NewHagroup(ctx, \"example\", \u0026proxmoxve.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.Hagroup;\nimport io.muehlbachler.pulumi.proxmoxve.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\", %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2) (example.pp:5,13-14))),\n                Map.entry(\"node3\", %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1) (example.pp:6,13-14)))\n            ))\n            .restricted(true)\n            .noFailback(false)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve: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\nHA groups can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:index/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:index/hagroupLegacy:HagroupLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.Hagroup`\" pulumi-lang-dotnet=\"`proxmoxve.Hagroup`\" pulumi-lang-go=\"`Hagroup`\" pulumi-lang-python=\"`Hagroup`\" pulumi-lang-yaml=\"`proxmoxve.Hagroup`\" pulumi-lang-java=\"`proxmoxve.Hagroup`\"\u003e`proxmoxve.Hagroup`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages 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.HagroupLegacy(\"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.HagroupLegacy(\"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.Index.HagroupLegacy(\"example\", new()\n    {\n        Group = \"example\",\n        Comment = \"This is a comment.\",\n        Nodes = \n        {\n            { \"node1\", null },\n            { \"node2\", %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2) (example.pp:5,13-14)) },\n            { \"node3\", %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1) (example.pp:6,13-14)) },\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/v8/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.NewHagroupLegacy(ctx, \"example\", \u0026proxmoxve.HagroupLegacyArgs{\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.HagroupLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.HagroupLegacyArgs;\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 HagroupLegacy(\"example\", HagroupLegacyArgs.builder()\n            .group(\"example\")\n            .comment(\"This is a comment.\")\n            .nodes(Map.ofEntries(\n                Map.entry(\"node1\", null),\n                Map.entry(\"node2\", %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2) (example.pp:5,13-14))),\n                Map.entry(\"node3\", %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1) (example.pp:6,13-14)))\n            ))\n            .restricted(true)\n            .noFailback(false)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:HagroupLegacy\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\nHA groups can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:index/hagroupLegacy:HagroupLegacy 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 HagroupLegacy 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:index/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.Haresource(\"example\", {\n    resourceId: \"vm:123\",\n    state: \"started\",\n    group: \"example\",\n    comment: \"Managed by Pulumi\",\n}, {\n    dependsOn: [exampleProxmoxHagroup],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.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_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.Index.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            exampleProxmoxHagroup,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.NewHaresource(ctx, \"example\", \u0026proxmoxve.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\texampleProxmoxHagroup,\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.Haresource;\nimport io.muehlbachler.pulumi.proxmoxve.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(exampleProxmoxHagroup)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:Haresource\n    properties:\n      resourceId: vm:123\n      state: started\n      group: example\n      comment: Managed by Pulumi\n    options:\n      dependsOn:\n        - ${exampleProxmoxHagroup}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n!/usr/bin/env sh\nHA resources can be imported using their identifiers, e.g.:\n\n```sh\n$ pulumi import proxmoxve:index/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`resourceId`\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`resourceId`\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`resourceId`\u003c/span\u003e.\n"
                    }
                },
                "type": "object"
            }
        },
        "proxmoxve:index/haresourceLegacy:HaresourceLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.Haresource`\" pulumi-lang-dotnet=\"`proxmoxve.Haresource`\" pulumi-lang-go=\"`Haresource`\" pulumi-lang-python=\"`Haresource`\" pulumi-lang-yaml=\"`proxmoxve.Haresource`\" pulumi-lang-java=\"`proxmoxve.Haresource`\"\u003e`proxmoxve.Haresource`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages 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.HaresourceLegacy(\"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.HaresourceLegacy(\"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.Index.HaresourceLegacy(\"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/v8/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.NewHaresourceLegacy(ctx, \"example\", \u0026proxmoxve.HaresourceLegacyArgs{\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.HaresourceLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.HaresourceLegacyArgs;\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 HaresourceLegacy(\"example\", HaresourceLegacyArgs.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:HaresourceLegacy\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\nHA resources can be imported using their identifiers, e.g.:\n\n```sh\n$ pulumi import proxmoxve:index/haresourceLegacy:HaresourceLegacy 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`resourceId`\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`resourceId`\u003c/span\u003e.\n"
                }
            },
            "requiredInputs": [
                "resourceId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering HaresourceLegacy 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`resourceId`\u003c/span\u003e.\n"
                    }
                },
                "type": "object"
            }
        },
        "proxmoxve:index/harule:Harule": {
            "description": "Manages a High Availability rule in a Proxmox VE cluster (PVE 9+). HA rules replace the legacy HA groups and provide node affinity and resource affinity capabilities.\n\n\u003e **Note:** This resource requires Proxmox VE 9.0 or later. In PVE 9, HA groups\nhave been replaced by HA rules, which provide node affinity and resource affinity\ncapabilities. For PVE 8 and earlier, use\n\u003cspan pulumi-lang-nodejs=\"`proxmoxve.Hagroup`\" pulumi-lang-dotnet=\"`proxmoxve.Hagroup`\" pulumi-lang-go=\"`Hagroup`\" pulumi-lang-python=\"`Hagroup`\" pulumi-lang-yaml=\"`proxmoxve.Hagroup`\" pulumi-lang-java=\"`proxmoxve.Hagroup`\"\u003e`proxmoxve.Hagroup`\u003c/span\u003e instead.\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// Node Affinity Rule: assign VMs to preferred nodes with priorities.\n// Non-strict rules allow failover to other nodes; strict rules do not.\nconst preferNode1 = new proxmoxve.Harule(\"prefer_node1\", {\n    rule: \"prefer-node1\",\n    type: \"node-affinity\",\n    comment: \"Prefer node1 for these VMs\",\n    resources: [\n        \"vm:100\",\n        \"vm:101\",\n    ],\n    nodes: {\n        node1: 2,\n        node2: 1,\n        node3: 1,\n    },\n    strict: false,\n});\n// Resource Affinity Rule (Positive): keep resources together on the same node.\nconst keepTogether = new proxmoxve.Harule(\"keep_together\", {\n    rule: \"db-cluster-together\",\n    type: \"resource-affinity\",\n    comment: \"Keep database replicas on the same node\",\n    resources: [\n        \"vm:200\",\n        \"vm:201\",\n    ],\n    affinity: \"positive\",\n});\n// Resource Affinity Rule (Negative / Anti-Affinity): keep resources on\n// separate nodes for high availability.\nconst keepApart = new proxmoxve.Harule(\"keep_apart\", {\n    rule: \"db-cluster-apart\",\n    type: \"resource-affinity\",\n    comment: \"Spread database replicas across nodes\",\n    resources: [\n        \"vm:200\",\n        \"vm:201\",\n        \"vm:202\",\n    ],\n    affinity: \"negative\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# Node Affinity Rule: assign VMs to preferred nodes with priorities.\n# Non-strict rules allow failover to other nodes; strict rules do not.\nprefer_node1 = proxmoxve.Harule(\"prefer_node1\",\n    rule=\"prefer-node1\",\n    type=\"node-affinity\",\n    comment=\"Prefer node1 for these VMs\",\n    resources=[\n        \"vm:100\",\n        \"vm:101\",\n    ],\n    nodes={\n        \"node1\": 2,\n        \"node2\": 1,\n        \"node3\": 1,\n    },\n    strict=False)\n# Resource Affinity Rule (Positive): keep resources together on the same node.\nkeep_together = proxmoxve.Harule(\"keep_together\",\n    rule=\"db-cluster-together\",\n    type=\"resource-affinity\",\n    comment=\"Keep database replicas on the same node\",\n    resources=[\n        \"vm:200\",\n        \"vm:201\",\n    ],\n    affinity=\"positive\")\n# Resource Affinity Rule (Negative / Anti-Affinity): keep resources on\n# separate nodes for high availability.\nkeep_apart = proxmoxve.Harule(\"keep_apart\",\n    rule=\"db-cluster-apart\",\n    type=\"resource-affinity\",\n    comment=\"Spread database replicas across nodes\",\n    resources=[\n        \"vm:200\",\n        \"vm:201\",\n        \"vm:202\",\n    ],\n    affinity=\"negative\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Node Affinity Rule: assign VMs to preferred nodes with priorities.\n    // Non-strict rules allow failover to other nodes; strict rules do not.\n    var preferNode1 = new ProxmoxVE.Index.Harule(\"prefer_node1\", new()\n    {\n        Rule = \"prefer-node1\",\n        Type = \"node-affinity\",\n        Comment = \"Prefer node1 for these VMs\",\n        Resources = new[]\n        {\n            \"vm:100\",\n            \"vm:101\",\n        },\n        Nodes = \n        {\n            { \"node1\", %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2) (example.pp:9,13-14)) },\n            { \"node2\", %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1) (example.pp:11,13-14)) },\n            { \"node3\", %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1) (example.pp:12,13-14)) },\n        },\n        Strict = false,\n    });\n\n    // Resource Affinity Rule (Positive): keep resources together on the same node.\n    var keepTogether = new ProxmoxVE.Index.Harule(\"keep_together\", new()\n    {\n        Rule = \"db-cluster-together\",\n        Type = \"resource-affinity\",\n        Comment = \"Keep database replicas on the same node\",\n        Resources = new[]\n        {\n            \"vm:200\",\n            \"vm:201\",\n        },\n        Affinity = \"positive\",\n    });\n\n    // Resource Affinity Rule (Negative / Anti-Affinity): keep resources on\n    // separate nodes for high availability.\n    var keepApart = new ProxmoxVE.Index.Harule(\"keep_apart\", new()\n    {\n        Rule = \"db-cluster-apart\",\n        Type = \"resource-affinity\",\n        Comment = \"Spread database replicas across nodes\",\n        Resources = new[]\n        {\n            \"vm:200\",\n            \"vm:201\",\n            \"vm:202\",\n        },\n        Affinity = \"negative\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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// Node Affinity Rule: assign VMs to preferred nodes with priorities.\n\t\t// Non-strict rules allow failover to other nodes; strict rules do not.\n\t\t_, err := proxmoxve.NewHarule(ctx, \"prefer_node1\", \u0026proxmoxve.HaruleArgs{\n\t\t\tRule:    pulumi.String(\"prefer-node1\"),\n\t\t\tType:    pulumi.String(\"node-affinity\"),\n\t\t\tComment: pulumi.String(\"Prefer node1 for these VMs\"),\n\t\t\tResources: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"vm:100\"),\n\t\t\t\tpulumi.String(\"vm:101\"),\n\t\t\t},\n\t\t\tNodes: pulumi.IntMap{\n\t\t\t\t\"node1\": pulumi.Int(2),\n\t\t\t\t\"node2\": pulumi.Int(1),\n\t\t\t\t\"node3\": pulumi.Int(1),\n\t\t\t},\n\t\t\tStrict: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Resource Affinity Rule (Positive): keep resources together on the same node.\n\t\t_, err = proxmoxve.NewHarule(ctx, \"keep_together\", \u0026proxmoxve.HaruleArgs{\n\t\t\tRule:    pulumi.String(\"db-cluster-together\"),\n\t\t\tType:    pulumi.String(\"resource-affinity\"),\n\t\t\tComment: pulumi.String(\"Keep database replicas on the same node\"),\n\t\t\tResources: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"vm:200\"),\n\t\t\t\tpulumi.String(\"vm:201\"),\n\t\t\t},\n\t\t\tAffinity: pulumi.String(\"positive\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Resource Affinity Rule (Negative / Anti-Affinity): keep resources on\n\t\t// separate nodes for high availability.\n\t\t_, err = proxmoxve.NewHarule(ctx, \"keep_apart\", \u0026proxmoxve.HaruleArgs{\n\t\t\tRule:    pulumi.String(\"db-cluster-apart\"),\n\t\t\tType:    pulumi.String(\"resource-affinity\"),\n\t\t\tComment: pulumi.String(\"Spread database replicas across nodes\"),\n\t\t\tResources: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"vm:200\"),\n\t\t\t\tpulumi.String(\"vm:201\"),\n\t\t\t\tpulumi.String(\"vm:202\"),\n\t\t\t},\n\t\t\tAffinity: pulumi.String(\"negative\"),\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.Harule;\nimport io.muehlbachler.pulumi.proxmoxve.HaruleArgs;\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        // Node Affinity Rule: assign VMs to preferred nodes with priorities.\n        // Non-strict rules allow failover to other nodes; strict rules do not.\n        var preferNode1 = new Harule(\"preferNode1\", HaruleArgs.builder()\n            .rule(\"prefer-node1\")\n            .type(\"node-affinity\")\n            .comment(\"Prefer node1 for these VMs\")\n            .resources(            \n                \"vm:100\",\n                \"vm:101\")\n            .nodes(Map.ofEntries(\n                Map.entry(\"node1\", %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2) (example.pp:9,13-14))),\n                Map.entry(\"node2\", %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1) (example.pp:11,13-14))),\n                Map.entry(\"node3\", %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1) (example.pp:12,13-14)))\n            ))\n            .strict(false)\n            .build());\n\n        // Resource Affinity Rule (Positive): keep resources together on the same node.\n        var keepTogether = new Harule(\"keepTogether\", HaruleArgs.builder()\n            .rule(\"db-cluster-together\")\n            .type(\"resource-affinity\")\n            .comment(\"Keep database replicas on the same node\")\n            .resources(            \n                \"vm:200\",\n                \"vm:201\")\n            .affinity(\"positive\")\n            .build());\n\n        // Resource Affinity Rule (Negative / Anti-Affinity): keep resources on\n        // separate nodes for high availability.\n        var keepApart = new Harule(\"keepApart\", HaruleArgs.builder()\n            .rule(\"db-cluster-apart\")\n            .type(\"resource-affinity\")\n            .comment(\"Spread database replicas across nodes\")\n            .resources(            \n                \"vm:200\",\n                \"vm:201\",\n                \"vm:202\")\n            .affinity(\"negative\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Node Affinity Rule: assign VMs to preferred nodes with priorities.\n  # Non-strict rules allow failover to other nodes; strict rules do not.\n  preferNode1:\n    type: proxmoxve:Harule\n    name: prefer_node1\n    properties:\n      rule: prefer-node1\n      type: node-affinity\n      comment: Prefer node1 for these VMs\n      resources:\n        - vm:100\n        - vm:101\n      nodes:\n        node1: 2\n        node2: 1\n        node3: 1\n      strict: false\n  # Resource Affinity Rule (Positive): keep resources together on the same node.\n  keepTogether:\n    type: proxmoxve:Harule\n    name: keep_together\n    properties:\n      rule: db-cluster-together\n      type: resource-affinity\n      comment: Keep database replicas on the same node\n      resources:\n        - vm:200\n        - vm:201\n      affinity: positive\n  # Resource Affinity Rule (Negative / Anti-Affinity): keep resources on\n  # separate nodes for high availability.\n  keepApart:\n    type: proxmoxve:Harule\n    name: keep_apart\n    properties:\n      rule: db-cluster-apart\n      type: resource-affinity\n      comment: Spread database replicas across nodes\n      resources:\n        - vm:200\n        - vm:201\n        - vm:202\n      affinity: negative\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n!/usr/bin/env sh\nHA rules can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:index/harule:Harule example prefer-node1\n```\n\n",
            "properties": {
                "affinity": {
                    "type": "string",
                    "description": "The resource affinity type (resource-affinity only). \u003cspan pulumi-lang-nodejs=\"`positive`\" pulumi-lang-dotnet=\"`Positive`\" pulumi-lang-go=\"`positive`\" pulumi-lang-python=\"`positive`\" pulumi-lang-yaml=\"`positive`\" pulumi-lang-java=\"`positive`\"\u003e`positive`\u003c/span\u003e keeps resources on the same node, \u003cspan pulumi-lang-nodejs=\"`negative`\" pulumi-lang-dotnet=\"`Negative`\" pulumi-lang-go=\"`negative`\" pulumi-lang-python=\"`negative`\" pulumi-lang-yaml=\"`negative`\" pulumi-lang-java=\"`negative`\"\u003e`negative`\u003c/span\u003e keeps them on separate nodes.\n"
                },
                "comment": {
                    "type": "string",
                    "description": "The comment associated with this rule.\n"
                },
                "disable": {
                    "type": "boolean",
                    "description": "Whether the HA rule is disabled. 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 rule (node-affinity only). 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"
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The set of HA resource IDs that this rule applies to (e.g. `vm:100`, `ct:101`). The resources must already be managed by HA.\n"
                },
                "rule": {
                    "type": "string",
                    "description": "The identifier of the High Availability rule to manage.\n"
                },
                "strict": {
                    "type": "boolean",
                    "description": "Whether the node affinity rule is strict (node-affinity only). When strict, resources cannot run on nodes not listed. 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 HA rule type. Must be `node-affinity` or `resource-affinity`.\n"
                }
            },
            "required": [
                "disable",
                "resources",
                "rule",
                "strict",
                "type"
            ],
            "inputProperties": {
                "affinity": {
                    "type": "string",
                    "description": "The resource affinity type (resource-affinity only). \u003cspan pulumi-lang-nodejs=\"`positive`\" pulumi-lang-dotnet=\"`Positive`\" pulumi-lang-go=\"`positive`\" pulumi-lang-python=\"`positive`\" pulumi-lang-yaml=\"`positive`\" pulumi-lang-java=\"`positive`\"\u003e`positive`\u003c/span\u003e keeps resources on the same node, \u003cspan pulumi-lang-nodejs=\"`negative`\" pulumi-lang-dotnet=\"`Negative`\" pulumi-lang-go=\"`negative`\" pulumi-lang-python=\"`negative`\" pulumi-lang-yaml=\"`negative`\" pulumi-lang-java=\"`negative`\"\u003e`negative`\u003c/span\u003e keeps them on separate nodes.\n"
                },
                "comment": {
                    "type": "string",
                    "description": "The comment associated with this rule.\n"
                },
                "disable": {
                    "type": "boolean",
                    "description": "Whether the HA rule is disabled. 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 rule (node-affinity only). 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"
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The set of HA resource IDs that this rule applies to (e.g. `vm:100`, `ct:101`). The resources must already be managed by HA.\n"
                },
                "rule": {
                    "type": "string",
                    "description": "The identifier of the High Availability rule to manage.\n"
                },
                "strict": {
                    "type": "boolean",
                    "description": "Whether the node affinity rule is strict (node-affinity only). When strict, resources cannot run on nodes not listed. 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 HA rule type. Must be `node-affinity` or `resource-affinity`.\n"
                }
            },
            "requiredInputs": [
                "resources",
                "rule",
                "type"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Harule resources.\n",
                "properties": {
                    "affinity": {
                        "type": "string",
                        "description": "The resource affinity type (resource-affinity only). \u003cspan pulumi-lang-nodejs=\"`positive`\" pulumi-lang-dotnet=\"`Positive`\" pulumi-lang-go=\"`positive`\" pulumi-lang-python=\"`positive`\" pulumi-lang-yaml=\"`positive`\" pulumi-lang-java=\"`positive`\"\u003e`positive`\u003c/span\u003e keeps resources on the same node, \u003cspan pulumi-lang-nodejs=\"`negative`\" pulumi-lang-dotnet=\"`Negative`\" pulumi-lang-go=\"`negative`\" pulumi-lang-python=\"`negative`\" pulumi-lang-yaml=\"`negative`\" pulumi-lang-java=\"`negative`\"\u003e`negative`\u003c/span\u003e keeps them on separate nodes.\n"
                    },
                    "comment": {
                        "type": "string",
                        "description": "The comment associated with this rule.\n"
                    },
                    "disable": {
                        "type": "boolean",
                        "description": "Whether the HA rule is disabled. 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 rule (node-affinity only). 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"
                    },
                    "resources": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The set of HA resource IDs that this rule applies to (e.g. `vm:100`, `ct:101`). The resources must already be managed by HA.\n"
                    },
                    "rule": {
                        "type": "string",
                        "description": "The identifier of the High Availability rule to manage.\n"
                    },
                    "strict": {
                        "type": "boolean",
                        "description": "Whether the node affinity rule is strict (node-affinity only). When strict, resources cannot run on nodes not listed. 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 HA rule type. Must be `node-affinity` or `resource-affinity`.\n"
                    }
                },
                "type": "object"
            }
        },
        "proxmoxve:index/haruleLegacy:HaruleLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.Harule`\" pulumi-lang-dotnet=\"`proxmoxve.Harule`\" pulumi-lang-go=\"`Harule`\" pulumi-lang-python=\"`Harule`\" pulumi-lang-yaml=\"`proxmoxve.Harule`\" pulumi-lang-java=\"`proxmoxve.Harule`\"\u003e`proxmoxve.Harule`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages a High Availability rule in a Proxmox VE cluster (PVE 9+). HA rules replace the legacy HA groups and provide node affinity and resource affinity capabilities.\n\n\u003e **Note:** This resource requires Proxmox VE 9.0 or later. In PVE 9, HA groups\nhave been replaced by HA rules, which provide node affinity and resource affinity\ncapabilities. For PVE 8 and earlier, use\n\u003cspan pulumi-lang-nodejs=\"`proxmoxve.HagroupLegacy`\" pulumi-lang-dotnet=\"`proxmoxve.HagroupLegacy`\" pulumi-lang-go=\"`HagroupLegacy`\" pulumi-lang-python=\"`HagroupLegacy`\" pulumi-lang-yaml=\"`proxmoxve.HagroupLegacy`\" pulumi-lang-java=\"`proxmoxve.HagroupLegacy`\"\u003e`proxmoxve.HagroupLegacy`\u003c/span\u003e instead.\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// Node Affinity Rule: assign VMs to preferred nodes with priorities.\n// Non-strict rules allow failover to other nodes; strict rules do not.\nconst preferNode1 = new proxmoxve.HaruleLegacy(\"prefer_node1\", {\n    rule: \"prefer-node1\",\n    type: \"node-affinity\",\n    comment: \"Prefer node1 for these VMs\",\n    resources: [\n        \"vm:100\",\n        \"vm:101\",\n    ],\n    nodes: {\n        node1: 2,\n        node2: 1,\n        node3: 1,\n    },\n    strict: false,\n});\n// Resource Affinity Rule (Positive): keep resources together on the same node.\nconst keepTogether = new proxmoxve.HaruleLegacy(\"keep_together\", {\n    rule: \"db-cluster-together\",\n    type: \"resource-affinity\",\n    comment: \"Keep database replicas on the same node\",\n    resources: [\n        \"vm:200\",\n        \"vm:201\",\n    ],\n    affinity: \"positive\",\n});\n// Resource Affinity Rule (Negative / Anti-Affinity): keep resources on\n// separate nodes for high availability.\nconst keepApart = new proxmoxve.HaruleLegacy(\"keep_apart\", {\n    rule: \"db-cluster-apart\",\n    type: \"resource-affinity\",\n    comment: \"Spread database replicas across nodes\",\n    resources: [\n        \"vm:200\",\n        \"vm:201\",\n        \"vm:202\",\n    ],\n    affinity: \"negative\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# Node Affinity Rule: assign VMs to preferred nodes with priorities.\n# Non-strict rules allow failover to other nodes; strict rules do not.\nprefer_node1 = proxmoxve.HaruleLegacy(\"prefer_node1\",\n    rule=\"prefer-node1\",\n    type=\"node-affinity\",\n    comment=\"Prefer node1 for these VMs\",\n    resources=[\n        \"vm:100\",\n        \"vm:101\",\n    ],\n    nodes={\n        \"node1\": 2,\n        \"node2\": 1,\n        \"node3\": 1,\n    },\n    strict=False)\n# Resource Affinity Rule (Positive): keep resources together on the same node.\nkeep_together = proxmoxve.HaruleLegacy(\"keep_together\",\n    rule=\"db-cluster-together\",\n    type=\"resource-affinity\",\n    comment=\"Keep database replicas on the same node\",\n    resources=[\n        \"vm:200\",\n        \"vm:201\",\n    ],\n    affinity=\"positive\")\n# Resource Affinity Rule (Negative / Anti-Affinity): keep resources on\n# separate nodes for high availability.\nkeep_apart = proxmoxve.HaruleLegacy(\"keep_apart\",\n    rule=\"db-cluster-apart\",\n    type=\"resource-affinity\",\n    comment=\"Spread database replicas across nodes\",\n    resources=[\n        \"vm:200\",\n        \"vm:201\",\n        \"vm:202\",\n    ],\n    affinity=\"negative\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Node Affinity Rule: assign VMs to preferred nodes with priorities.\n    // Non-strict rules allow failover to other nodes; strict rules do not.\n    var preferNode1 = new ProxmoxVE.Index.HaruleLegacy(\"prefer_node1\", new()\n    {\n        Rule = \"prefer-node1\",\n        Type = \"node-affinity\",\n        Comment = \"Prefer node1 for these VMs\",\n        Resources = new[]\n        {\n            \"vm:100\",\n            \"vm:101\",\n        },\n        Nodes = \n        {\n            { \"node1\", %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2) (example.pp:9,13-14)) },\n            { \"node2\", %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1) (example.pp:11,13-14)) },\n            { \"node3\", %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1) (example.pp:12,13-14)) },\n        },\n        Strict = false,\n    });\n\n    // Resource Affinity Rule (Positive): keep resources together on the same node.\n    var keepTogether = new ProxmoxVE.Index.HaruleLegacy(\"keep_together\", new()\n    {\n        Rule = \"db-cluster-together\",\n        Type = \"resource-affinity\",\n        Comment = \"Keep database replicas on the same node\",\n        Resources = new[]\n        {\n            \"vm:200\",\n            \"vm:201\",\n        },\n        Affinity = \"positive\",\n    });\n\n    // Resource Affinity Rule (Negative / Anti-Affinity): keep resources on\n    // separate nodes for high availability.\n    var keepApart = new ProxmoxVE.Index.HaruleLegacy(\"keep_apart\", new()\n    {\n        Rule = \"db-cluster-apart\",\n        Type = \"resource-affinity\",\n        Comment = \"Spread database replicas across nodes\",\n        Resources = new[]\n        {\n            \"vm:200\",\n            \"vm:201\",\n            \"vm:202\",\n        },\n        Affinity = \"negative\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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// Node Affinity Rule: assign VMs to preferred nodes with priorities.\n\t\t// Non-strict rules allow failover to other nodes; strict rules do not.\n\t\t_, err := proxmoxve.NewHaruleLegacy(ctx, \"prefer_node1\", \u0026proxmoxve.HaruleLegacyArgs{\n\t\t\tRule:    pulumi.String(\"prefer-node1\"),\n\t\t\tType:    pulumi.String(\"node-affinity\"),\n\t\t\tComment: pulumi.String(\"Prefer node1 for these VMs\"),\n\t\t\tResources: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"vm:100\"),\n\t\t\t\tpulumi.String(\"vm:101\"),\n\t\t\t},\n\t\t\tNodes: pulumi.IntMap{\n\t\t\t\t\"node1\": pulumi.Int(2),\n\t\t\t\t\"node2\": pulumi.Int(1),\n\t\t\t\t\"node3\": pulumi.Int(1),\n\t\t\t},\n\t\t\tStrict: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Resource Affinity Rule (Positive): keep resources together on the same node.\n\t\t_, err = proxmoxve.NewHaruleLegacy(ctx, \"keep_together\", \u0026proxmoxve.HaruleLegacyArgs{\n\t\t\tRule:    pulumi.String(\"db-cluster-together\"),\n\t\t\tType:    pulumi.String(\"resource-affinity\"),\n\t\t\tComment: pulumi.String(\"Keep database replicas on the same node\"),\n\t\t\tResources: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"vm:200\"),\n\t\t\t\tpulumi.String(\"vm:201\"),\n\t\t\t},\n\t\t\tAffinity: pulumi.String(\"positive\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Resource Affinity Rule (Negative / Anti-Affinity): keep resources on\n\t\t// separate nodes for high availability.\n\t\t_, err = proxmoxve.NewHaruleLegacy(ctx, \"keep_apart\", \u0026proxmoxve.HaruleLegacyArgs{\n\t\t\tRule:    pulumi.String(\"db-cluster-apart\"),\n\t\t\tType:    pulumi.String(\"resource-affinity\"),\n\t\t\tComment: pulumi.String(\"Spread database replicas across nodes\"),\n\t\t\tResources: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"vm:200\"),\n\t\t\t\tpulumi.String(\"vm:201\"),\n\t\t\t\tpulumi.String(\"vm:202\"),\n\t\t\t},\n\t\t\tAffinity: pulumi.String(\"negative\"),\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.HaruleLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.HaruleLegacyArgs;\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        // Node Affinity Rule: assign VMs to preferred nodes with priorities.\n        // Non-strict rules allow failover to other nodes; strict rules do not.\n        var preferNode1 = new HaruleLegacy(\"preferNode1\", HaruleLegacyArgs.builder()\n            .rule(\"prefer-node1\")\n            .type(\"node-affinity\")\n            .comment(\"Prefer node1 for these VMs\")\n            .resources(            \n                \"vm:100\",\n                \"vm:101\")\n            .nodes(Map.ofEntries(\n                Map.entry(\"node1\", %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2) (example.pp:9,13-14))),\n                Map.entry(\"node2\", %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1) (example.pp:11,13-14))),\n                Map.entry(\"node3\", %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1) (example.pp:12,13-14)))\n            ))\n            .strict(false)\n            .build());\n\n        // Resource Affinity Rule (Positive): keep resources together on the same node.\n        var keepTogether = new HaruleLegacy(\"keepTogether\", HaruleLegacyArgs.builder()\n            .rule(\"db-cluster-together\")\n            .type(\"resource-affinity\")\n            .comment(\"Keep database replicas on the same node\")\n            .resources(            \n                \"vm:200\",\n                \"vm:201\")\n            .affinity(\"positive\")\n            .build());\n\n        // Resource Affinity Rule (Negative / Anti-Affinity): keep resources on\n        // separate nodes for high availability.\n        var keepApart = new HaruleLegacy(\"keepApart\", HaruleLegacyArgs.builder()\n            .rule(\"db-cluster-apart\")\n            .type(\"resource-affinity\")\n            .comment(\"Spread database replicas across nodes\")\n            .resources(            \n                \"vm:200\",\n                \"vm:201\",\n                \"vm:202\")\n            .affinity(\"negative\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Node Affinity Rule: assign VMs to preferred nodes with priorities.\n  # Non-strict rules allow failover to other nodes; strict rules do not.\n  preferNode1:\n    type: proxmoxve:HaruleLegacy\n    name: prefer_node1\n    properties:\n      rule: prefer-node1\n      type: node-affinity\n      comment: Prefer node1 for these VMs\n      resources:\n        - vm:100\n        - vm:101\n      nodes:\n        node1: 2\n        node2: 1\n        node3: 1\n      strict: false\n  # Resource Affinity Rule (Positive): keep resources together on the same node.\n  keepTogether:\n    type: proxmoxve:HaruleLegacy\n    name: keep_together\n    properties:\n      rule: db-cluster-together\n      type: resource-affinity\n      comment: Keep database replicas on the same node\n      resources:\n        - vm:200\n        - vm:201\n      affinity: positive\n  # Resource Affinity Rule (Negative / Anti-Affinity): keep resources on\n  # separate nodes for high availability.\n  keepApart:\n    type: proxmoxve:HaruleLegacy\n    name: keep_apart\n    properties:\n      rule: db-cluster-apart\n      type: resource-affinity\n      comment: Spread database replicas across nodes\n      resources:\n        - vm:200\n        - vm:201\n        - vm:202\n      affinity: negative\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n!/usr/bin/env sh\nHA rules can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:index/haruleLegacy:HaruleLegacy example prefer-node1\n```\n\n",
            "properties": {
                "affinity": {
                    "type": "string",
                    "description": "The resource affinity type (resource-affinity only). \u003cspan pulumi-lang-nodejs=\"`positive`\" pulumi-lang-dotnet=\"`Positive`\" pulumi-lang-go=\"`positive`\" pulumi-lang-python=\"`positive`\" pulumi-lang-yaml=\"`positive`\" pulumi-lang-java=\"`positive`\"\u003e`positive`\u003c/span\u003e keeps resources on the same node, \u003cspan pulumi-lang-nodejs=\"`negative`\" pulumi-lang-dotnet=\"`Negative`\" pulumi-lang-go=\"`negative`\" pulumi-lang-python=\"`negative`\" pulumi-lang-yaml=\"`negative`\" pulumi-lang-java=\"`negative`\"\u003e`negative`\u003c/span\u003e keeps them on separate nodes.\n"
                },
                "comment": {
                    "type": "string",
                    "description": "The comment associated with this rule.\n"
                },
                "disable": {
                    "type": "boolean",
                    "description": "Whether the HA rule is disabled. 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 rule (node-affinity only). 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"
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The set of HA resource IDs that this rule applies to (e.g. `vm:100`, `ct:101`). The resources must already be managed by HA.\n"
                },
                "rule": {
                    "type": "string",
                    "description": "The identifier of the High Availability rule to manage.\n"
                },
                "strict": {
                    "type": "boolean",
                    "description": "Whether the node affinity rule is strict (node-affinity only). When strict, resources cannot run on nodes not listed. 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 HA rule type. Must be `node-affinity` or `resource-affinity`.\n"
                }
            },
            "required": [
                "disable",
                "resources",
                "rule",
                "strict",
                "type"
            ],
            "inputProperties": {
                "affinity": {
                    "type": "string",
                    "description": "The resource affinity type (resource-affinity only). \u003cspan pulumi-lang-nodejs=\"`positive`\" pulumi-lang-dotnet=\"`Positive`\" pulumi-lang-go=\"`positive`\" pulumi-lang-python=\"`positive`\" pulumi-lang-yaml=\"`positive`\" pulumi-lang-java=\"`positive`\"\u003e`positive`\u003c/span\u003e keeps resources on the same node, \u003cspan pulumi-lang-nodejs=\"`negative`\" pulumi-lang-dotnet=\"`Negative`\" pulumi-lang-go=\"`negative`\" pulumi-lang-python=\"`negative`\" pulumi-lang-yaml=\"`negative`\" pulumi-lang-java=\"`negative`\"\u003e`negative`\u003c/span\u003e keeps them on separate nodes.\n"
                },
                "comment": {
                    "type": "string",
                    "description": "The comment associated with this rule.\n"
                },
                "disable": {
                    "type": "boolean",
                    "description": "Whether the HA rule is disabled. 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 rule (node-affinity only). 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"
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The set of HA resource IDs that this rule applies to (e.g. `vm:100`, `ct:101`). The resources must already be managed by HA.\n"
                },
                "rule": {
                    "type": "string",
                    "description": "The identifier of the High Availability rule to manage.\n"
                },
                "strict": {
                    "type": "boolean",
                    "description": "Whether the node affinity rule is strict (node-affinity only). When strict, resources cannot run on nodes not listed. 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 HA rule type. Must be `node-affinity` or `resource-affinity`.\n"
                }
            },
            "requiredInputs": [
                "resources",
                "rule",
                "type"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering HaruleLegacy resources.\n",
                "properties": {
                    "affinity": {
                        "type": "string",
                        "description": "The resource affinity type (resource-affinity only). \u003cspan pulumi-lang-nodejs=\"`positive`\" pulumi-lang-dotnet=\"`Positive`\" pulumi-lang-go=\"`positive`\" pulumi-lang-python=\"`positive`\" pulumi-lang-yaml=\"`positive`\" pulumi-lang-java=\"`positive`\"\u003e`positive`\u003c/span\u003e keeps resources on the same node, \u003cspan pulumi-lang-nodejs=\"`negative`\" pulumi-lang-dotnet=\"`Negative`\" pulumi-lang-go=\"`negative`\" pulumi-lang-python=\"`negative`\" pulumi-lang-yaml=\"`negative`\" pulumi-lang-java=\"`negative`\"\u003e`negative`\u003c/span\u003e keeps them on separate nodes.\n"
                    },
                    "comment": {
                        "type": "string",
                        "description": "The comment associated with this rule.\n"
                    },
                    "disable": {
                        "type": "boolean",
                        "description": "Whether the HA rule is disabled. 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 rule (node-affinity only). 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"
                    },
                    "resources": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The set of HA resource IDs that this rule applies to (e.g. `vm:100`, `ct:101`). The resources must already be managed by HA.\n"
                    },
                    "rule": {
                        "type": "string",
                        "description": "The identifier of the High Availability rule to manage.\n"
                    },
                    "strict": {
                        "type": "boolean",
                        "description": "Whether the node affinity rule is strict (node-affinity only). When strict, resources cannot run on nodes not listed. 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 HA rule type. Must be `node-affinity` or `resource-affinity`.\n"
                    }
                },
                "type": "object"
            }
        },
        "proxmoxve:index/hostsLegacy:HostsLegacy": {
            "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.HostsLegacy(\"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.HostsLegacy(\"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.Index.HostsLegacy(\"first_node_host_entries\", new()\n    {\n        NodeName = \"first-node\",\n        Entries = new[]\n        {\n            new ProxmoxVE.Inputs.HostsLegacyEntryArgs\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/v8/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.NewHostsLegacy(ctx, \"first_node_host_entries\", \u0026proxmoxve.HostsLegacyArgs{\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.HostsLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.HostsLegacyArgs;\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 HostsLegacy(\"firstNodeHostEntries\", HostsLegacyArgs.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:HostsLegacy\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 \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`nodeName`\u003c/span\u003e, e.g.,\n\n```sh\n$ pulumi import proxmoxve:index/hostsLegacy:HostsLegacy 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/HostsLegacyEntry:HostsLegacyEntry"
                    },
                    "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/HostsLegacyEntry:HostsLegacyEntry"
                    },
                    "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/HostsLegacyEntry:HostsLegacyEntry"
                    },
                    "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 HostsLegacy 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/HostsLegacyEntry:HostsLegacyEntry"
                        },
                        "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/HostsLegacyEntry:HostsLegacyEntry"
                        },
                        "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/poolLegacy:PoolLegacy": {
            "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.PoolLegacy(\"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.PoolLegacy(\"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.Index.PoolLegacy(\"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/v8/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.NewPoolLegacy(ctx, \"operations_pool\", \u0026proxmoxve.PoolLegacyArgs{\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.PoolLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.PoolLegacyArgs;\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 PoolLegacy(\"operationsPool\", PoolLegacyArgs.builder()\n            .comment(\"Managed by Pulumi\")\n            .poolId(\"operations-pool\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  operationsPool:\n    type: proxmoxve:PoolLegacy\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 \u003cspan pulumi-lang-nodejs=\"`poolId`\" pulumi-lang-dotnet=\"`PoolId`\" pulumi-lang-go=\"`poolId`\" pulumi-lang-python=\"`pool_id`\" pulumi-lang-yaml=\"`poolId`\" pulumi-lang-java=\"`poolId`\"\u003e`poolId`\u003c/span\u003e, e.g.,\n\n```sh\n$ pulumi import proxmoxve:index/poolLegacy:PoolLegacy operations_pool operations-pool\n```\n\n",
            "properties": {
                "comment": {
                    "type": "string",
                    "description": "The pool comment.\n"
                },
                "members": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/proxmoxve:index/PoolLegacyMember:PoolLegacyMember"
                    },
                    "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 PoolLegacy resources.\n",
                "properties": {
                    "comment": {
                        "type": "string",
                        "description": "The pool comment.\n"
                    },
                    "members": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/proxmoxve:index/PoolLegacyMember:PoolLegacyMember"
                        },
                        "description": "The pool members.\n"
                    },
                    "poolId": {
                        "type": "string",
                        "description": "The pool identifier.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "proxmoxve:index/replication:Replication": {
            "description": "Manages Proxmox VE Replication.\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// Replication\nconst exampleReplication1 = new proxmoxve.Replication(\"example_replication_1\", {\n    resourceId: \"100-0\",\n    target: \"pve-02\",\n    type: \"local\",\n    disable: false,\n    comment: \"Replication to pve-02 every 30 min\",\n    schedule: \"*/30\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# Replication\nexample_replication1 = proxmoxve.Replication(\"example_replication_1\",\n    resource_id=\"100-0\",\n    target=\"pve-02\",\n    type=\"local\",\n    disable=False,\n    comment=\"Replication to pve-02 every 30 min\",\n    schedule=\"*/30\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Replication\n    var exampleReplication1 = new ProxmoxVE.Index.Replication(\"example_replication_1\", new()\n    {\n        ResourceId = \"100-0\",\n        Target = \"pve-02\",\n        Type = \"local\",\n        Disable = false,\n        Comment = \"Replication to pve-02 every 30 min\",\n        Schedule = \"*/30\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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// Replication\n\t\t_, err := proxmoxve.NewReplication(ctx, \"example_replication_1\", \u0026proxmoxve.ReplicationArgs{\n\t\t\tResourceId: pulumi.String(\"100-0\"),\n\t\t\tTarget:     pulumi.String(\"pve-02\"),\n\t\t\tType:       pulumi.String(\"local\"),\n\t\t\tDisable:    pulumi.Bool(false),\n\t\t\tComment:    pulumi.String(\"Replication to pve-02 every 30 min\"),\n\t\t\tSchedule:   pulumi.String(\"*/30\"),\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.Replication;\nimport io.muehlbachler.pulumi.proxmoxve.ReplicationArgs;\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        // Replication\n        var exampleReplication1 = new Replication(\"exampleReplication1\", ReplicationArgs.builder()\n            .resourceId(\"100-0\")\n            .target(\"pve-02\")\n            .type(\"local\")\n            .disable(false)\n            .comment(\"Replication to pve-02 every 30 min\")\n            .schedule(\"*/30\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Replication\n  exampleReplication1:\n    type: proxmoxve:Replication\n    name: example_replication_1\n    properties:\n      resourceId: 100-0\n      target: pve-02\n      type: local\n      disable: false\n      comment: Replication to pve-02 every 30 min\n      schedule: '*/30'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "properties": {
                "comment": {
                    "type": "string",
                    "description": "Description.\n"
                },
                "disable": {
                    "type": "boolean",
                    "description": "Flag to disable/deactivate this replication.\n"
                },
                "guest": {
                    "type": "integer",
                    "description": "Guest ID.\n"
                },
                "jobnum": {
                    "type": "integer",
                    "description": "Unique, sequential ID assigned to each job.\n"
                },
                "rate": {
                    "type": "number",
                    "description": "Rate limit in mbps (megabytes per second) as floating point number.\n"
                },
                "resourceId": {
                    "type": "string",
                    "description": "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '\\n\\n-\\n\\n'.\n"
                },
                "schedule": {
                    "type": "string",
                    "description": "Storage replication schedule. The format is a subset of \u003cspan pulumi-lang-nodejs=\"`systemd`\" pulumi-lang-dotnet=\"`Systemd`\" pulumi-lang-go=\"`systemd`\" pulumi-lang-python=\"`systemd`\" pulumi-lang-yaml=\"`systemd`\" pulumi-lang-java=\"`systemd`\"\u003e`systemd`\u003c/span\u003e calendar events. Defaults to */15\n"
                },
                "source": {
                    "type": "string",
                    "description": "For internal use, to detect if the guest was stolen.\n"
                },
                "target": {
                    "type": "string",
                    "description": "Target node.\n"
                },
                "type": {
                    "type": "string",
                    "description": "Section type.\n"
                }
            },
            "required": [
                "disable",
                "guest",
                "resourceId",
                "jobnum",
                "schedule",
                "source",
                "target",
                "type"
            ],
            "inputProperties": {
                "comment": {
                    "type": "string",
                    "description": "Description.\n"
                },
                "disable": {
                    "type": "boolean",
                    "description": "Flag to disable/deactivate this replication.\n"
                },
                "rate": {
                    "type": "number",
                    "description": "Rate limit in mbps (megabytes per second) as floating point number.\n"
                },
                "resourceId": {
                    "type": "string",
                    "description": "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '\\n\\n-\\n\\n'.\n"
                },
                "schedule": {
                    "type": "string",
                    "description": "Storage replication schedule. The format is a subset of \u003cspan pulumi-lang-nodejs=\"`systemd`\" pulumi-lang-dotnet=\"`Systemd`\" pulumi-lang-go=\"`systemd`\" pulumi-lang-python=\"`systemd`\" pulumi-lang-yaml=\"`systemd`\" pulumi-lang-java=\"`systemd`\"\u003e`systemd`\u003c/span\u003e calendar events. Defaults to */15\n"
                },
                "target": {
                    "type": "string",
                    "description": "Target node.\n"
                },
                "type": {
                    "type": "string",
                    "description": "Section type.\n"
                }
            },
            "requiredInputs": [
                "resourceId",
                "target",
                "type"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Replication resources.\n",
                "properties": {
                    "comment": {
                        "type": "string",
                        "description": "Description.\n"
                    },
                    "disable": {
                        "type": "boolean",
                        "description": "Flag to disable/deactivate this replication.\n"
                    },
                    "guest": {
                        "type": "integer",
                        "description": "Guest ID.\n"
                    },
                    "jobnum": {
                        "type": "integer",
                        "description": "Unique, sequential ID assigned to each job.\n"
                    },
                    "rate": {
                        "type": "number",
                        "description": "Rate limit in mbps (megabytes per second) as floating point number.\n"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '\\n\\n-\\n\\n'.\n"
                    },
                    "schedule": {
                        "type": "string",
                        "description": "Storage replication schedule. The format is a subset of \u003cspan pulumi-lang-nodejs=\"`systemd`\" pulumi-lang-dotnet=\"`Systemd`\" pulumi-lang-go=\"`systemd`\" pulumi-lang-python=\"`systemd`\" pulumi-lang-yaml=\"`systemd`\" pulumi-lang-java=\"`systemd`\"\u003e`systemd`\u003c/span\u003e calendar events. Defaults to */15\n"
                    },
                    "source": {
                        "type": "string",
                        "description": "For internal use, to detect if the guest was stolen.\n"
                    },
                    "target": {
                        "type": "string",
                        "description": "Target node.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "Section type.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "proxmox_virtual_environment_replication"
                }
            ]
        },
        "proxmoxve:index/replicationLegacy:ReplicationLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.Replication`\" pulumi-lang-dotnet=\"`proxmoxve.Replication`\" pulumi-lang-go=\"`Replication`\" pulumi-lang-python=\"`Replication`\" pulumi-lang-yaml=\"`proxmoxve.Replication`\" pulumi-lang-java=\"`proxmoxve.Replication`\"\u003e`proxmoxve.Replication`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages Proxmox VE Replication.\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// Replication\nconst exampleReplication1 = new proxmoxve.ReplicationLegacy(\"example_replication_1\", {\n    resourceId: \"100-0\",\n    target: \"pve-02\",\n    type: \"local\",\n    disable: false,\n    comment: \"Replication to pve-02 every 30 min\",\n    schedule: \"*/30\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# Replication\nexample_replication1 = proxmoxve.ReplicationLegacy(\"example_replication_1\",\n    resource_id=\"100-0\",\n    target=\"pve-02\",\n    type=\"local\",\n    disable=False,\n    comment=\"Replication to pve-02 every 30 min\",\n    schedule=\"*/30\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Replication\n    var exampleReplication1 = new ProxmoxVE.Index.ReplicationLegacy(\"example_replication_1\", new()\n    {\n        ResourceId = \"100-0\",\n        Target = \"pve-02\",\n        Type = \"local\",\n        Disable = false,\n        Comment = \"Replication to pve-02 every 30 min\",\n        Schedule = \"*/30\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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// Replication\n\t\t_, err := proxmoxve.NewReplicationLegacy(ctx, \"example_replication_1\", \u0026proxmoxve.ReplicationLegacyArgs{\n\t\t\tResourceId: pulumi.String(\"100-0\"),\n\t\t\tTarget:     pulumi.String(\"pve-02\"),\n\t\t\tType:       pulumi.String(\"local\"),\n\t\t\tDisable:    pulumi.Bool(false),\n\t\t\tComment:    pulumi.String(\"Replication to pve-02 every 30 min\"),\n\t\t\tSchedule:   pulumi.String(\"*/30\"),\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.ReplicationLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.ReplicationLegacyArgs;\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        // Replication\n        var exampleReplication1 = new ReplicationLegacy(\"exampleReplication1\", ReplicationLegacyArgs.builder()\n            .resourceId(\"100-0\")\n            .target(\"pve-02\")\n            .type(\"local\")\n            .disable(false)\n            .comment(\"Replication to pve-02 every 30 min\")\n            .schedule(\"*/30\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Replication\n  exampleReplication1:\n    type: proxmoxve:ReplicationLegacy\n    name: example_replication_1\n    properties:\n      resourceId: 100-0\n      target: pve-02\n      type: local\n      disable: false\n      comment: Replication to pve-02 every 30 min\n      schedule: '*/30'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "properties": {
                "comment": {
                    "type": "string",
                    "description": "Description.\n"
                },
                "disable": {
                    "type": "boolean",
                    "description": "Flag to disable/deactivate this replication.\n"
                },
                "guest": {
                    "type": "integer",
                    "description": "Guest ID.\n"
                },
                "jobnum": {
                    "type": "integer",
                    "description": "Unique, sequential ID assigned to each job.\n"
                },
                "rate": {
                    "type": "number",
                    "description": "Rate limit in mbps (megabytes per second) as floating point number.\n"
                },
                "resourceId": {
                    "type": "string",
                    "description": "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '\\n\\n-\\n\\n'.\n"
                },
                "schedule": {
                    "type": "string",
                    "description": "Storage replication schedule. The format is a subset of \u003cspan pulumi-lang-nodejs=\"`systemd`\" pulumi-lang-dotnet=\"`Systemd`\" pulumi-lang-go=\"`systemd`\" pulumi-lang-python=\"`systemd`\" pulumi-lang-yaml=\"`systemd`\" pulumi-lang-java=\"`systemd`\"\u003e`systemd`\u003c/span\u003e calendar events. Defaults to */15\n"
                },
                "source": {
                    "type": "string",
                    "description": "For internal use, to detect if the guest was stolen.\n"
                },
                "target": {
                    "type": "string",
                    "description": "Target node.\n"
                },
                "type": {
                    "type": "string",
                    "description": "Section type.\n"
                }
            },
            "required": [
                "disable",
                "guest",
                "resourceId",
                "jobnum",
                "schedule",
                "source",
                "target",
                "type"
            ],
            "inputProperties": {
                "comment": {
                    "type": "string",
                    "description": "Description.\n"
                },
                "disable": {
                    "type": "boolean",
                    "description": "Flag to disable/deactivate this replication.\n"
                },
                "rate": {
                    "type": "number",
                    "description": "Rate limit in mbps (megabytes per second) as floating point number.\n"
                },
                "resourceId": {
                    "type": "string",
                    "description": "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '\\n\\n-\\n\\n'.\n"
                },
                "schedule": {
                    "type": "string",
                    "description": "Storage replication schedule. The format is a subset of \u003cspan pulumi-lang-nodejs=\"`systemd`\" pulumi-lang-dotnet=\"`Systemd`\" pulumi-lang-go=\"`systemd`\" pulumi-lang-python=\"`systemd`\" pulumi-lang-yaml=\"`systemd`\" pulumi-lang-java=\"`systemd`\"\u003e`systemd`\u003c/span\u003e calendar events. Defaults to */15\n"
                },
                "target": {
                    "type": "string",
                    "description": "Target node.\n"
                },
                "type": {
                    "type": "string",
                    "description": "Section type.\n"
                }
            },
            "requiredInputs": [
                "resourceId",
                "target",
                "type"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ReplicationLegacy resources.\n",
                "properties": {
                    "comment": {
                        "type": "string",
                        "description": "Description.\n"
                    },
                    "disable": {
                        "type": "boolean",
                        "description": "Flag to disable/deactivate this replication.\n"
                    },
                    "guest": {
                        "type": "integer",
                        "description": "Guest ID.\n"
                    },
                    "jobnum": {
                        "type": "integer",
                        "description": "Unique, sequential ID assigned to each job.\n"
                    },
                    "rate": {
                        "type": "number",
                        "description": "Rate limit in mbps (megabytes per second) as floating point number.\n"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '\\n\\n-\\n\\n'.\n"
                    },
                    "schedule": {
                        "type": "string",
                        "description": "Storage replication schedule. The format is a subset of \u003cspan pulumi-lang-nodejs=\"`systemd`\" pulumi-lang-dotnet=\"`Systemd`\" pulumi-lang-go=\"`systemd`\" pulumi-lang-python=\"`systemd`\" pulumi-lang-yaml=\"`systemd`\" pulumi-lang-java=\"`systemd`\"\u003e`systemd`\u003c/span\u003e calendar events. Defaults to */15\n"
                    },
                    "source": {
                        "type": "string",
                        "description": "For internal use, to detect if the guest was stolen.\n"
                    },
                    "target": {
                        "type": "string",
                        "description": "Target node.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "Section type.\n"
                    }
                },
                "type": "object"
            }
        },
        "proxmoxve:index/roleLegacy:RoleLegacy": {
            "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.RoleLegacy(\"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.RoleLegacy(\"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.Index.RoleLegacy(\"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/v8/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.NewRoleLegacy(ctx, \"operations_monitoring\", \u0026proxmoxve.RoleLegacyArgs{\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.RoleLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.RoleLegacyArgs;\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 RoleLegacy(\"operationsMonitoring\", RoleLegacyArgs.builder()\n            .roleId(\"operations-monitoring\")\n            .privileges(\"VM.GuestAgent.Audit\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  operationsMonitoring:\n    type: proxmoxve:RoleLegacy\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 \u003cspan pulumi-lang-nodejs=\"`roleId`\" pulumi-lang-dotnet=\"`RoleId`\" pulumi-lang-go=\"`roleId`\" pulumi-lang-python=\"`role_id`\" pulumi-lang-yaml=\"`roleId`\" pulumi-lang-java=\"`roleId`\"\u003e`roleId`\u003c/span\u003e, e.g.,\n\n```sh\n$ pulumi import proxmoxve:index/roleLegacy:RoleLegacy 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 RoleLegacy 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:index/timeLegacy:TimeLegacy": {
            "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.TimeLegacy(\"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.TimeLegacy(\"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.Index.TimeLegacy(\"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/v8/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.NewTimeLegacy(ctx, \"first_node_time\", \u0026proxmoxve.TimeLegacyArgs{\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.TimeLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.TimeLegacyArgs;\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 TimeLegacy(\"firstNodeTime\", TimeLegacyArgs.builder()\n            .nodeName(\"first-node\")\n            .timeZone(\"UTC\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  firstNodeTime:\n    type: proxmoxve:TimeLegacy\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 \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`nodeName`\u003c/span\u003e, e.g.,\n\n```sh\n$ pulumi import proxmoxve:index/timeLegacy:TimeLegacy 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 TimeLegacy 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"
            }
        },
        "proxmoxve:index/userLegacy:UserLegacy": {
            "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.RoleLegacy(\"operations_monitoring\", {\n    roleId: \"operations-monitoring\",\n    privileges: [\"VM.GuestAgent.Audit\"],\n});\nconst operationsAutomation = new proxmoxve.UserLegacy(\"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.RoleLegacy(\"operations_monitoring\",\n    role_id=\"operations-monitoring\",\n    privileges=[\"VM.GuestAgent.Audit\"])\noperations_automation = proxmoxve.UserLegacy(\"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.Index.RoleLegacy(\"operations_monitoring\", new()\n    {\n        RoleId = \"operations-monitoring\",\n        Privileges = new[]\n        {\n            \"VM.GuestAgent.Audit\",\n        },\n    });\n\n    var operationsAutomation = new ProxmoxVE.Index.UserLegacy(\"operations_automation\", new()\n    {\n        Acls = new[]\n        {\n            new ProxmoxVE.Inputs.UserLegacyAclArgs\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/v8/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\toperationsMonitoring, err := proxmoxve.NewRoleLegacy(ctx, \"operations_monitoring\", \u0026proxmoxve.RoleLegacyArgs{\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.NewUserLegacy(ctx, \"operations_automation\", \u0026proxmoxve.UserLegacyArgs{\n\t\t\tAcls: proxmoxve.UserLegacyAclArray{\n\t\t\t\t\u0026proxmoxve.UserLegacyAclArgs{\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.RoleLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.RoleLegacyArgs;\nimport io.muehlbachler.pulumi.proxmoxve.UserLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.UserLegacyArgs;\nimport com.pulumi.proxmoxve.inputs.UserLegacyAclArgs;\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 RoleLegacy(\"operationsMonitoring\", RoleLegacyArgs.builder()\n            .roleId(\"operations-monitoring\")\n            .privileges(\"VM.GuestAgent.Audit\")\n            .build());\n\n        var operationsAutomation = new UserLegacy(\"operationsAutomation\", UserLegacyArgs.builder()\n            .acls(UserLegacyAclArgs.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:UserLegacy\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:RoleLegacy\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 \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`userId`\u003c/span\u003e, e.g.,\n\n```sh\n$ pulumi import proxmoxve:index/userLegacy:UserLegacy operations_automation operations-automation@pve\n```\n\n",
            "properties": {
                "acls": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/proxmoxve:index/UserLegacyAcl:UserLegacyAcl"
                    },
                    "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:index/UserLegacyAcl:UserLegacyAcl"
                    },
                    "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 UserLegacy resources.\n",
                "properties": {
                    "acls": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/proxmoxve:index/UserLegacyAcl:UserLegacyAcl"
                        },
                        "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:index/vm2Legacy:Vm2Legacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.Vm`\" pulumi-lang-dotnet=\"`proxmoxve.Vm`\" pulumi-lang-go=\"`Vm`\" pulumi-lang-python=\"`Vm`\" pulumi-lang-yaml=\"`proxmoxve.Vm`\" pulumi-lang-java=\"`proxmoxve.Vm`\"\u003e`proxmoxve.Vm`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\n!\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:index/Vm2LegacyCdrom:Vm2LegacyCdrom"
                    },
                    "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:index/Vm2LegacyCpu:Vm2LegacyCpu",
                    "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the VM in the Proxmox cluster.\n"
                },
                "rng": {
                    "$ref": "#/types/proxmoxve:index/Vm2LegacyRng:Vm2LegacyRng",
                    "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:index/Vm2LegacyTimeouts:Vm2LegacyTimeouts"
                },
                "vga": {
                    "$ref": "#/types/proxmoxve:index/Vm2LegacyVga:Vm2LegacyVga",
                    "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": [
                "deleteUnreferencedDisksOnDestroy",
                "resourceId",
                "name",
                "nodeName",
                "purgeOnDestroy",
                "stopOnDestroy",
                "tags"
            ],
            "inputProperties": {
                "cdrom": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/types/proxmoxve:index/Vm2LegacyCdrom:Vm2LegacyCdrom"
                    },
                    "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:index/Vm2LegacyCpu:Vm2LegacyCpu",
                    "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the VM in the Proxmox cluster.\n"
                },
                "rng": {
                    "$ref": "#/types/proxmoxve:index/Vm2LegacyRng:Vm2LegacyRng",
                    "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:index/Vm2LegacyTimeouts:Vm2LegacyTimeouts"
                },
                "vga": {
                    "$ref": "#/types/proxmoxve:index/Vm2LegacyVga:Vm2LegacyVga",
                    "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 Vm2Legacy resources.\n",
                "properties": {
                    "cdrom": {
                        "type": "object",
                        "additionalProperties": {
                            "$ref": "#/types/proxmoxve:index/Vm2LegacyCdrom:Vm2LegacyCdrom"
                        },
                        "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:index/Vm2LegacyCpu:Vm2LegacyCpu",
                        "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"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The unique identifier of the VM in the Proxmox cluster.\n"
                    },
                    "rng": {
                        "$ref": "#/types/proxmoxve:index/Vm2LegacyRng:Vm2LegacyRng",
                        "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:index/Vm2LegacyTimeouts:Vm2LegacyTimeouts"
                    },
                    "vga": {
                        "$ref": "#/types/proxmoxve:index/Vm2LegacyVga:Vm2LegacyVga",
                        "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:index/vm:Vm": {
            "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:index/VmCdrom:VmCdrom"
                    },
                    "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:index/VmCpu:VmCpu",
                    "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the VM in the Proxmox cluster.\n"
                },
                "rng": {
                    "$ref": "#/types/proxmoxve:index/VmRng:VmRng",
                    "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:index/VmTimeouts:VmTimeouts"
                },
                "vga": {
                    "$ref": "#/types/proxmoxve:index/VmVga:VmVga",
                    "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": [
                "deleteUnreferencedDisksOnDestroy",
                "resourceId",
                "name",
                "nodeName",
                "purgeOnDestroy",
                "stopOnDestroy",
                "tags"
            ],
            "inputProperties": {
                "cdrom": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/types/proxmoxve:index/VmCdrom:VmCdrom"
                    },
                    "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:index/VmCpu:VmCpu",
                    "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the VM in the Proxmox cluster.\n"
                },
                "rng": {
                    "$ref": "#/types/proxmoxve:index/VmRng:VmRng",
                    "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:index/VmTimeouts:VmTimeouts"
                },
                "vga": {
                    "$ref": "#/types/proxmoxve:index/VmVga:VmVga",
                    "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 Vm resources.\n",
                "properties": {
                    "cdrom": {
                        "type": "object",
                        "additionalProperties": {
                            "$ref": "#/types/proxmoxve:index/VmCdrom:VmCdrom"
                        },
                        "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:index/VmCpu:VmCpu",
                        "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"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The unique identifier of the VM in the Proxmox cluster.\n"
                    },
                    "rng": {
                        "$ref": "#/types/proxmoxve:index/VmRng:VmRng",
                        "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:index/VmTimeouts:VmTimeouts"
                    },
                    "vga": {
                        "$ref": "#/types/proxmoxve:index/VmVga:VmVga",
                        "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"
            },
            "aliases": [
                {
                    "type": "proxmox_virtual_environment_vm2"
                }
            ]
        },
        "proxmoxve:index/vmLegacy:VmLegacy": {
            "description": "Manages a virtual machine.\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 latestUbuntu22JammyQcow2Img = new proxmoxve.download.FileLegacy(\"latest_ubuntu_22_jammy_qcow2_img\", {\n        contentType: \"import\",\n        datastoreId: \"local\",\n        nodeName: \"pve\",\n        url: \"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img\",\n        fileName: \"jammy-server-cloudimg-amd64.qcow2\",\n    });\n    const ubuntuVmPassword = new random.RandomPassword(\"ubuntu_vm_password\", {\n        length: 16,\n        overrideSpecial: \"_%@\",\n        special: true,\n    });\n    const ubuntuVmKey = new tls.PrivateKey(\"ubuntu_vm_key\", {\n        algorithm: \"RSA\",\n        rsaBits: 2048,\n    });\n    const ubuntuVm = new proxmoxve.VmLegacy(\"ubuntu_vm\", {\n        serialDevices: [{}],\n        name: \"terraform-provider-proxmox-ubuntu-vm\",\n        description: \"Managed by Pulumi\",\n        tags: [\n            \"terraform\",\n            \"ubuntu\",\n        ],\n        nodeName: \"first-node\",\n        vmId: 4321,\n        agent: {\n            enabled: false,\n        },\n        stopOnDestroy: true,\n        startup: {\n            order: 3,\n            upDelay: 60,\n            downDelay: 60,\n        },\n        cpu: {\n            cores: 2,\n            type: \"x86-64-v2-AES\",\n        },\n        memory: {\n            dedicated: 2048,\n            floating: 2048,\n        },\n        disks: [{\n            datastoreId: \"local-lvm\",\n            importFrom: latestUbuntu22JammyQcow2Img.id,\n            \"interface\": \"scsi0\",\n        }],\n        initialization: {\n            ipConfigs: [{\n                ipv4: {\n                    address: \"dhcp\",\n                },\n            }],\n            userAccount: {\n                keys: [std.trimspaceOutput({\n                    input: ubuntuVmKey.publicKeyOpenssh,\n                }).apply(invoke =\u003e invoke.result)],\n                password: ubuntuVmPassword.result,\n                username: \"ubuntu\",\n            },\n            userDataFileId: cloudConfig.id,\n        },\n        networkDevices: [{\n            bridge: \"vmbr0\",\n        }],\n        operatingSystem: {\n            type: \"l26\",\n        },\n        tpmState: {\n            version: \"v2.0\",\n        },\n        virtiofs: [{\n            mapping: \"data_share\",\n            cache: \"always\",\n            directIo: true,\n        }],\n    });\n    return {\n        ubuntuVmPassword: ubuntuVmPassword.result,\n        ubuntuVmPrivateKey: ubuntuVmKey.privateKeyPem,\n        ubuntuVmPublicKey: ubuntuVmKey.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\nlatest_ubuntu22_jammy_qcow2_img = proxmoxve.download.FileLegacy(\"latest_ubuntu_22_jammy_qcow2_img\",\n    content_type=\"import\",\n    datastore_id=\"local\",\n    node_name=\"pve\",\n    url=\"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img\",\n    file_name=\"jammy-server-cloudimg-amd64.qcow2\")\nubuntu_vm_password = random.RandomPassword(\"ubuntu_vm_password\",\n    length=16,\n    override_special=\"_%@\",\n    special=True)\nubuntu_vm_key = tls.PrivateKey(\"ubuntu_vm_key\",\n    algorithm=\"RSA\",\n    rsa_bits=2048)\nubuntu_vm = proxmoxve.VmLegacy(\"ubuntu_vm\",\n    serial_devices=[{}],\n    name=\"terraform-provider-proxmox-ubuntu-vm\",\n    description=\"Managed by Pulumi\",\n    tags=[\n        \"terraform\",\n        \"ubuntu\",\n    ],\n    node_name=\"first-node\",\n    vm_id=4321,\n    agent={\n        \"enabled\": False,\n    },\n    stop_on_destroy=True,\n    startup={\n        \"order\": 3,\n        \"up_delay\": 60,\n        \"down_delay\": 60,\n    },\n    cpu={\n        \"cores\": 2,\n        \"type\": \"x86-64-v2-AES\",\n    },\n    memory={\n        \"dedicated\": 2048,\n        \"floating\": 2048,\n    },\n    disks=[{\n        \"datastore_id\": \"local-lvm\",\n        \"import_from\": latest_ubuntu22_jammy_qcow2_img.id,\n        \"interface\": \"scsi0\",\n    }],\n    initialization={\n        \"ip_configs\": [{\n            \"ipv4\": {\n                \"address\": \"dhcp\",\n            },\n        }],\n        \"user_account\": {\n            \"keys\": [std.trimspace_output(input=ubuntu_vm_key.public_key_openssh).apply(lambda invoke: invoke.result)],\n            \"password\": ubuntu_vm_password.result,\n            \"username\": \"ubuntu\",\n        },\n        \"user_data_file_id\": cloud_config[\"id\"],\n    },\n    network_devices=[{\n        \"bridge\": \"vmbr0\",\n    }],\n    operating_system={\n        \"type\": \"l26\",\n    },\n    tpm_state={\n        \"version\": \"v2.0\",\n    },\n    virtiofs=[{\n        \"mapping\": \"data_share\",\n        \"cache\": \"always\",\n        \"direct_io\": True,\n    }])\npulumi.export(\"ubuntuVmPassword\", ubuntu_vm_password.result)\npulumi.export(\"ubuntuVmPrivateKey\", ubuntu_vm_key.private_key_pem)\npulumi.export(\"ubuntuVmPublicKey\", ubuntu_vm_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 latestUbuntu22JammyQcow2Img = new ProxmoxVE.Download.FileLegacy(\"latest_ubuntu_22_jammy_qcow2_img\", new()\n    {\n        ContentType = \"import\",\n        DatastoreId = \"local\",\n        NodeName = \"pve\",\n        Url = \"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img\",\n        FileName = \"jammy-server-cloudimg-amd64.qcow2\",\n    });\n\n    var ubuntuVmPassword = new Random.Index.RandomPassword(\"ubuntu_vm_password\", new()\n    {\n        Length = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(16) (example.pp:77,21-23)),\n        OverrideSpecial = \"_%@\",\n        Special = true,\n    });\n\n    var ubuntuVmKey = new Tls.Index.PrivateKey(\"ubuntu_vm_key\", new()\n    {\n        Algorithm = \"RSA\",\n        RsaBits = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2048) (example.pp:85,19-23)),\n    });\n\n    var ubuntuVm = new ProxmoxVE.Index.VmLegacy(\"ubuntu_vm\", new()\n    {\n        SerialDevices = new[]\n        {\n            null,\n        },\n        Name = \"terraform-provider-proxmox-ubuntu-vm\",\n        Description = \"Managed by Pulumi\",\n        Tags = new[]\n        {\n            \"terraform\",\n            \"ubuntu\",\n        },\n        NodeName = \"first-node\",\n        VmId = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(4321) (example.pp:7,19-23)),\n        Agent = new ProxmoxVE.Inputs.VmLegacyAgentArgs\n        {\n            Enabled = false,\n        },\n        StopOnDestroy = true,\n        Startup = new ProxmoxVE.Inputs.VmLegacyStartupArgs\n        {\n            Order = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(3) (:0,0-0)),\n            UpDelay = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(60) (:0,0-0)),\n            DownDelay = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(60) (:0,0-0)),\n        },\n        Cpu = new ProxmoxVE.Inputs.VmLegacyCpuArgs\n        {\n            Cores = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2) (example.pp:22,13-14)),\n            Type = \"x86-64-v2-AES\",\n        },\n        Memory = new ProxmoxVE.Inputs.VmLegacyMemoryArgs\n        {\n            Dedicated = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2048) (example.pp:26,17-21)),\n            Floating = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2048) (example.pp:27,17-21)),\n        },\n        Disks = new[]\n        {\n            new ProxmoxVE.Inputs.VmLegacyDiskArgs\n            {\n                DatastoreId = \"local-lvm\",\n                ImportFrom = latestUbuntu22JammyQcow2Img.Id,\n                Interface = \"scsi0\",\n            },\n        },\n        Initialization = new ProxmoxVE.Inputs.VmLegacyInitializationArgs\n        {\n            IpConfigs = new[]\n            {\n                new ProxmoxVE.Inputs.VmLegacyInitializationIpConfigArgs\n                {\n                    Ipv4 = new ProxmoxVE.Inputs.VmLegacyInitializationIpConfigIpv4Args\n                    {\n                        Address = \"dhcp\",\n                    },\n                },\n            },\n            UserAccount = new ProxmoxVE.Inputs.VmLegacyInitializationUserAccountArgs\n            {\n                Keys = new[]\n                {\n                    Std.Index.Trimspace.Invoke(new()\n                    {\n                        Input = ubuntuVmKey.PublicKeyOpenssh,\n                    }).Apply(invoke =\u003e invoke.Result),\n                },\n                Password = ubuntuVmPassword.Result,\n                Username = \"ubuntu\",\n            },\n            UserDataFileId = cloudConfig.Id,\n        },\n        NetworkDevices = new[]\n        {\n            new ProxmoxVE.Inputs.VmLegacyNetworkDeviceArgs\n            {\n                Bridge = \"vmbr0\",\n            },\n        },\n        OperatingSystem = new ProxmoxVE.Inputs.VmLegacyOperatingSystemArgs\n        {\n            Type = \"l26\",\n        },\n        TpmState = new ProxmoxVE.Inputs.VmLegacyTpmStateArgs\n        {\n            Version = \"v2.0\",\n        },\n        Virtiofs = new[]\n        {\n            new ProxmoxVE.Inputs.VmLegacyVirtiofArgs\n            {\n                Mapping = \"data_share\",\n                Cache = \"always\",\n                DirectIo = true,\n            },\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"ubuntuVmPassword\"] = ubuntuVmPassword.Result,\n        [\"ubuntuVmPrivateKey\"] = ubuntuVmKey.PrivateKeyPem,\n        [\"ubuntuVmPublicKey\"] = ubuntuVmKey.PublicKeyOpenssh,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/go/proxmoxve\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/go/proxmoxve/download\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi-std/sdk/v2/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\tlatestUbuntu22JammyQcow2Img, err := download.NewFileLegacy(ctx, \"latest_ubuntu_22_jammy_qcow2_img\", \u0026download.FileLegacyArgs{\n\t\t\tContentType: pulumi.String(\"import\"),\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\tFileName:    pulumi.String(\"jammy-server-cloudimg-amd64.qcow2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tubuntuVmPassword, err := random.NewRandomPassword(ctx, \"ubuntu_vm_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\tubuntuVmKey, err := tls.NewPrivateKey(ctx, \"ubuntu_vm_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 = proxmoxve.NewVmLegacy(ctx, \"ubuntu_vm\", \u0026proxmoxve.VmLegacyArgs{\n\t\t\tSerialDevices: proxmoxve.VmLegacySerialDeviceArray{\n\t\t\t\t\u0026proxmoxve.VmLegacySerialDeviceArgs{},\n\t\t\t},\n\t\t\tName:        pulumi.String(\"terraform-provider-proxmox-ubuntu-vm\"),\n\t\t\tDescription: pulumi.String(\"Managed by Pulumi\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"terraform\"),\n\t\t\t\tpulumi.String(\"ubuntu\"),\n\t\t\t},\n\t\t\tNodeName: pulumi.String(\"first-node\"),\n\t\t\tVmId:     pulumi.Int(4321),\n\t\t\tAgent: \u0026proxmoxve.VmLegacyAgentArgs{\n\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tStopOnDestroy: pulumi.Bool(true),\n\t\t\tStartup: \u0026proxmoxve.VmLegacyStartupArgs{\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\tCpu: \u0026proxmoxve.VmLegacyCpuArgs{\n\t\t\t\tCores: pulumi.Int(2),\n\t\t\t\tType:  pulumi.String(\"x86-64-v2-AES\"),\n\t\t\t},\n\t\t\tMemory: \u0026proxmoxve.VmLegacyMemoryArgs{\n\t\t\t\tDedicated: pulumi.Int(2048),\n\t\t\t\tFloating:  pulumi.Int(2048),\n\t\t\t},\n\t\t\tDisks: proxmoxve.VmLegacyDiskArray{\n\t\t\t\t\u0026proxmoxve.VmLegacyDiskArgs{\n\t\t\t\t\tDatastoreId: pulumi.String(\"local-lvm\"),\n\t\t\t\t\tImportFrom:  latestUbuntu22JammyQcow2Img.ID(),\n\t\t\t\t\tInterface:   pulumi.String(\"scsi0\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tInitialization: \u0026proxmoxve.VmLegacyInitializationArgs{\n\t\t\t\tIpConfigs: proxmoxve.VmLegacyInitializationIpConfigArray{\n\t\t\t\t\t\u0026proxmoxve.VmLegacyInitializationIpConfigArgs{\n\t\t\t\t\t\tIpv4: \u0026proxmoxve.VmLegacyInitializationIpConfigIpv4Args{\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: \u0026proxmoxve.VmLegacyInitializationUserAccountArgs{\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: ubuntuVmKey.PublicKeyOpenssh,\n\t\t\t\t\t\t}, nil).ApplyT(func(invoke std.TrimspaceResult) (*string, error) {\n\t\t\t\t\t\t\tval := invoke.Result\n\t\t\t\t\t\t\treturn \u0026val, nil\n\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t},\n\t\t\t\t\tPassword: ubuntuVmPassword.Result,\n\t\t\t\t\tUsername: pulumi.String(\"ubuntu\"),\n\t\t\t\t},\n\t\t\t\tUserDataFileId: pulumi.Any(cloudConfig.Id),\n\t\t\t},\n\t\t\tNetworkDevices: proxmoxve.VmLegacyNetworkDeviceArray{\n\t\t\t\t\u0026proxmoxve.VmLegacyNetworkDeviceArgs{\n\t\t\t\t\tBridge: pulumi.String(\"vmbr0\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOperatingSystem: \u0026proxmoxve.VmLegacyOperatingSystemArgs{\n\t\t\t\tType: pulumi.String(\"l26\"),\n\t\t\t},\n\t\t\tTpmState: \u0026proxmoxve.VmLegacyTpmStateArgs{\n\t\t\t\tVersion: pulumi.String(\"v2.0\"),\n\t\t\t},\n\t\t\tVirtiofs: proxmoxve.VmLegacyVirtiofArray{\n\t\t\t\t\u0026proxmoxve.VmLegacyVirtiofArgs{\n\t\t\t\t\tMapping:  pulumi.String(\"data_share\"),\n\t\t\t\t\tCache:    pulumi.String(\"always\"),\n\t\t\t\t\tDirectIo: pulumi.Bool(true),\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\tctx.Export(\"ubuntuVmPassword\", ubuntuVmPassword.Result)\n\t\tctx.Export(\"ubuntuVmPrivateKey\", ubuntuVmKey.PrivateKeyPem)\n\t\tctx.Export(\"ubuntuVmPublicKey\", ubuntuVmKey.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.FileLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.download.FileLegacyArgs;\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.VmLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.VmLegacyArgs;\nimport com.pulumi.proxmoxve.inputs.VmLegacySerialDeviceArgs;\nimport com.pulumi.proxmoxve.inputs.VmLegacyAgentArgs;\nimport com.pulumi.proxmoxve.inputs.VmLegacyStartupArgs;\nimport com.pulumi.proxmoxve.inputs.VmLegacyCpuArgs;\nimport com.pulumi.proxmoxve.inputs.VmLegacyMemoryArgs;\nimport com.pulumi.proxmoxve.inputs.VmLegacyDiskArgs;\nimport com.pulumi.proxmoxve.inputs.VmLegacyInitializationArgs;\nimport com.pulumi.proxmoxve.inputs.VmLegacyInitializationUserAccountArgs;\nimport com.pulumi.proxmoxve.inputs.VmLegacyNetworkDeviceArgs;\nimport com.pulumi.proxmoxve.inputs.VmLegacyOperatingSystemArgs;\nimport com.pulumi.proxmoxve.inputs.VmLegacyTpmStateArgs;\nimport com.pulumi.proxmoxve.inputs.VmLegacyVirtiofArgs;\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 latestUbuntu22JammyQcow2Img = new FileLegacy(\"latestUbuntu22JammyQcow2Img\", FileLegacyArgs.builder()\n            .contentType(\"import\")\n            .datastoreId(\"local\")\n            .nodeName(\"pve\")\n            .url(\"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img\")\n            .fileName(\"jammy-server-cloudimg-amd64.qcow2\")\n            .build());\n\n        var ubuntuVmPassword = new RandomPassword(\"ubuntuVmPassword\", RandomPasswordArgs.builder()\n            .length(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(16) (example.pp:77,21-23)))\n            .overrideSpecial(\"_%@\")\n            .special(true)\n            .build());\n\n        var ubuntuVmKey = new PrivateKey(\"ubuntuVmKey\", PrivateKeyArgs.builder()\n            .algorithm(\"RSA\")\n            .rsaBits(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2048) (example.pp:85,19-23)))\n            .build());\n\n        var ubuntuVm = new VmLegacy(\"ubuntuVm\", VmLegacyArgs.builder()\n            .serialDevices(VmLegacySerialDeviceArgs.builder()\n                .build())\n            .name(\"terraform-provider-proxmox-ubuntu-vm\")\n            .description(\"Managed by Pulumi\")\n            .tags(            \n                \"terraform\",\n                \"ubuntu\")\n            .nodeName(\"first-node\")\n            .vmId(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(4321) (example.pp:7,19-23)))\n            .agent(VmLegacyAgentArgs.builder()\n                .enabled(false)\n                .build())\n            .stopOnDestroy(true)\n            .startup(VmLegacyStartupArgs.builder()\n                .order(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(3) (:0,0-0)))\n                .upDelay(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(60) (:0,0-0)))\n                .downDelay(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(60) (:0,0-0)))\n                .build())\n            .cpu(VmLegacyCpuArgs.builder()\n                .cores(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2) (example.pp:22,13-14)))\n                .type(\"x86-64-v2-AES\")\n                .build())\n            .memory(VmLegacyMemoryArgs.builder()\n                .dedicated(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2048) (example.pp:26,17-21)))\n                .floating(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2048) (example.pp:27,17-21)))\n                .build())\n            .disks(VmLegacyDiskArgs.builder()\n                .datastoreId(\"local-lvm\")\n                .importFrom(latestUbuntu22JammyQcow2Img.id())\n                .interface_(\"scsi0\")\n                .build())\n            .initialization(VmLegacyInitializationArgs.builder()\n                .ipConfigs(VmLegacyInitializationIpConfigArgs.builder()\n                    .ipv4(VmLegacyInitializationIpConfigIpv4Args.builder()\n                        .address(\"dhcp\")\n                        .build())\n                    .build())\n                .userAccount(VmLegacyInitializationUserAccountArgs.builder()\n                    .keys(StdFunctions.trimspace(TrimspaceArgs.builder()\n                        .input(ubuntuVmKey.publicKeyOpenssh())\n                        .build()).applyValue(_invoke -\u003e _invoke.result()))\n                    .password(ubuntuVmPassword.result())\n                    .username(\"ubuntu\")\n                    .build())\n                .userDataFileId(cloudConfig.id())\n                .build())\n            .networkDevices(VmLegacyNetworkDeviceArgs.builder()\n                .bridge(\"vmbr0\")\n                .build())\n            .operatingSystem(VmLegacyOperatingSystemArgs.builder()\n                .type(\"l26\")\n                .build())\n            .tpmState(VmLegacyTpmStateArgs.builder()\n                .version(\"v2.0\")\n                .build())\n            .virtiofs(VmLegacyVirtiofArgs.builder()\n                .mapping(\"data_share\")\n                .cache(\"always\")\n                .directIo(true)\n                .build())\n            .build());\n\n        ctx.export(\"ubuntuVmPassword\", ubuntuVmPassword.result());\n        ctx.export(\"ubuntuVmPrivateKey\", ubuntuVmKey.privateKeyPem());\n        ctx.export(\"ubuntuVmPublicKey\", ubuntuVmKey.publicKeyOpenssh());\n    }\n}\n```\n```yaml\nresources:\n  ubuntuVm:\n    type: proxmoxve:VmLegacy\n    name: ubuntu_vm\n    properties:\n      serialDevices:\n        - {}\n      name: terraform-provider-proxmox-ubuntu-vm\n      description: Managed by Pulumi\n      tags:\n        - terraform\n        - ubuntu\n      nodeName: first-node\n      vmId: 4321\n      agent:\n        enabled: false\n      stopOnDestroy: true\n      startup:\n        order: '3'\n        upDelay: '60'\n        downDelay: '60'\n      cpu:\n        cores: 2\n        type: x86-64-v2-AES\n      memory:\n        dedicated: 2048\n        floating: 2048\n      disks:\n        - datastoreId: local-lvm\n          importFrom: ${latestUbuntu22JammyQcow2Img.id}\n          interface: scsi0\n      initialization:\n        ipConfigs:\n          - ipv4:\n              address: dhcp\n        userAccount:\n          keys:\n            - fn::invoke:\n                function: std:trimspace\n                arguments:\n                  input: ${ubuntuVmKey.publicKeyOpenssh}\n                return: result\n          password: ${ubuntuVmPassword.result}\n          username: ubuntu\n        userDataFileId: ${cloudConfig.id}\n      networkDevices:\n        - bridge: vmbr0\n      operatingSystem:\n        type: l26\n      tpmState:\n        version: v2.0\n      virtiofs:\n        - mapping: data_share\n          cache: always\n          directIo: true\n  latestUbuntu22JammyQcow2Img:\n    type: proxmoxve:download:FileLegacy\n    name: latest_ubuntu_22_jammy_qcow2_img\n    properties:\n      contentType: import\n      datastoreId: local\n      nodeName: pve\n      url: https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img\n      fileName: jammy-server-cloudimg-amd64.qcow2\n  ubuntuVmPassword:\n    type: random:RandomPassword\n    name: ubuntu_vm_password\n    properties:\n      length: 16\n      overrideSpecial: _%@\n      special: true\n  ubuntuVmKey:\n    type: tls:PrivateKey\n    name: ubuntu_vm_key\n    properties:\n      algorithm: RSA\n      rsaBits: 2048\noutputs:\n  ubuntuVmPassword: ${ubuntuVmPassword.result}\n  ubuntuVmPrivateKey: ${ubuntuVmKey.privateKeyPem}\n  ubuntuVmPublicKey: ${ubuntuVmKey.publicKeyOpenssh}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Qemu guest agent\n\nQemu-guest-agent is an application which can be installed inside guest VM, see\n[Proxmox Wiki](https://pve.proxmox.com/wiki/Qemu-guest-agent) and [Proxmox\nDocumentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_qemu_agent)\n\nFor VM with `agent.enabled = false`, Proxmox uses ACPI for `Shutdown` and\n`Reboot`, and `qemu-guest-agent` is not needed inside the VM. For some VMs,\nthe shutdown process may not work, causing the VM to be stuck on destroying.\nAdd \u003cspan pulumi-lang-nodejs=\"`stopOnDestroy \" pulumi-lang-dotnet=\"`StopOnDestroy \" pulumi-lang-go=\"`stopOnDestroy \" pulumi-lang-python=\"`stop_on_destroy \" pulumi-lang-yaml=\"`stopOnDestroy \" pulumi-lang-java=\"`stopOnDestroy \"\u003e`stopOnDestroy \u003c/span\u003e= true` to the VM configuration to stop the VM instead of\nshutting it down.\n\nSetting `agent.enabled = true` informs Proxmox that the guest agent is expected\nto be *running* inside the VM. Proxmox then uses `qemu-guest-agent` instead of\nACPI to control the VM. If the agent is not running, Proxmox operations\n`Shutdown` and `Reboot` time out and fail. The failing operation gets a lock on\nthe VM, and until the operation times out, other operations like `Stop` and\n`Reboot` cannot be used.\n\nDo **not** run VM with `agent.enabled = true`, unless the VM is configured to\nautomatically **start** `qemu-guest-agent` at some point.\n\n\"Monitor\" tab in Proxmox GUI can be used to send low-level commands to \u003cspan pulumi-lang-nodejs=\"`qemu`\" pulumi-lang-dotnet=\"`Qemu`\" pulumi-lang-go=\"`qemu`\" pulumi-lang-python=\"`qemu`\" pulumi-lang-yaml=\"`qemu`\" pulumi-lang-java=\"`qemu`\"\u003e`qemu`\u003c/span\u003e.\nSee the [documentation](https://www.qemu.org/docs/master/system/monitor.html).\nCommands \u003cspan pulumi-lang-nodejs=\"`systemPowerdown`\" pulumi-lang-dotnet=\"`SystemPowerdown`\" pulumi-lang-go=\"`systemPowerdown`\" pulumi-lang-python=\"`system_powerdown`\" pulumi-lang-yaml=\"`systemPowerdown`\" pulumi-lang-java=\"`systemPowerdown`\"\u003e`systemPowerdown`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`quit`\" pulumi-lang-dotnet=\"`Quit`\" pulumi-lang-go=\"`quit`\" pulumi-lang-python=\"`quit`\" pulumi-lang-yaml=\"`quit`\" pulumi-lang-java=\"`quit`\"\u003e`quit`\u003c/span\u003e have proven useful in shutting down VMs\nwith `agent.enabled = true` and no agent running.\n\nCloud images usually do not have `qemu-guest-agent` installed. It is possible to\ninstall and *start* it using cloud-init, e.g. using custom \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`userDataFileId`\u003c/span\u003e\nfile.\n\nThis provider requires `agent.enabled = true` to populate \u003cspan pulumi-lang-nodejs=\"`ipv4Addresses`\" pulumi-lang-dotnet=\"`Ipv4Addresses`\" pulumi-lang-go=\"`ipv4Addresses`\" pulumi-lang-python=\"`ipv4_addresses`\" pulumi-lang-yaml=\"`ipv4Addresses`\" pulumi-lang-java=\"`ipv4Addresses`\"\u003e`ipv4Addresses`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`ipv6Addresses`\" pulumi-lang-dotnet=\"`Ipv6Addresses`\" pulumi-lang-go=\"`ipv6Addresses`\" pulumi-lang-python=\"`ipv6_addresses`\" pulumi-lang-yaml=\"`ipv6Addresses`\" pulumi-lang-java=\"`ipv6Addresses`\"\u003e`ipv6Addresses`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`networkInterfaceNames`\" pulumi-lang-dotnet=\"`NetworkInterfaceNames`\" pulumi-lang-go=\"`networkInterfaceNames`\" pulumi-lang-python=\"`network_interface_names`\" pulumi-lang-yaml=\"`networkInterfaceNames`\" pulumi-lang-java=\"`networkInterfaceNames`\"\u003e`networkInterfaceNames`\u003c/span\u003e output attributes.\n\nSetting `agent.enabled = true` without running `qemu-guest-agent` in the VM will\nalso result in long timeouts when using the provider, both when creating VMs,\nand when refreshing resources.  The provider has no way to distinguish between\n\"qemu-guest-agent not installed\" and \"very long boot due to a disk check\", it\ntrusts the user to set `agent.enabled` correctly and waits for\n`qemu-guest-agent` to start.\n\n## AMD SEV\n\nAMD SEV (-ES, -SNP) are security features for AMD processors. SEV-SNP support\nis included in Proxmox version **8.4**, see Proxmox Wiki\nand [Proxmox Documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_memory_encryption)\nfor more information.\n\n`amd-sev` requires root and therefore `root@pam` auth.\n\nSEV-SNP requires `bios = OVMF` and a supported AMD CPU (`EPYC-v4` for instance), `machine = q35` is also advised. No EFI disk is required since SEV-SNP uses consolidated read-only firmware. A configured EFI will be ignored.\n\nAll changes made to \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`amdSev`\u003c/span\u003e will trigger reboots. Removing or adding the \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`amdSev`\u003c/span\u003e block will force a replacement of the resource. Modifying the \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`amdSev`\u003c/span\u003e block will not trigger replacements.\n\n\u003cspan pulumi-lang-nodejs=\"`allowSmt`\" pulumi-lang-dotnet=\"`AllowSmt`\" pulumi-lang-go=\"`allowSmt`\" pulumi-lang-python=\"`allow_smt`\" pulumi-lang-yaml=\"`allowSmt`\" pulumi-lang-java=\"`allowSmt`\"\u003e`allowSmt`\u003c/span\u003e is by default set 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 even if \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 is not the selected type. Proxmox will ignore this value when \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 is not in use. Likewise \u003cspan pulumi-lang-nodejs=\"`noKeySharing`\" pulumi-lang-dotnet=\"`NoKeySharing`\" pulumi-lang-go=\"`noKeySharing`\" pulumi-lang-python=\"`no_key_sharing`\" pulumi-lang-yaml=\"`noKeySharing`\" pulumi-lang-java=\"`noKeySharing`\"\u003e`noKeySharing`\u003c/span\u003e 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 by default but ignored by Proxmox when \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 is in use.\n\n## High Availability\n\nWhen managing a virtual machine in a multi-node cluster, the VM's HA settings can\nbe managed using the \u003cspan pulumi-lang-nodejs=\"`proxmoxve.HaresourceLegacy`\" pulumi-lang-dotnet=\"`proxmoxve.HaresourceLegacy`\" pulumi-lang-go=\"`HaresourceLegacy`\" pulumi-lang-python=\"`HaresourceLegacy`\" pulumi-lang-yaml=\"`proxmoxve.HaresourceLegacy`\" pulumi-lang-java=\"`proxmoxve.HaresourceLegacy`\"\u003e`proxmoxve.HaresourceLegacy`\u003c/span\u003e resource.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst ubuntuVm = new proxmoxve.VmLegacy(\"ubuntu_vm\", {\n    name: \"terraform-provider-proxmox-ubuntu-vm\",\n    vmId: 4321,\n});\nconst ubuntuVmHaresourceLegacy = new proxmoxve.HaresourceLegacy(\"ubuntu_vm\", {\n    resourceId: pulumi.interpolate`vm:${ubuntuVm.vmId}`,\n    group: \"node1\",\n    state: \"started\",\n    comment: \"Managed by Pulumi\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nubuntu_vm = proxmoxve.VmLegacy(\"ubuntu_vm\",\n    name=\"terraform-provider-proxmox-ubuntu-vm\",\n    vm_id=4321)\nubuntu_vm_haresource_legacy = proxmoxve.HaresourceLegacy(\"ubuntu_vm\",\n    resource_id=ubuntu_vm.vm_id.apply(lambda vm_id: f\"vm:{vm_id}\"),\n    group=\"node1\",\n    state=\"started\",\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 ubuntuVm = new ProxmoxVE.Index.VmLegacy(\"ubuntu_vm\", new()\n    {\n        Name = \"terraform-provider-proxmox-ubuntu-vm\",\n        VmId = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(4321) (example.pp:3,19-23)),\n    });\n\n    var ubuntuVmHaresourceLegacy = new ProxmoxVE.Index.HaresourceLegacy(\"ubuntu_vm\", new()\n    {\n        ResourceId = ubuntuVm.VmId.Apply(vmId =\u003e $\"vm:{vmId}\"),\n        Group = \"node1\",\n        State = \"started\",\n        Comment = \"Managed by Pulumi\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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\tubuntuVm, err := proxmoxve.NewVmLegacy(ctx, \"ubuntu_vm\", \u0026proxmoxve.VmLegacyArgs{\n\t\t\tName: pulumi.String(\"terraform-provider-proxmox-ubuntu-vm\"),\n\t\t\tVmId: pulumi.Int(4321),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = proxmoxve.NewHaresourceLegacy(ctx, \"ubuntu_vm\", \u0026proxmoxve.HaresourceLegacyArgs{\n\t\t\tResourceId: ubuntuVm.VmId.ApplyT(func(vmId int) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"vm:%v\", vmId), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tGroup:   pulumi.String(\"node1\"),\n\t\t\tState:   pulumi.String(\"started\"),\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.VmLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.VmLegacyArgs;\nimport io.muehlbachler.pulumi.proxmoxve.HaresourceLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.HaresourceLegacyArgs;\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 ubuntuVm = new VmLegacy(\"ubuntuVm\", VmLegacyArgs.builder()\n            .name(\"terraform-provider-proxmox-ubuntu-vm\")\n            .vmId(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(4321) (example.pp:3,19-23)))\n            .build());\n\n        var ubuntuVmHaresourceLegacy = new HaresourceLegacy(\"ubuntuVmHaresourceLegacy\", HaresourceLegacyArgs.builder()\n            .resourceId(ubuntuVm.vmId().applyValue(_vmId -\u003e String.format(\"vm:%s\", _vmId)))\n            .group(\"node1\")\n            .state(\"started\")\n            .comment(\"Managed by Pulumi\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ubuntuVm:\n    type: proxmoxve:VmLegacy\n    name: ubuntu_vm\n    properties:\n      name: terraform-provider-proxmox-ubuntu-vm\n      vmId: 4321 # ...\n  ubuntuVmHaresourceLegacy:\n    type: proxmoxve:HaresourceLegacy\n    name: ubuntu_vm\n    properties:\n      resourceId: vm:${ubuntuVm.vmId}\n      group: node1\n      state: started\n      comment: Managed by Pulumi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### HA-Aware Migration\n\nWhen changing 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`nodeName`\u003c/span\u003e of an HA-managed VM, the provider automatically\nhandles the migration in an HA-aware manner:\n\n- **Running HA VMs**: Uses the HA manager's migrate endpoint for live migration\n- **Stopped HA VMs**: Temporarily removes from HA, performs standard migration,\n  then re-adds to HA with the original configuration preserved\n\n\u003e **PVE 9.x Required**: HA-aware migration requires Proxmox VE 9.x due to API\nchanges. On PVE 8.x, migrating HA-managed VMs will fail. As a workaround,\nmanually remove the VM from HA before changing \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`nodeName`\u003c/span\u003e, then re-add after\napply.\n\n## Important Notes\n\n### `local-lvm` Datastore\n\nThe `local-lvm` is the **default datastore** for many configuration blocks, including \u003cspan pulumi-lang-nodejs=\"`initialization`\" pulumi-lang-dotnet=\"`Initialization`\" pulumi-lang-go=\"`initialization`\" pulumi-lang-python=\"`initialization`\" pulumi-lang-yaml=\"`initialization`\" pulumi-lang-java=\"`initialization`\"\u003e`initialization`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`tpmState`\" pulumi-lang-dotnet=\"`TpmState`\" pulumi-lang-go=\"`tpmState`\" pulumi-lang-python=\"`tpm_state`\" pulumi-lang-yaml=\"`tpmState`\" pulumi-lang-java=\"`tpmState`\"\u003e`tpmState`\u003c/span\u003e, which may not seem to be related to \"storage\".\nIf you do not have `local-lvm` configured in your environment, you may need to explicitly set the \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`datastoreId`\u003c/span\u003e in such blocks to a different value.\n\n### Cloning\n\nWhen cloning an existing virtual machine, whether it's a template or not, the\nresource will inherit the disks and other configuration from the source VM.\n\n*If* you modify any attributes of an existing disk in the clone, you also need to  \nexplicitly provide values for any other attributes that differ from the schema defaults  \nin the source (e.g., \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, \u003cspan pulumi-lang-nodejs=\"`discard`\" pulumi-lang-dotnet=\"`Discard`\" pulumi-lang-go=\"`discard`\" pulumi-lang-python=\"`discard`\" pulumi-lang-yaml=\"`discard`\" pulumi-lang-java=\"`discard`\"\u003e`discard`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`cache`\" pulumi-lang-dotnet=\"`Cache`\" pulumi-lang-go=\"`cache`\" pulumi-lang-python=\"`cache`\" pulumi-lang-yaml=\"`cache`\" pulumi-lang-java=\"`cache`\"\u003e`cache`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`aio`\" pulumi-lang-dotnet=\"`Aio`\" pulumi-lang-go=\"`aio`\" pulumi-lang-python=\"`aio`\" pulumi-lang-yaml=\"`aio`\" pulumi-lang-java=\"`aio`\"\u003e`aio`\u003c/span\u003e).  \nOtherwise, the schema defaults will take effect and override the source values.\n\nFurthermore, when cloning from one node to a different one, the behavior changes\ndepening on the datastores of the source VM. If at least one non-shared\ndatastore is used, the VM is first cloned to the source node before being\nmigrated to the target node. This circumvents a limitation in the Proxmox clone\nAPI.\n\nBecause the migration step after the clone tries to preserve the used\ndatastores by their name, it may fail if a datastore used in the source VM is\nnot available on the target node (e.g. `local-lvm` is used on the source node in\nthe VM but no `local-lvm` datastore is available on the target node). In this\ncase, it is recommended to set the \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`datastoreId`\u003c/span\u003e argument in 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 block\nto force the migration step to migrate all disks to a specific datastore on the\ntarget node. If you need certain disks to be on specific datastores, set\nthe \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`datastoreId`\u003c/span\u003e argument of the disks in the \u003cspan pulumi-lang-nodejs=\"`disks`\" pulumi-lang-dotnet=\"`Disks`\" pulumi-lang-go=\"`disks`\" pulumi-lang-python=\"`disks`\" pulumi-lang-yaml=\"`disks`\" pulumi-lang-java=\"`disks`\"\u003e`disks`\u003c/span\u003e block to move the disks\nto the correct datastore after the cloning and migrating succeeded.\n\n## Import\n\nInstances can be imported using 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`nodeName`\u003c/span\u003e and the \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`vmId`\u003c/span\u003e, e.g.,\n\n```sh\n$ pulumi import proxmoxve:index/vmLegacy:VmLegacy 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:index/VmLegacyAgent:VmLegacyAgent",
                    "description": "The QEMU agent configuration.\n"
                },
                "amdSev": {
                    "$ref": "#/types/proxmoxve:index/VmLegacyAmdSev:VmLegacyAmdSev",
                    "description": "Secure Encrypted Virtualization (SEV) features by AMD CPUs.\n"
                },
                "audioDevice": {
                    "$ref": "#/types/proxmoxve:index/VmLegacyAudioDevice:VmLegacyAudioDevice",
                    "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:index/VmLegacyCdrom:VmLegacyCdrom",
                    "description": "The CD-ROM configuration.\n"
                },
                "clone": {
                    "$ref": "#/types/proxmoxve:index/VmLegacyClone:VmLegacyClone",
                    "description": "The cloning configuration.\n"
                },
                "cpu": {
                    "$ref": "#/types/proxmoxve:index/VmLegacyCpu:VmLegacyCpu",
                    "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:index/VmLegacyDisk:VmLegacyDisk"
                    },
                    "description": "A disk (multiple blocks supported).\n"
                },
                "efiDisk": {
                    "$ref": "#/types/proxmoxve:index/VmLegacyEfiDisk:VmLegacyEfiDisk",
                    "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:index/VmLegacyHostpci:VmLegacyHostpci"
                    },
                    "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`. When \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 is included in the\nhotplug list, disk resizes on a running VM are applied live without a\nreboot. When \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 is excluded, the provider will reboot the VM after\nresize (controlled by \u003cspan pulumi-lang-nodejs=\"`rebootAfterUpdate`\" pulumi-lang-dotnet=\"`RebootAfterUpdate`\" pulumi-lang-go=\"`rebootAfterUpdate`\" pulumi-lang-python=\"`reboot_after_update`\" pulumi-lang-yaml=\"`rebootAfterUpdate`\" pulumi-lang-java=\"`rebootAfterUpdate`\"\u003e`rebootAfterUpdate`\u003c/span\u003e).\n"
                },
                "initialization": {
                    "$ref": "#/types/proxmoxve:index/VmLegacyInitialization:VmLegacyInitialization",
                    "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:index/VmLegacyMemory:VmLegacyMemory",
                    "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. Must be a valid DNS name.\n"
                },
                "networkDevices": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/proxmoxve:index/VmLegacyNetworkDevice:VmLegacyNetworkDevice"
                    },
                    "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:index/VmLegacyNuma:VmLegacyNuma"
                    },
                    "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:index/VmLegacyOperatingSystem:VmLegacyOperatingSystem",
                    "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": "Whether the provider may automatically\nreboot or power off the VM during update operations when required to apply\nchanges. 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, updates that require taking the VM offline fail\ninstead of being applied automatically. Changes that are applied\nsuccessfully but still need a later manual reboot emit a warning instead\n(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:index/VmLegacyRng:VmLegacyRng"
                    },
                    "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:index/VmLegacySerialDevice:VmLegacySerialDevice"
                    },
                    "description": "A serial device (multiple blocks supported).\n"
                },
                "smbios": {
                    "$ref": "#/types/proxmoxve:index/VmLegacySmbios:VmLegacySmbios",
                    "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:index/VmLegacyStartup:VmLegacyStartup",
                    "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`ignoreChanges`\u003c/span\u003e lifecycle meta-argument to ignore\nchanges to this attribute.\n"
                },
                "template": {
                    "type": "boolean",
                    "description": "Whether the VM should be a template. Setting this\nfrom \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 \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 converts an existing VM to a template in place.\nConverting a template back to a regular VM is not supported (defaults to\n\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 timeoutClone \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:index/VmLegacyTpmState:VmLegacyTpmState",
                    "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:index/VmLegacyUsb:VmLegacyUsb"
                    },
                    "description": "A host USB device mapping (multiple blocks supported).\n"
                },
                "vga": {
                    "$ref": "#/types/proxmoxve:index/VmLegacyVga:VmLegacyVga",
                    "description": "The VGA configuration.\n"
                },
                "virtiofs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/proxmoxve:index/VmLegacyVirtiof:VmLegacyVirtiof"
                    },
                    "description": "Virtiofs share\n"
                },
                "vmId": {
                    "type": "integer",
                    "description": "The VM identifier.\n"
                },
                "watchdog": {
                    "$ref": "#/types/proxmoxve:index/VmLegacyWatchdog:VmLegacyWatchdog",
                    "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:index/VmLegacyAgent:VmLegacyAgent",
                    "description": "The QEMU agent configuration.\n"
                },
                "amdSev": {
                    "$ref": "#/types/proxmoxve:index/VmLegacyAmdSev:VmLegacyAmdSev",
                    "description": "Secure Encrypted Virtualization (SEV) features by AMD CPUs.\n",
                    "willReplaceOnChanges": true
                },
                "audioDevice": {
                    "$ref": "#/types/proxmoxve:index/VmLegacyAudioDevice:VmLegacyAudioDevice",
                    "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:index/VmLegacyCdrom:VmLegacyCdrom",
                    "description": "The CD-ROM configuration.\n"
                },
                "clone": {
                    "$ref": "#/types/proxmoxve:index/VmLegacyClone:VmLegacyClone",
                    "description": "The cloning configuration.\n"
                },
                "cpu": {
                    "$ref": "#/types/proxmoxve:index/VmLegacyCpu:VmLegacyCpu",
                    "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:index/VmLegacyDisk:VmLegacyDisk"
                    },
                    "description": "A disk (multiple blocks supported).\n"
                },
                "efiDisk": {
                    "$ref": "#/types/proxmoxve:index/VmLegacyEfiDisk:VmLegacyEfiDisk",
                    "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:index/VmLegacyHostpci:VmLegacyHostpci"
                    },
                    "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`. When \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 is included in the\nhotplug list, disk resizes on a running VM are applied live without a\nreboot. When \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 is excluded, the provider will reboot the VM after\nresize (controlled by \u003cspan pulumi-lang-nodejs=\"`rebootAfterUpdate`\" pulumi-lang-dotnet=\"`RebootAfterUpdate`\" pulumi-lang-go=\"`rebootAfterUpdate`\" pulumi-lang-python=\"`reboot_after_update`\" pulumi-lang-yaml=\"`rebootAfterUpdate`\" pulumi-lang-java=\"`rebootAfterUpdate`\"\u003e`rebootAfterUpdate`\u003c/span\u003e).\n"
                },
                "initialization": {
                    "$ref": "#/types/proxmoxve:index/VmLegacyInitialization:VmLegacyInitialization",
                    "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:index/VmLegacyMemory:VmLegacyMemory",
                    "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. Must be a valid DNS name.\n"
                },
                "networkDevices": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/proxmoxve:index/VmLegacyNetworkDevice:VmLegacyNetworkDevice"
                    },
                    "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:index/VmLegacyNuma:VmLegacyNuma"
                    },
                    "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:index/VmLegacyOperatingSystem:VmLegacyOperatingSystem",
                    "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": "Whether the provider may automatically\nreboot or power off the VM during update operations when required to apply\nchanges. 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, updates that require taking the VM offline fail\ninstead of being applied automatically. Changes that are applied\nsuccessfully but still need a later manual reboot emit a warning instead\n(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:index/VmLegacyRng:VmLegacyRng"
                    },
                    "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:index/VmLegacySerialDevice:VmLegacySerialDevice"
                    },
                    "description": "A serial device (multiple blocks supported).\n"
                },
                "smbios": {
                    "$ref": "#/types/proxmoxve:index/VmLegacySmbios:VmLegacySmbios",
                    "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:index/VmLegacyStartup:VmLegacyStartup",
                    "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`ignoreChanges`\u003c/span\u003e lifecycle meta-argument to ignore\nchanges to this attribute.\n"
                },
                "template": {
                    "type": "boolean",
                    "description": "Whether the VM should be a template. Setting this\nfrom \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 \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 converts an existing VM to a template in place.\nConverting a template back to a regular VM is not supported (defaults to\n\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 timeoutClone \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:index/VmLegacyTpmState:VmLegacyTpmState",
                    "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:index/VmLegacyUsb:VmLegacyUsb"
                    },
                    "description": "A host USB device mapping (multiple blocks supported).\n"
                },
                "vga": {
                    "$ref": "#/types/proxmoxve:index/VmLegacyVga:VmLegacyVga",
                    "description": "The VGA configuration.\n"
                },
                "virtiofs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/proxmoxve:index/VmLegacyVirtiof:VmLegacyVirtiof"
                    },
                    "description": "Virtiofs share\n"
                },
                "vmId": {
                    "type": "integer",
                    "description": "The VM identifier.\n"
                },
                "watchdog": {
                    "$ref": "#/types/proxmoxve:index/VmLegacyWatchdog:VmLegacyWatchdog",
                    "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 VmLegacy 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:index/VmLegacyAgent:VmLegacyAgent",
                        "description": "The QEMU agent configuration.\n"
                    },
                    "amdSev": {
                        "$ref": "#/types/proxmoxve:index/VmLegacyAmdSev:VmLegacyAmdSev",
                        "description": "Secure Encrypted Virtualization (SEV) features by AMD CPUs.\n",
                        "willReplaceOnChanges": true
                    },
                    "audioDevice": {
                        "$ref": "#/types/proxmoxve:index/VmLegacyAudioDevice:VmLegacyAudioDevice",
                        "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:index/VmLegacyCdrom:VmLegacyCdrom",
                        "description": "The CD-ROM configuration.\n"
                    },
                    "clone": {
                        "$ref": "#/types/proxmoxve:index/VmLegacyClone:VmLegacyClone",
                        "description": "The cloning configuration.\n"
                    },
                    "cpu": {
                        "$ref": "#/types/proxmoxve:index/VmLegacyCpu:VmLegacyCpu",
                        "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:index/VmLegacyDisk:VmLegacyDisk"
                        },
                        "description": "A disk (multiple blocks supported).\n"
                    },
                    "efiDisk": {
                        "$ref": "#/types/proxmoxve:index/VmLegacyEfiDisk:VmLegacyEfiDisk",
                        "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:index/VmLegacyHostpci:VmLegacyHostpci"
                        },
                        "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`. When \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 is included in the\nhotplug list, disk resizes on a running VM are applied live without a\nreboot. When \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 is excluded, the provider will reboot the VM after\nresize (controlled by \u003cspan pulumi-lang-nodejs=\"`rebootAfterUpdate`\" pulumi-lang-dotnet=\"`RebootAfterUpdate`\" pulumi-lang-go=\"`rebootAfterUpdate`\" pulumi-lang-python=\"`reboot_after_update`\" pulumi-lang-yaml=\"`rebootAfterUpdate`\" pulumi-lang-java=\"`rebootAfterUpdate`\"\u003e`rebootAfterUpdate`\u003c/span\u003e).\n"
                    },
                    "initialization": {
                        "$ref": "#/types/proxmoxve:index/VmLegacyInitialization:VmLegacyInitialization",
                        "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:index/VmLegacyMemory:VmLegacyMemory",
                        "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. Must be a valid DNS name.\n"
                    },
                    "networkDevices": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/proxmoxve:index/VmLegacyNetworkDevice:VmLegacyNetworkDevice"
                        },
                        "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:index/VmLegacyNuma:VmLegacyNuma"
                        },
                        "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:index/VmLegacyOperatingSystem:VmLegacyOperatingSystem",
                        "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": "Whether the provider may automatically\nreboot or power off the VM during update operations when required to apply\nchanges. 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, updates that require taking the VM offline fail\ninstead of being applied automatically. Changes that are applied\nsuccessfully but still need a later manual reboot emit a warning instead\n(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:index/VmLegacyRng:VmLegacyRng"
                        },
                        "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:index/VmLegacySerialDevice:VmLegacySerialDevice"
                        },
                        "description": "A serial device (multiple blocks supported).\n"
                    },
                    "smbios": {
                        "$ref": "#/types/proxmoxve:index/VmLegacySmbios:VmLegacySmbios",
                        "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:index/VmLegacyStartup:VmLegacyStartup",
                        "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`ignoreChanges`\u003c/span\u003e lifecycle meta-argument to ignore\nchanges to this attribute.\n"
                    },
                    "template": {
                        "type": "boolean",
                        "description": "Whether the VM should be a template. Setting this\nfrom \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 \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 converts an existing VM to a template in place.\nConverting a template back to a regular VM is not supported (defaults to\n\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 timeoutClone \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:index/VmLegacyTpmState:VmLegacyTpmState",
                        "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:index/VmLegacyUsb:VmLegacyUsb"
                        },
                        "description": "A host USB device mapping (multiple blocks supported).\n"
                    },
                    "vga": {
                        "$ref": "#/types/proxmoxve:index/VmLegacyVga:VmLegacyVga",
                        "description": "The VGA configuration.\n"
                    },
                    "virtiofs": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/proxmoxve:index/VmLegacyVirtiof:VmLegacyVirtiof"
                        },
                        "description": "Virtiofs share\n"
                    },
                    "vmId": {
                        "type": "integer",
                        "description": "The VM identifier.\n"
                    },
                    "watchdog": {
                        "$ref": "#/types/proxmoxve:index/VmLegacyWatchdog:VmLegacyWatchdog",
                        "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:metrics/server:Server": {
            "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.Server(\"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.Server(\"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.Server(\"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.Server(\"influxdb_server\",\n    name=\"example_influxdb_server\",\n    server=\"192.168.3.2\",\n    port=8089,\n    type=\"influxdb\")\ngraphite_server = proxmoxve.metrics.Server(\"graphite_server\",\n    name=\"example_graphite_server\",\n    server=\"192.168.4.2\",\n    port=2003,\n    type=\"graphite\")\nopentelemetry_server = proxmoxve.metrics.Server(\"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.Server(\"influxdb_server\", new()\n    {\n        Name = \"example_influxdb_server\",\n        ServerAddress = \"192.168.3.2\",\n        Port = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(8089) (example.pp:4,19-23)),\n        Type = \"influxdb\",\n    });\n\n    var graphiteServer = new ProxmoxVE.Metrics.Server(\"graphite_server\", new()\n    {\n        Name = \"example_graphite_server\",\n        ServerAddress = \"192.168.4.2\",\n        Port = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2003) (example.pp:12,19-23)),\n        Type = \"graphite\",\n    });\n\n    var opentelemetryServer = new ProxmoxVE.Metrics.Server(\"opentelemetry_server\", new()\n    {\n        Name = \"example_opentelemetry_server\",\n        ServerAddress = \"192.168.5.2\",\n        Port = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(4318) (example.pp:20,24-28)),\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/v8/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.NewServer(ctx, \"influxdb_server\", \u0026metrics.ServerArgs{\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.NewServer(ctx, \"graphite_server\", \u0026metrics.ServerArgs{\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.NewServer(ctx, \"opentelemetry_server\", \u0026metrics.ServerArgs{\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.Server;\nimport io.muehlbachler.pulumi.proxmoxve.metrics.ServerArgs;\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 Server(\"influxdbServer\", ServerArgs.builder()\n            .name(\"example_influxdb_server\")\n            .server(\"192.168.3.2\")\n            .port(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(8089) (example.pp:4,19-23)))\n            .type(\"influxdb\")\n            .build());\n\n        var graphiteServer = new Server(\"graphiteServer\", ServerArgs.builder()\n            .name(\"example_graphite_server\")\n            .server(\"192.168.4.2\")\n            .port(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2003) (example.pp:12,19-23)))\n            .type(\"graphite\")\n            .build());\n\n        var opentelemetryServer = new Server(\"opentelemetryServer\", ServerArgs.builder()\n            .name(\"example_opentelemetry_server\")\n            .server(\"192.168.5.2\")\n            .port(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(4318) (example.pp:20,24-28)))\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:Server\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:Server\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:Server\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/server:Server 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. 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"
                },
                "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. If not set, PVE default is \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"
                },
                "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"
                },
                "opentelemetryCompression": {
                    "type": "string",
                    "description": "OpenTelemetry compression algorithm for requests. Choice is between \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 | \u003cspan pulumi-lang-nodejs=\"`gzip`\" pulumi-lang-dotnet=\"`Gzip`\" pulumi-lang-go=\"`gzip`\" pulumi-lang-python=\"`gzip`\" pulumi-lang-yaml=\"`gzip`\" pulumi-lang-java=\"`gzip`\"\u003e`gzip`\u003c/span\u003e. If not set, PVE default is \u003cspan pulumi-lang-nodejs=\"`gzip`\" pulumi-lang-dotnet=\"`Gzip`\" pulumi-lang-go=\"`gzip`\" pulumi-lang-python=\"`gzip`\" pulumi-lang-yaml=\"`gzip`\" pulumi-lang-java=\"`gzip`\"\u003e`gzip`\u003c/span\u003e.\n"
                },
                "opentelemetryHeaders": {
                    "type": "string",
                    "description": "OpenTelemetry custom HTTP headers as JSON, base64 encoded.\n",
                    "secret": true
                },
                "opentelemetryMaxBodySize": {
                    "type": "integer",
                    "description": "OpenTelemetry maximum request body size in bytes. If not set, PVE default is \u003cspan pulumi-lang-nodejs=\"`10000000`\" pulumi-lang-dotnet=\"`10000000`\" pulumi-lang-go=\"`10000000`\" pulumi-lang-python=\"`10000000`\" pulumi-lang-yaml=\"`10000000`\" pulumi-lang-java=\"`10000000`\"\u003e`10000000`\u003c/span\u003e.\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=\"`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"
                },
                "opentelemetryResourceAttributes": {
                    "type": "string",
                    "description": "OpenTelemetry additional resource attributes as JSON, base64 encoded.\n"
                },
                "opentelemetryTimeout": {
                    "type": "integer",
                    "description": "OpenTelemetry HTTP request timeout in seconds. If not set, PVE default is \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"
                },
                "opentelemetryVerifySsl": {
                    "type": "boolean",
                    "description": "OpenTelemetry verify SSL certificates. If not set, PVE default is \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"
                },
                "port": {
                    "type": "integer",
                    "description": "Server network port.\n"
                },
                "server": {
                    "type": "string",
                    "description": "Server dns name or IP address.\n",
                    "language": {
                        "csharp": {
                            "name": "serverAddress"
                        }
                    }
                },
                "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": [
                "disable",
                "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. 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"
                },
                "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. If not set, PVE default is \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"
                },
                "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"
                },
                "opentelemetryCompression": {
                    "type": "string",
                    "description": "OpenTelemetry compression algorithm for requests. Choice is between \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 | \u003cspan pulumi-lang-nodejs=\"`gzip`\" pulumi-lang-dotnet=\"`Gzip`\" pulumi-lang-go=\"`gzip`\" pulumi-lang-python=\"`gzip`\" pulumi-lang-yaml=\"`gzip`\" pulumi-lang-java=\"`gzip`\"\u003e`gzip`\u003c/span\u003e. If not set, PVE default is \u003cspan pulumi-lang-nodejs=\"`gzip`\" pulumi-lang-dotnet=\"`Gzip`\" pulumi-lang-go=\"`gzip`\" pulumi-lang-python=\"`gzip`\" pulumi-lang-yaml=\"`gzip`\" pulumi-lang-java=\"`gzip`\"\u003e`gzip`\u003c/span\u003e.\n"
                },
                "opentelemetryHeaders": {
                    "type": "string",
                    "description": "OpenTelemetry custom HTTP headers as JSON, base64 encoded.\n",
                    "secret": true
                },
                "opentelemetryMaxBodySize": {
                    "type": "integer",
                    "description": "OpenTelemetry maximum request body size in bytes. If not set, PVE default is \u003cspan pulumi-lang-nodejs=\"`10000000`\" pulumi-lang-dotnet=\"`10000000`\" pulumi-lang-go=\"`10000000`\" pulumi-lang-python=\"`10000000`\" pulumi-lang-yaml=\"`10000000`\" pulumi-lang-java=\"`10000000`\"\u003e`10000000`\u003c/span\u003e.\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=\"`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"
                },
                "opentelemetryResourceAttributes": {
                    "type": "string",
                    "description": "OpenTelemetry additional resource attributes as JSON, base64 encoded.\n"
                },
                "opentelemetryTimeout": {
                    "type": "integer",
                    "description": "OpenTelemetry HTTP request timeout in seconds. If not set, PVE default is \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"
                },
                "opentelemetryVerifySsl": {
                    "type": "boolean",
                    "description": "OpenTelemetry verify SSL certificates. If not set, PVE default is \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"
                },
                "port": {
                    "type": "integer",
                    "description": "Server network port.\n"
                },
                "server": {
                    "type": "string",
                    "description": "Server dns name or IP address.\n",
                    "language": {
                        "csharp": {
                            "name": "serverAddress"
                        }
                    }
                },
                "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 Server 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. 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"
                    },
                    "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. If not set, PVE default is \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"
                    },
                    "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"
                    },
                    "opentelemetryCompression": {
                        "type": "string",
                        "description": "OpenTelemetry compression algorithm for requests. Choice is between \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 | \u003cspan pulumi-lang-nodejs=\"`gzip`\" pulumi-lang-dotnet=\"`Gzip`\" pulumi-lang-go=\"`gzip`\" pulumi-lang-python=\"`gzip`\" pulumi-lang-yaml=\"`gzip`\" pulumi-lang-java=\"`gzip`\"\u003e`gzip`\u003c/span\u003e. If not set, PVE default is \u003cspan pulumi-lang-nodejs=\"`gzip`\" pulumi-lang-dotnet=\"`Gzip`\" pulumi-lang-go=\"`gzip`\" pulumi-lang-python=\"`gzip`\" pulumi-lang-yaml=\"`gzip`\" pulumi-lang-java=\"`gzip`\"\u003e`gzip`\u003c/span\u003e.\n"
                    },
                    "opentelemetryHeaders": {
                        "type": "string",
                        "description": "OpenTelemetry custom HTTP headers as JSON, base64 encoded.\n",
                        "secret": true
                    },
                    "opentelemetryMaxBodySize": {
                        "type": "integer",
                        "description": "OpenTelemetry maximum request body size in bytes. If not set, PVE default is \u003cspan pulumi-lang-nodejs=\"`10000000`\" pulumi-lang-dotnet=\"`10000000`\" pulumi-lang-go=\"`10000000`\" pulumi-lang-python=\"`10000000`\" pulumi-lang-yaml=\"`10000000`\" pulumi-lang-java=\"`10000000`\"\u003e`10000000`\u003c/span\u003e.\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=\"`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"
                    },
                    "opentelemetryResourceAttributes": {
                        "type": "string",
                        "description": "OpenTelemetry additional resource attributes as JSON, base64 encoded.\n"
                    },
                    "opentelemetryTimeout": {
                        "type": "integer",
                        "description": "OpenTelemetry HTTP request timeout in seconds. If not set, PVE default is \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"
                    },
                    "opentelemetryVerifySsl": {
                        "type": "boolean",
                        "description": "OpenTelemetry verify SSL certificates. If not set, PVE default is \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"
                    },
                    "port": {
                        "type": "integer",
                        "description": "Server network port.\n"
                    },
                    "server": {
                        "type": "string",
                        "description": "Server dns name or IP address.\n",
                        "language": {
                            "csharp": {
                                "name": "serverAddress"
                            }
                        }
                    },
                    "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:metrics/serverLegacy:ServerLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.metrics.Server`\" pulumi-lang-dotnet=\"`proxmoxve.metrics.Server`\" pulumi-lang-go=\"`metrics.Server`\" pulumi-lang-python=\"`metrics.Server`\" pulumi-lang-yaml=\"`proxmoxve.metrics.Server`\" pulumi-lang-java=\"`proxmoxve.metrics.Server`\"\u003e`proxmoxve.metrics.Server`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages 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.ServerLegacy(\"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.ServerLegacy(\"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.ServerLegacy(\"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.ServerLegacy(\"influxdb_server\",\n    name=\"example_influxdb_server\",\n    server=\"192.168.3.2\",\n    port=8089,\n    type=\"influxdb\")\ngraphite_server = proxmoxve.metrics.ServerLegacy(\"graphite_server\",\n    name=\"example_graphite_server\",\n    server=\"192.168.4.2\",\n    port=2003,\n    type=\"graphite\")\nopentelemetry_server = proxmoxve.metrics.ServerLegacy(\"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.ServerLegacy(\"influxdb_server\", new()\n    {\n        Name = \"example_influxdb_server\",\n        ServerAddress = \"192.168.3.2\",\n        Port = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(8089) (example.pp:4,19-23)),\n        Type = \"influxdb\",\n    });\n\n    var graphiteServer = new ProxmoxVE.Metrics.ServerLegacy(\"graphite_server\", new()\n    {\n        Name = \"example_graphite_server\",\n        ServerAddress = \"192.168.4.2\",\n        Port = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2003) (example.pp:12,19-23)),\n        Type = \"graphite\",\n    });\n\n    var opentelemetryServer = new ProxmoxVE.Metrics.ServerLegacy(\"opentelemetry_server\", new()\n    {\n        Name = \"example_opentelemetry_server\",\n        ServerAddress = \"192.168.5.2\",\n        Port = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(4318) (example.pp:20,24-28)),\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/v8/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.NewServerLegacy(ctx, \"influxdb_server\", \u0026metrics.ServerLegacyArgs{\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.NewServerLegacy(ctx, \"graphite_server\", \u0026metrics.ServerLegacyArgs{\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.NewServerLegacy(ctx, \"opentelemetry_server\", \u0026metrics.ServerLegacyArgs{\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.ServerLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.metrics.ServerLegacyArgs;\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 ServerLegacy(\"influxdbServer\", ServerLegacyArgs.builder()\n            .name(\"example_influxdb_server\")\n            .server(\"192.168.3.2\")\n            .port(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(8089) (example.pp:4,19-23)))\n            .type(\"influxdb\")\n            .build());\n\n        var graphiteServer = new ServerLegacy(\"graphiteServer\", ServerLegacyArgs.builder()\n            .name(\"example_graphite_server\")\n            .server(\"192.168.4.2\")\n            .port(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2003) (example.pp:12,19-23)))\n            .type(\"graphite\")\n            .build());\n\n        var opentelemetryServer = new ServerLegacy(\"opentelemetryServer\", ServerLegacyArgs.builder()\n            .name(\"example_opentelemetry_server\")\n            .server(\"192.168.5.2\")\n            .port(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(4318) (example.pp:20,24-28)))\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:ServerLegacy\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:ServerLegacy\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:ServerLegacy\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/serverLegacy:ServerLegacy 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. 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"
                },
                "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. If not set, PVE default is \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"
                },
                "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"
                },
                "opentelemetryCompression": {
                    "type": "string",
                    "description": "OpenTelemetry compression algorithm for requests. Choice is between \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 | \u003cspan pulumi-lang-nodejs=\"`gzip`\" pulumi-lang-dotnet=\"`Gzip`\" pulumi-lang-go=\"`gzip`\" pulumi-lang-python=\"`gzip`\" pulumi-lang-yaml=\"`gzip`\" pulumi-lang-java=\"`gzip`\"\u003e`gzip`\u003c/span\u003e. If not set, PVE default is \u003cspan pulumi-lang-nodejs=\"`gzip`\" pulumi-lang-dotnet=\"`Gzip`\" pulumi-lang-go=\"`gzip`\" pulumi-lang-python=\"`gzip`\" pulumi-lang-yaml=\"`gzip`\" pulumi-lang-java=\"`gzip`\"\u003e`gzip`\u003c/span\u003e.\n"
                },
                "opentelemetryHeaders": {
                    "type": "string",
                    "description": "OpenTelemetry custom HTTP headers as JSON, base64 encoded.\n",
                    "secret": true
                },
                "opentelemetryMaxBodySize": {
                    "type": "integer",
                    "description": "OpenTelemetry maximum request body size in bytes. If not set, PVE default is \u003cspan pulumi-lang-nodejs=\"`10000000`\" pulumi-lang-dotnet=\"`10000000`\" pulumi-lang-go=\"`10000000`\" pulumi-lang-python=\"`10000000`\" pulumi-lang-yaml=\"`10000000`\" pulumi-lang-java=\"`10000000`\"\u003e`10000000`\u003c/span\u003e.\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=\"`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"
                },
                "opentelemetryResourceAttributes": {
                    "type": "string",
                    "description": "OpenTelemetry additional resource attributes as JSON, base64 encoded.\n"
                },
                "opentelemetryTimeout": {
                    "type": "integer",
                    "description": "OpenTelemetry HTTP request timeout in seconds. If not set, PVE default is \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"
                },
                "opentelemetryVerifySsl": {
                    "type": "boolean",
                    "description": "OpenTelemetry verify SSL certificates. If not set, PVE default is \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"
                },
                "port": {
                    "type": "integer",
                    "description": "Server network port.\n"
                },
                "server": {
                    "type": "string",
                    "description": "Server dns name or IP address.\n",
                    "language": {
                        "csharp": {
                            "name": "serverAddress"
                        }
                    }
                },
                "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": [
                "disable",
                "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. 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"
                },
                "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. If not set, PVE default is \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"
                },
                "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"
                },
                "opentelemetryCompression": {
                    "type": "string",
                    "description": "OpenTelemetry compression algorithm for requests. Choice is between \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 | \u003cspan pulumi-lang-nodejs=\"`gzip`\" pulumi-lang-dotnet=\"`Gzip`\" pulumi-lang-go=\"`gzip`\" pulumi-lang-python=\"`gzip`\" pulumi-lang-yaml=\"`gzip`\" pulumi-lang-java=\"`gzip`\"\u003e`gzip`\u003c/span\u003e. If not set, PVE default is \u003cspan pulumi-lang-nodejs=\"`gzip`\" pulumi-lang-dotnet=\"`Gzip`\" pulumi-lang-go=\"`gzip`\" pulumi-lang-python=\"`gzip`\" pulumi-lang-yaml=\"`gzip`\" pulumi-lang-java=\"`gzip`\"\u003e`gzip`\u003c/span\u003e.\n"
                },
                "opentelemetryHeaders": {
                    "type": "string",
                    "description": "OpenTelemetry custom HTTP headers as JSON, base64 encoded.\n",
                    "secret": true
                },
                "opentelemetryMaxBodySize": {
                    "type": "integer",
                    "description": "OpenTelemetry maximum request body size in bytes. If not set, PVE default is \u003cspan pulumi-lang-nodejs=\"`10000000`\" pulumi-lang-dotnet=\"`10000000`\" pulumi-lang-go=\"`10000000`\" pulumi-lang-python=\"`10000000`\" pulumi-lang-yaml=\"`10000000`\" pulumi-lang-java=\"`10000000`\"\u003e`10000000`\u003c/span\u003e.\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=\"`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"
                },
                "opentelemetryResourceAttributes": {
                    "type": "string",
                    "description": "OpenTelemetry additional resource attributes as JSON, base64 encoded.\n"
                },
                "opentelemetryTimeout": {
                    "type": "integer",
                    "description": "OpenTelemetry HTTP request timeout in seconds. If not set, PVE default is \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"
                },
                "opentelemetryVerifySsl": {
                    "type": "boolean",
                    "description": "OpenTelemetry verify SSL certificates. If not set, PVE default is \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"
                },
                "port": {
                    "type": "integer",
                    "description": "Server network port.\n"
                },
                "server": {
                    "type": "string",
                    "description": "Server dns name or IP address.\n",
                    "language": {
                        "csharp": {
                            "name": "serverAddress"
                        }
                    }
                },
                "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 ServerLegacy 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. 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"
                    },
                    "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. If not set, PVE default is \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"
                    },
                    "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"
                    },
                    "opentelemetryCompression": {
                        "type": "string",
                        "description": "OpenTelemetry compression algorithm for requests. Choice is between \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 | \u003cspan pulumi-lang-nodejs=\"`gzip`\" pulumi-lang-dotnet=\"`Gzip`\" pulumi-lang-go=\"`gzip`\" pulumi-lang-python=\"`gzip`\" pulumi-lang-yaml=\"`gzip`\" pulumi-lang-java=\"`gzip`\"\u003e`gzip`\u003c/span\u003e. If not set, PVE default is \u003cspan pulumi-lang-nodejs=\"`gzip`\" pulumi-lang-dotnet=\"`Gzip`\" pulumi-lang-go=\"`gzip`\" pulumi-lang-python=\"`gzip`\" pulumi-lang-yaml=\"`gzip`\" pulumi-lang-java=\"`gzip`\"\u003e`gzip`\u003c/span\u003e.\n"
                    },
                    "opentelemetryHeaders": {
                        "type": "string",
                        "description": "OpenTelemetry custom HTTP headers as JSON, base64 encoded.\n",
                        "secret": true
                    },
                    "opentelemetryMaxBodySize": {
                        "type": "integer",
                        "description": "OpenTelemetry maximum request body size in bytes. If not set, PVE default is \u003cspan pulumi-lang-nodejs=\"`10000000`\" pulumi-lang-dotnet=\"`10000000`\" pulumi-lang-go=\"`10000000`\" pulumi-lang-python=\"`10000000`\" pulumi-lang-yaml=\"`10000000`\" pulumi-lang-java=\"`10000000`\"\u003e`10000000`\u003c/span\u003e.\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=\"`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"
                    },
                    "opentelemetryResourceAttributes": {
                        "type": "string",
                        "description": "OpenTelemetry additional resource attributes as JSON, base64 encoded.\n"
                    },
                    "opentelemetryTimeout": {
                        "type": "integer",
                        "description": "OpenTelemetry HTTP request timeout in seconds. If not set, PVE default is \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"
                    },
                    "opentelemetryVerifySsl": {
                        "type": "boolean",
                        "description": "OpenTelemetry verify SSL certificates. If not set, PVE default is \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"
                    },
                    "port": {
                        "type": "integer",
                        "description": "Server network port.\n"
                    },
                    "server": {
                        "type": "string",
                        "description": "Server dns name or IP address.\n",
                        "language": {
                            "csharp": {
                                "name": "serverAddress"
                            }
                        }
                    },
                    "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/linux/bond:Bond": {
            "description": "Manages a Linux Bond network interface in a Proxmox VE node.\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"
                },
                "bondMode": {
                    "type": "string",
                    "description": "The bonding mode. Possible values are `balance-rr`, `active-backup`, `balance-xor`, \u003cspan pulumi-lang-nodejs=\"`broadcast`\" pulumi-lang-dotnet=\"`Broadcast`\" pulumi-lang-go=\"`broadcast`\" pulumi-lang-python=\"`broadcast`\" pulumi-lang-yaml=\"`broadcast`\" pulumi-lang-java=\"`broadcast`\"\u003e`broadcast`\u003c/span\u003e, `802.3ad`, `balance-tlb`, `balance-alb`.\n"
                },
                "bondPrimary": {
                    "type": "string",
                    "description": "The primary interface for `active-backup` bond mode. Specifies which slave interface should be the active one.\n"
                },
                "bondXmitHashPolicy": {
                    "type": "string",
                    "description": "The transmit hash policy for `balance-xor` and `802.3ad` bond modes. Possible values are \u003cspan pulumi-lang-nodejs=\"`layer2`\" pulumi-lang-dotnet=\"`Layer2`\" pulumi-lang-go=\"`layer2`\" pulumi-lang-python=\"`layer2`\" pulumi-lang-yaml=\"`layer2`\" pulumi-lang-java=\"`layer2`\"\u003e`layer2`\u003c/span\u003e, `layer2+3`, `layer3+4`.\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. Must be `bond[N]`, where 0 ≤ N (e.g. bond0, bond1), or 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"
                },
                "slaves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The interface bond slaves (member interfaces).\n"
                },
                "timeoutReload": {
                    "type": "integer",
                    "description": "Timeout for network reload operations in seconds (defaults to \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).\n"
                }
            },
            "required": [
                "autostart",
                "bondMode",
                "name",
                "nodeName",
                "slaves",
                "timeoutReload"
            ],
            "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"
                },
                "bondMode": {
                    "type": "string",
                    "description": "The bonding mode. Possible values are `balance-rr`, `active-backup`, `balance-xor`, \u003cspan pulumi-lang-nodejs=\"`broadcast`\" pulumi-lang-dotnet=\"`Broadcast`\" pulumi-lang-go=\"`broadcast`\" pulumi-lang-python=\"`broadcast`\" pulumi-lang-yaml=\"`broadcast`\" pulumi-lang-java=\"`broadcast`\"\u003e`broadcast`\u003c/span\u003e, `802.3ad`, `balance-tlb`, `balance-alb`.\n"
                },
                "bondPrimary": {
                    "type": "string",
                    "description": "The primary interface for `active-backup` bond mode. Specifies which slave interface should be the active one.\n"
                },
                "bondXmitHashPolicy": {
                    "type": "string",
                    "description": "The transmit hash policy for `balance-xor` and `802.3ad` bond modes. Possible values are \u003cspan pulumi-lang-nodejs=\"`layer2`\" pulumi-lang-dotnet=\"`Layer2`\" pulumi-lang-go=\"`layer2`\" pulumi-lang-python=\"`layer2`\" pulumi-lang-yaml=\"`layer2`\" pulumi-lang-java=\"`layer2`\"\u003e`layer2`\u003c/span\u003e, `layer2+3`, `layer3+4`.\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. Must be `bond[N]`, where 0 ≤ N (e.g. bond0, bond1), or 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"
                },
                "slaves": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The interface bond slaves (member interfaces).\n"
                },
                "timeoutReload": {
                    "type": "integer",
                    "description": "Timeout for network reload operations in seconds (defaults to \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).\n"
                }
            },
            "requiredInputs": [
                "nodeName",
                "slaves"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Bond 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"
                    },
                    "bondMode": {
                        "type": "string",
                        "description": "The bonding mode. Possible values are `balance-rr`, `active-backup`, `balance-xor`, \u003cspan pulumi-lang-nodejs=\"`broadcast`\" pulumi-lang-dotnet=\"`Broadcast`\" pulumi-lang-go=\"`broadcast`\" pulumi-lang-python=\"`broadcast`\" pulumi-lang-yaml=\"`broadcast`\" pulumi-lang-java=\"`broadcast`\"\u003e`broadcast`\u003c/span\u003e, `802.3ad`, `balance-tlb`, `balance-alb`.\n"
                    },
                    "bondPrimary": {
                        "type": "string",
                        "description": "The primary interface for `active-backup` bond mode. Specifies which slave interface should be the active one.\n"
                    },
                    "bondXmitHashPolicy": {
                        "type": "string",
                        "description": "The transmit hash policy for `balance-xor` and `802.3ad` bond modes. Possible values are \u003cspan pulumi-lang-nodejs=\"`layer2`\" pulumi-lang-dotnet=\"`Layer2`\" pulumi-lang-go=\"`layer2`\" pulumi-lang-python=\"`layer2`\" pulumi-lang-yaml=\"`layer2`\" pulumi-lang-java=\"`layer2`\"\u003e`layer2`\u003c/span\u003e, `layer2+3`, `layer3+4`.\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. Must be `bond[N]`, where 0 ≤ N (e.g. bond0, bond1), or 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"
                    },
                    "slaves": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The interface bond slaves (member interfaces).\n"
                    },
                    "timeoutReload": {
                        "type": "integer",
                        "description": "Timeout for network reload operations in seconds (defaults to \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).\n"
                    }
                },
                "type": "object"
            }
        },
        "proxmoxve:network/linux/bridge:Bridge": {
            "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.linux.Vlan(\"vlan99\", {\n    nodeName: \"pve\",\n    name: \"ens18.99\",\n});\nconst vmbr99 = new proxmoxve.network.linux.Bridge(\"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.linux.Vlan(\"vlan99\",\n    node_name=\"pve\",\n    name=\"ens18.99\")\nvmbr99 = proxmoxve.network.linux.Bridge(\"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.Linux.Vlan(\"vlan99\", new()\n    {\n        NodeName = \"pve\",\n        Name = \"ens18.99\",\n    });\n\n    var vmbr99 = new ProxmoxVE.Network.Linux.Bridge(\"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/v8/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.NewVlan(ctx, \"vlan99\", \u0026network.VlanArgs{\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.NewBridge(ctx, \"vmbr99\", \u0026network.BridgeArgs{\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.Vlan;\nimport io.muehlbachler.pulumi.proxmoxve.network.VlanArgs;\nimport io.muehlbachler.pulumi.proxmoxve.network.Bridge;\nimport io.muehlbachler.pulumi.proxmoxve.network.BridgeArgs;\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 Vlan(\"vlan99\", VlanArgs.builder()\n            .nodeName(\"pve\")\n            .name(\"ens18.99\")\n            .build());\n\n        var vmbr99 = new Bridge(\"vmbr99\", BridgeArgs.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/linux:Bridge\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/linux:Vlan\n    properties:\n      nodeName: pve\n      name: ens18.99\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n!/usr/bin/env sh\nInterfaces can be imported using the `node_name:iface` format, e.g.\n\n```sh\n$ pulumi import proxmoxve:network/linux/bridge:Bridge 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 string containing only letters, numbers, and underscores (_), starting with a letter and 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"
                },
                "timeoutReload": {
                    "type": "integer",
                    "description": "Timeout for network reload operations in seconds (defaults to \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).\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",
                "timeoutReload",
                "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 string containing only letters, numbers, and underscores (_), starting with a letter and 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"
                },
                "timeoutReload": {
                    "type": "integer",
                    "description": "Timeout for network reload operations in seconds (defaults to \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).\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 Bridge 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 string containing only letters, numbers, and underscores (_), starting with a letter and 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"
                    },
                    "timeoutReload": {
                        "type": "integer",
                        "description": "Timeout for network reload operations in seconds (defaults to \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).\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/linux/bridgeLegacy:BridgeLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.network/linux.Bridge`\" pulumi-lang-dotnet=\"`proxmoxve.network/linux.Bridge`\" pulumi-lang-go=\"`network/linux.Bridge`\" pulumi-lang-python=\"`network/linux.Bridge`\" pulumi-lang-yaml=\"`proxmoxve.network/linux.Bridge`\" pulumi-lang-java=\"`proxmoxve.network/linux.Bridge`\"\u003e`proxmoxve.network/linux.Bridge`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages 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.linux.VlanLegacy(\"vlan99\", {\n    nodeName: \"pve\",\n    name: \"ens18.99\",\n});\nconst vmbr99 = new proxmoxve.network.linux.BridgeLegacy(\"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.linux.VlanLegacy(\"vlan99\",\n    node_name=\"pve\",\n    name=\"ens18.99\")\nvmbr99 = proxmoxve.network.linux.BridgeLegacy(\"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.Linux.VlanLegacy(\"vlan99\", new()\n    {\n        NodeName = \"pve\",\n        Name = \"ens18.99\",\n    });\n\n    var vmbr99 = new ProxmoxVE.Network.Linux.BridgeLegacy(\"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/v8/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.NewVlanLegacy(ctx, \"vlan99\", \u0026network.VlanLegacyArgs{\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.NewBridgeLegacy(ctx, \"vmbr99\", \u0026network.BridgeLegacyArgs{\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.VlanLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.network.VlanLegacyArgs;\nimport io.muehlbachler.pulumi.proxmoxve.network.BridgeLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.network.BridgeLegacyArgs;\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 VlanLegacy(\"vlan99\", VlanLegacyArgs.builder()\n            .nodeName(\"pve\")\n            .name(\"ens18.99\")\n            .build());\n\n        var vmbr99 = new BridgeLegacy(\"vmbr99\", BridgeLegacyArgs.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/linux:BridgeLegacy\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/linux:VlanLegacy\n    properties:\n      nodeName: pve\n      name: ens18.99\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n!/usr/bin/env sh\nInterfaces can be imported using the `node_name:iface` format, e.g.\n\n```sh\n$ pulumi import proxmoxve:network/linux/bridgeLegacy:BridgeLegacy 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 string containing only letters, numbers, and underscores (_), starting with a letter and 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"
                },
                "timeoutReload": {
                    "type": "integer",
                    "description": "Timeout for network reload operations in seconds (defaults to \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).\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",
                "timeoutReload",
                "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 string containing only letters, numbers, and underscores (_), starting with a letter and 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"
                },
                "timeoutReload": {
                    "type": "integer",
                    "description": "Timeout for network reload operations in seconds (defaults to \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).\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 BridgeLegacy 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 string containing only letters, numbers, and underscores (_), starting with a letter and 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"
                    },
                    "timeoutReload": {
                        "type": "integer",
                        "description": "Timeout for network reload operations in seconds (defaults to \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).\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/linux/vlan:Vlan": {
            "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.linux.Vlan(\"vlan99\", {\n    nodeName: \"pve\",\n    name: \"eno0.99\",\n    comment: \"VLAN 99\",\n});\n// using custom network interface name\nconst vlan98 = new proxmoxve.network.linux.Vlan(\"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.linux.Vlan(\"vlan99\",\n    node_name=\"pve\",\n    name=\"eno0.99\",\n    comment=\"VLAN 99\")\n# using custom network interface name\nvlan98 = proxmoxve.network.linux.Vlan(\"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.Linux.Vlan(\"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.Linux.Vlan(\"vlan98\", new()\n    {\n        NodeName = \"pve\",\n        Name = \"vlan_lab\",\n        Interface = \"eno0\",\n        VlanId = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(98) (example.pp:13,15-17)),\n        Comment = \"VLAN 98\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.NewVlan(ctx, \"vlan99\", \u0026network.VlanArgs{\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.NewVlan(ctx, \"vlan98\", \u0026network.VlanArgs{\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.Vlan;\nimport io.muehlbachler.pulumi.proxmoxve.network.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        // using VLAN tag\n        var vlan99 = new Vlan(\"vlan99\", VlanArgs.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 Vlan(\"vlan98\", VlanArgs.builder()\n            .nodeName(\"pve\")\n            .name(\"vlan_lab\")\n            .interface_(\"eno0\")\n            .vlan(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(98) (example.pp:13,15-17)))\n            .comment(\"VLAN 98\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # using VLAN tag\n  vlan99:\n    type: proxmoxve:network/linux:Vlan\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/linux:Vlan\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\nInterfaces can be imported using the `node_name:iface` format, e.g.\n\n```sh\n$ pulumi import proxmoxve:network/linux/vlan:Vlan 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`vlanLab`\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"
                },
                "timeoutReload": {
                    "type": "integer",
                    "description": "Timeout for network reload operations in seconds (defaults to \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).\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",
                    "language": {
                        "csharp": {
                            "name": "vlanId"
                        }
                    }
                }
            },
            "required": [
                "autostart",
                "interface",
                "name",
                "nodeName",
                "timeoutReload",
                "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`vlanLab`\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"
                },
                "timeoutReload": {
                    "type": "integer",
                    "description": "Timeout for network reload operations in seconds (defaults to \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).\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",
                    "language": {
                        "csharp": {
                            "name": "vlanId"
                        }
                    }
                }
            },
            "requiredInputs": [
                "nodeName"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Vlan 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`vlanLab`\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"
                    },
                    "timeoutReload": {
                        "type": "integer",
                        "description": "Timeout for network reload operations in seconds (defaults to \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).\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",
                        "language": {
                            "csharp": {
                                "name": "vlanId"
                            }
                        }
                    }
                },
                "type": "object"
            }
        },
        "proxmoxve:network/linux/vlanLegacy:VlanLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.network/linux.Vlan`\" pulumi-lang-dotnet=\"`proxmoxve.network/linux.Vlan`\" pulumi-lang-go=\"`network/linux.Vlan`\" pulumi-lang-python=\"`network/linux.Vlan`\" pulumi-lang-yaml=\"`proxmoxve.network/linux.Vlan`\" pulumi-lang-java=\"`proxmoxve.network/linux.Vlan`\"\u003e`proxmoxve.network/linux.Vlan`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages 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.linux.VlanLegacy(\"vlan99\", {\n    nodeName: \"pve\",\n    name: \"eno0.99\",\n    comment: \"VLAN 99\",\n});\n// using custom network interface name\nconst vlan98 = new proxmoxve.network.linux.VlanLegacy(\"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.linux.VlanLegacy(\"vlan99\",\n    node_name=\"pve\",\n    name=\"eno0.99\",\n    comment=\"VLAN 99\")\n# using custom network interface name\nvlan98 = proxmoxve.network.linux.VlanLegacy(\"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.Linux.VlanLegacy(\"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.Linux.VlanLegacy(\"vlan98\", new()\n    {\n        NodeName = \"pve\",\n        Name = \"vlan_lab\",\n        Interface = \"eno0\",\n        VlanId = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(98) (example.pp:13,15-17)),\n        Comment = \"VLAN 98\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.NewVlanLegacy(ctx, \"vlan99\", \u0026network.VlanLegacyArgs{\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.NewVlanLegacy(ctx, \"vlan98\", \u0026network.VlanLegacyArgs{\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.VlanLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.network.VlanLegacyArgs;\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 VlanLegacy(\"vlan99\", VlanLegacyArgs.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 VlanLegacy(\"vlan98\", VlanLegacyArgs.builder()\n            .nodeName(\"pve\")\n            .name(\"vlan_lab\")\n            .interface_(\"eno0\")\n            .vlan(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(98) (example.pp:13,15-17)))\n            .comment(\"VLAN 98\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # using VLAN tag\n  vlan99:\n    type: proxmoxve:network/linux:VlanLegacy\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/linux:VlanLegacy\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\nInterfaces can be imported using the `node_name:iface` format, e.g.\n\n```sh\n$ pulumi import proxmoxve:network/linux/vlanLegacy:VlanLegacy 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`vlanLab`\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"
                },
                "timeoutReload": {
                    "type": "integer",
                    "description": "Timeout for network reload operations in seconds (defaults to \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).\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",
                    "language": {
                        "csharp": {
                            "name": "vlanId"
                        }
                    }
                }
            },
            "required": [
                "autostart",
                "interface",
                "name",
                "nodeName",
                "timeoutReload",
                "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`vlanLab`\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"
                },
                "timeoutReload": {
                    "type": "integer",
                    "description": "Timeout for network reload operations in seconds (defaults to \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).\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",
                    "language": {
                        "csharp": {
                            "name": "vlanId"
                        }
                    }
                }
            },
            "requiredInputs": [
                "nodeName"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering VlanLegacy 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`vlanLab`\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"
                    },
                    "timeoutReload": {
                        "type": "integer",
                        "description": "Timeout for network reload operations in seconds (defaults to \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).\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",
                        "language": {
                            "csharp": {
                                "name": "vlanId"
                            }
                        }
                    }
                },
                "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/v8/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:node/firewallLegacy:FirewallLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.node.Firewall`\" pulumi-lang-dotnet=\"`proxmoxve.node.Firewall`\" pulumi-lang-go=\"`node.Firewall`\" pulumi-lang-python=\"`node.Firewall`\" pulumi-lang-yaml=\"`proxmoxve.node.Firewall`\" pulumi-lang-java=\"`proxmoxve.node.Firewall`\"\u003e`proxmoxve.node.Firewall`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages 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.FirewallLegacy(\"node-pve1\", {\n    nodeName: \"pve1\",\n    enabled: false,\n});\nconst pve2 = new proxmoxve.node.FirewallLegacy(\"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.FirewallLegacy(\"node-pve1\",\n    node_name=\"pve1\",\n    enabled=False)\npve2 = proxmoxve.node.FirewallLegacy(\"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.FirewallLegacy(\"node-pve1\", new()\n    {\n        NodeName = \"pve1\",\n        Enabled = false,\n    });\n\n    var pve2 = new ProxmoxVE.Node.FirewallLegacy(\"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/v8/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.NewFirewallLegacy(ctx, \"node-pve1\", \u0026node.FirewallLegacyArgs{\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.NewFirewallLegacy(ctx, \"pve2\", \u0026node.FirewallLegacyArgs{\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.FirewallLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.node.FirewallLegacyArgs;\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 FirewallLegacy(\"node-pve1\", FirewallLegacyArgs.builder()\n            .nodeName(\"pve1\")\n            .enabled(false)\n            .build());\n\n        var pve2 = new FirewallLegacy(\"pve2\", FirewallLegacyArgs.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:FirewallLegacy\n    properties:\n      nodeName: pve1\n      enabled: false\n  pve2:\n    type: proxmoxve:node:FirewallLegacy\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/firewallLegacy:FirewallLegacy 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 FirewallLegacy 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 = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(900) (example.pp:18,24-27)),\n        Overwrite = false,\n        OverwriteUnmanaged = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(900) (example.pp:18,24-27)))\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:oci/imageLegacy:ImageLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.oci.Image`\" pulumi-lang-dotnet=\"`proxmoxve.oci.Image`\" pulumi-lang-go=\"`oci.Image`\" pulumi-lang-python=\"`oci.Image`\" pulumi-lang-yaml=\"`proxmoxve.oci.Image`\" pulumi-lang-java=\"`proxmoxve.oci.Image`\"\u003e`proxmoxve.oci.Image`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages 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.ImageLegacy(\"ubuntu_latest\", {\n    nodeName: \"pve\",\n    datastoreId: \"local\",\n    reference: \"docker.io/library/ubuntu:latest\",\n});\nconst nginx = new proxmoxve.oci.ImageLegacy(\"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.ImageLegacy(\"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.ImageLegacy(\"ubuntu_latest\",\n    node_name=\"pve\",\n    datastore_id=\"local\",\n    reference=\"docker.io/library/ubuntu:latest\")\nnginx = proxmoxve.oci.ImageLegacy(\"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.ImageLegacy(\"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.ImageLegacy(\"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.ImageLegacy(\"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.ImageLegacy(\"debian\", new()\n    {\n        NodeName = \"pve\",\n        DatastoreId = \"local\",\n        Reference = \"docker.io/library/debian:bookworm\",\n        UploadTimeout = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(900) (example.pp:18,24-27)),\n        Overwrite = false,\n        OverwriteUnmanaged = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.NewImageLegacy(ctx, \"ubuntu_latest\", \u0026oci.ImageLegacyArgs{\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.NewImageLegacy(ctx, \"nginx\", \u0026oci.ImageLegacyArgs{\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.NewImageLegacy(ctx, \"debian\", \u0026oci.ImageLegacyArgs{\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.ImageLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.oci.ImageLegacyArgs;\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 ImageLegacy(\"ubuntuLatest\", ImageLegacyArgs.builder()\n            .nodeName(\"pve\")\n            .datastoreId(\"local\")\n            .reference(\"docker.io/library/ubuntu:latest\")\n            .build());\n\n        var nginx = new ImageLegacy(\"nginx\", ImageLegacyArgs.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 ImageLegacy(\"debian\", ImageLegacyArgs.builder()\n            .nodeName(\"pve\")\n            .datastoreId(\"local\")\n            .reference(\"docker.io/library/debian:bookworm\")\n            .uploadTimeout(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(900) (example.pp:18,24-27)))\n            .overwrite(false)\n            .overwriteUnmanaged(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ubuntuLatest:\n    type: proxmoxve:oci:ImageLegacy\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:ImageLegacy\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:ImageLegacy\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 ImageLegacy 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: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(\"test_vm1\", {\n    vmId: 1234,\n    nodeName: \"pve\",\n    started: false,\n});\nconst testPool = new proxmoxve.PoolLegacy(\"test_pool\", {poolId: \"test-pool\"});\nconst vmMembership = new proxmoxve.pool.Membership(\"vm_membership\", {\n    poolId: testPool.id,\n    vmId: testVm1.resourceId,\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(\"test_vm1\",\n    vm_id=1234,\n    node_name=\"pve\",\n    started=False)\ntest_pool = proxmoxve.PoolLegacy(\"test_pool\", pool_id=\"test-pool\")\nvm_membership = proxmoxve.pool.Membership(\"vm_membership\",\n    pool_id=test_pool.id,\n    vm_id=test_vm1.resource_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.Index.Vm(\"test_vm1\", new()\n    {\n        VmId = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1234) (example.pp:2,19-23)),\n        NodeName = \"pve\",\n        Started = false,\n    });\n\n    var testPool = new ProxmoxVE.Index.PoolLegacy(\"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.ResourceId,\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/v8/go/proxmoxve\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/go/proxmoxve/pool\"\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 := proxmoxve.NewVm(ctx, \"test_vm1\", \u0026proxmoxve.VmArgs{\n\t\t\tVmId:     1234,\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tStarted:  false,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestPool, err := proxmoxve.NewPoolLegacy(ctx, \"test_pool\", \u0026proxmoxve.PoolLegacyArgs{\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.ResourceId,\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;\nimport io.muehlbachler.pulumi.proxmoxve.VmArgs;\nimport io.muehlbachler.pulumi.proxmoxve.PoolLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.PoolLegacyArgs;\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 Vm(\"testVm1\", VmArgs.builder()\n            .vmId(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1234) (example.pp:2,19-23)))\n            .nodeName(\"pve\")\n            .started(false)\n            .build());\n\n        var testPool = new PoolLegacy(\"testPool\", PoolLegacyArgs.builder()\n            .poolId(\"test-pool\")\n            .build());\n\n        var vmMembership = new Membership(\"vmMembership\", MembershipArgs.builder()\n            .poolId(testPool.id())\n            .vmId(testVm1.resourceId())\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\n    name: test_vm1\n    properties:\n      vmId: 1234\n      nodeName: pve\n      started: false\n  testPool:\n    type: proxmoxve:PoolLegacy\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.resourceId}\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\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:pool/membershipLegacy:MembershipLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.pool.Membership`\" pulumi-lang-dotnet=\"`proxmoxve.pool.Membership`\" pulumi-lang-go=\"`pool.Membership`\" pulumi-lang-python=\"`pool.Membership`\" pulumi-lang-yaml=\"`proxmoxve.pool.Membership`\" pulumi-lang-java=\"`proxmoxve.pool.Membership`\"\u003e`proxmoxve.pool.Membership`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages 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.VmLegacy(\"test_vm1\", {\n    vmId: 1234,\n    nodeName: \"pve\",\n    started: false,\n});\nconst testPool = new proxmoxve.PoolLegacy(\"test_pool\", {poolId: \"test-pool\"});\nconst vmMembership = new proxmoxve.pool.MembershipLegacy(\"vm_membership\", {\n    poolId: testPool.id,\n    vmId: testVm1.id,\n});\nconst storageMembership = new proxmoxve.pool.MembershipLegacy(\"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.VmLegacy(\"test_vm1\",\n    vm_id=1234,\n    node_name=\"pve\",\n    started=False)\ntest_pool = proxmoxve.PoolLegacy(\"test_pool\", pool_id=\"test-pool\")\nvm_membership = proxmoxve.pool.MembershipLegacy(\"vm_membership\",\n    pool_id=test_pool.id,\n    vm_id=test_vm1.id)\nstorage_membership = proxmoxve.pool.MembershipLegacy(\"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.Index.VmLegacy(\"test_vm1\", new()\n    {\n        VmId = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1234) (example.pp:2,19-23)),\n        NodeName = \"pve\",\n        Started = false,\n    });\n\n    var testPool = new ProxmoxVE.Index.PoolLegacy(\"test_pool\", new()\n    {\n        PoolId = \"test-pool\",\n    });\n\n    var vmMembership = new ProxmoxVE.Pool.MembershipLegacy(\"vm_membership\", new()\n    {\n        PoolId = testPool.Id,\n        VmId = testVm1.Id,\n    });\n\n    var storageMembership = new ProxmoxVE.Pool.MembershipLegacy(\"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/v8/go/proxmoxve\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/go/proxmoxve/pool\"\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 := proxmoxve.NewVmLegacy(ctx, \"test_vm1\", \u0026proxmoxve.VmLegacyArgs{\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 := proxmoxve.NewPoolLegacy(ctx, \"test_pool\", \u0026proxmoxve.PoolLegacyArgs{\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.NewMembershipLegacy(ctx, \"vm_membership\", \u0026pool.MembershipLegacyArgs{\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.NewMembershipLegacy(ctx, \"storage_membership\", \u0026pool.MembershipLegacyArgs{\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.VmLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.VmLegacyArgs;\nimport io.muehlbachler.pulumi.proxmoxve.PoolLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.PoolLegacyArgs;\nimport io.muehlbachler.pulumi.proxmoxve.pool.MembershipLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.pool.MembershipLegacyArgs;\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 VmLegacy(\"testVm1\", VmLegacyArgs.builder()\n            .vmId(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1234) (example.pp:2,19-23)))\n            .nodeName(\"pve\")\n            .started(false)\n            .build());\n\n        var testPool = new PoolLegacy(\"testPool\", PoolLegacyArgs.builder()\n            .poolId(\"test-pool\")\n            .build());\n\n        var vmMembership = new MembershipLegacy(\"vmMembership\", MembershipLegacyArgs.builder()\n            .poolId(testPool.id())\n            .vmId(testVm1.id())\n            .build());\n\n        var storageMembership = new MembershipLegacy(\"storageMembership\", MembershipLegacyArgs.builder()\n            .poolId(testPool.id())\n            .storageId(\"local-lvm\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  testVm1:\n    type: proxmoxve:VmLegacy\n    name: test_vm1\n    properties:\n      vmId: 1234\n      nodeName: pve\n      started: false\n  testPool:\n    type: proxmoxve:PoolLegacy\n    name: test_pool\n    properties:\n      poolId: test-pool\n  vmMembership:\n    type: proxmoxve:pool:MembershipLegacy\n    name: vm_membership\n    properties:\n      poolId: ${testPool.id}\n      vmId: ${testVm1.id}\n  storageMembership:\n    type: proxmoxve:pool:MembershipLegacy\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\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/membershipLegacy:MembershipLegacy 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 MembershipLegacy 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": "Manages an LDAP authentication realm in Proxmox VE.\n\nLDAP realms allow Proxmox to authenticate users against an LDAP directory service.\n\n## Privileges Required\n\n| Path | Attribute |\n|-----------------|----------------|\n| /access/domains | Realm.Allocate |\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.realm.Ldap(\"example\", {\n    realm: \"example-ldap\",\n    server1: \"ldap.example.com\",\n    port: 389,\n    baseDn: \"ou=people,dc=example,dc=com\",\n    userAttr: \"uid\",\n    bindDn: \"cn=admin,dc=example,dc=com\",\n    bindPassword: ldapBindPassword,\n    mode: \"ldap+starttls\",\n    verify: true,\n    groupDn: \"ou=groups,dc=example,dc=com\",\n    groupFilter: \"(objectClass=groupOfNames)\",\n    comment: \"Example LDAP realm managed by Terraform\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.realm.Ldap(\"example\",\n    realm=\"example-ldap\",\n    server1=\"ldap.example.com\",\n    port=389,\n    base_dn=\"ou=people,dc=example,dc=com\",\n    user_attr=\"uid\",\n    bind_dn=\"cn=admin,dc=example,dc=com\",\n    bind_password=ldap_bind_password,\n    mode=\"ldap+starttls\",\n    verify=True,\n    group_dn=\"ou=groups,dc=example,dc=com\",\n    group_filter=\"(objectClass=groupOfNames)\",\n    comment=\"Example LDAP realm managed by Terraform\")\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.Realm.Ldap(\"example\", new()\n    {\n        Realm = \"example-ldap\",\n        Server1 = \"ldap.example.com\",\n        Port = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(389) (example.pp:3,13-16)),\n        BaseDn = \"ou=people,dc=example,dc=com\",\n        UserAttr = \"uid\",\n        BindDn = \"cn=admin,dc=example,dc=com\",\n        BindPassword = ldapBindPassword,\n        Mode = \"ldap+starttls\",\n        Verify = true,\n        GroupDn = \"ou=groups,dc=example,dc=com\",\n        GroupFilter = \"(objectClass=groupOfNames)\",\n        Comment = \"Example LDAP realm managed by Terraform\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/go/proxmoxve/realm\"\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 := realm.NewLdap(ctx, \"example\", \u0026realm.LdapArgs{\n\t\t\tRealm:        pulumi.String(\"example-ldap\"),\n\t\t\tServer1:      pulumi.String(\"ldap.example.com\"),\n\t\t\tPort:         pulumi.Int(389),\n\t\t\tBaseDn:       pulumi.String(\"ou=people,dc=example,dc=com\"),\n\t\t\tUserAttr:     pulumi.String(\"uid\"),\n\t\t\tBindDn:       pulumi.String(\"cn=admin,dc=example,dc=com\"),\n\t\t\tBindPassword: pulumi.Any(ldapBindPassword),\n\t\t\tMode:         pulumi.String(\"ldap+starttls\"),\n\t\t\tVerify:       pulumi.Bool(true),\n\t\t\tGroupDn:      pulumi.String(\"ou=groups,dc=example,dc=com\"),\n\t\t\tGroupFilter:  pulumi.String(\"(objectClass=groupOfNames)\"),\n\t\t\tComment:      pulumi.String(\"Example LDAP realm managed by Terraform\"),\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.realm.Ldap;\nimport io.muehlbachler.pulumi.proxmoxve.realm.LdapArgs;\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 Ldap(\"example\", LdapArgs.builder()\n            .realm(\"example-ldap\")\n            .server1(\"ldap.example.com\")\n            .port(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(389) (example.pp:3,13-16)))\n            .baseDn(\"ou=people,dc=example,dc=com\")\n            .userAttr(\"uid\")\n            .bindDn(\"cn=admin,dc=example,dc=com\")\n            .bindPassword(ldapBindPassword)\n            .mode(\"ldap+starttls\")\n            .verify(true)\n            .groupDn(\"ou=groups,dc=example,dc=com\")\n            .groupFilter(\"(objectClass=groupOfNames)\")\n            .comment(\"Example LDAP realm managed by Terraform\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:realm:Ldap\n    properties:\n      realm: example-ldap\n      server1: ldap.example.com\n      port: 389 # Base DN and user attribute\n      baseDn: ou=people,dc=example,dc=com\n      userAttr: uid\n      bindDn: cn=admin,dc=example,dc=com\n      bindPassword: ${ldapBindPassword}\n      mode: ldap+starttls\n      verify: true # Group synchronization (optional)\n      groupDn: ou=groups,dc=example,dc=com\n      groupFilter: (objectClass=groupOfNames)\n      comment: Example LDAP realm managed by Terraform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Notes\n\n### Password Security\n\nThe \u003cspan pulumi-lang-nodejs=\"`bindPassword`\" pulumi-lang-dotnet=\"`BindPassword`\" pulumi-lang-go=\"`bindPassword`\" pulumi-lang-python=\"`bind_password`\" pulumi-lang-yaml=\"`bindPassword`\" pulumi-lang-java=\"`bindPassword`\"\u003e`bindPassword`\u003c/span\u003e is sent to Proxmox and stored securely, but it's never returned by the API. This means:\n- Terraform cannot detect if the password was changed outside of Terraform\n- You must maintain the password in your Terraform configuration or use a variable\n- The password will be marked as sensitive in Terraform state\n\n### LDAP vs LDAPS\n\n- **LDAP (port 389)**: Unencrypted connection. Not recommended for production.\n- **LDAPS (port 636)**: Encrypted connection using SSL/TLS. Recommended for production.\n- **LDAP+StartTLS**: Upgrades plain LDAP connection to TLS. Alternative to LDAPS.\n\n### User Synchronization\n\nTo trigger synchronization, use the \u003cspan pulumi-lang-nodejs=\"`proxmoxve.realm.Sync`\" pulumi-lang-dotnet=\"`proxmoxve.realm.Sync`\" pulumi-lang-go=\"`realm.Sync`\" pulumi-lang-python=\"`realm.Sync`\" pulumi-lang-yaml=\"`proxmoxve.realm.Sync`\" pulumi-lang-java=\"`proxmoxve.realm.Sync`\"\u003e`proxmoxve.realm.Sync`\u003c/span\u003e resource.\n\n### Common Configuration Scenarios\n\n#### Anonymous Binding\nFor testing or public LDAP servers, omit \u003cspan pulumi-lang-nodejs=\"`bindDn`\" pulumi-lang-dotnet=\"`BindDn`\" pulumi-lang-go=\"`bindDn`\" pulumi-lang-python=\"`bind_dn`\" pulumi-lang-yaml=\"`bindDn`\" pulumi-lang-java=\"`bindDn`\"\u003e`bindDn`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`bindPassword`\" pulumi-lang-dotnet=\"`BindPassword`\" pulumi-lang-go=\"`bindPassword`\" pulumi-lang-python=\"`bind_password`\" pulumi-lang-yaml=\"`bindPassword`\" pulumi-lang-java=\"`bindPassword`\"\u003e`bindPassword`\u003c/span\u003e to use anonymous binding:\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst anonymous = new proxmoxve.realm.Ldap(\"anonymous\", {\n    realm: \"public-ldap\",\n    server1: \"ldap.example.com\",\n    baseDn: \"ou=users,dc=example,dc=com\",\n    userAttr: \"uid\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nanonymous = proxmoxve.realm.Ldap(\"anonymous\",\n    realm=\"public-ldap\",\n    server1=\"ldap.example.com\",\n    base_dn=\"ou=users,dc=example,dc=com\",\n    user_attr=\"uid\")\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 anonymous = new ProxmoxVE.Realm.Ldap(\"anonymous\", new()\n    {\n        Realm = \"public-ldap\",\n        Server1 = \"ldap.example.com\",\n        BaseDn = \"ou=users,dc=example,dc=com\",\n        UserAttr = \"uid\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/go/proxmoxve/realm\"\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 := realm.NewLdap(ctx, \"anonymous\", \u0026realm.LdapArgs{\n\t\t\tRealm:    pulumi.String(\"public-ldap\"),\n\t\t\tServer1:  pulumi.String(\"ldap.example.com\"),\n\t\t\tBaseDn:   pulumi.String(\"ou=users,dc=example,dc=com\"),\n\t\t\tUserAttr: pulumi.String(\"uid\"),\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.realm.Ldap;\nimport io.muehlbachler.pulumi.proxmoxve.realm.LdapArgs;\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 anonymous = new Ldap(\"anonymous\", LdapArgs.builder()\n            .realm(\"public-ldap\")\n            .server1(\"ldap.example.com\")\n            .baseDn(\"ou=users,dc=example,dc=com\")\n            .userAttr(\"uid\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  anonymous:\n    type: proxmoxve:realm:Ldap\n    properties:\n      realm: public-ldap\n      server1: ldap.example.com\n      baseDn: ou=users,dc=example,dc=com\n      userAttr: uid\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n#### Secure LDAPS with Failover\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst secure = new proxmoxve.realm.Ldap(\"secure\", {\n    realm: \"secure-ldap\",\n    server1: \"ldap1.example.com\",\n    server2: \"ldap2.example.com\",\n    port: 636,\n    baseDn: \"ou=users,dc=example,dc=com\",\n    bindDn: \"cn=readonly,dc=example,dc=com\",\n    bindPassword: ldapPassword,\n    mode: \"ldaps\",\n    verify: true,\n    caPath: \"/etc/pve/priv/ca.crt\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nsecure = proxmoxve.realm.Ldap(\"secure\",\n    realm=\"secure-ldap\",\n    server1=\"ldap1.example.com\",\n    server2=\"ldap2.example.com\",\n    port=636,\n    base_dn=\"ou=users,dc=example,dc=com\",\n    bind_dn=\"cn=readonly,dc=example,dc=com\",\n    bind_password=ldap_password,\n    mode=\"ldaps\",\n    verify=True,\n    ca_path=\"/etc/pve/priv/ca.crt\")\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 secure = new ProxmoxVE.Realm.Ldap(\"secure\", new()\n    {\n        Realm = \"secure-ldap\",\n        Server1 = \"ldap1.example.com\",\n        Server2 = \"ldap2.example.com\",\n        Port = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(636) (example.pp:4,18-21)),\n        BaseDn = \"ou=users,dc=example,dc=com\",\n        BindDn = \"cn=readonly,dc=example,dc=com\",\n        BindPassword = ldapPassword,\n        Mode = \"ldaps\",\n        Verify = true,\n        CaPath = \"/etc/pve/priv/ca.crt\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/go/proxmoxve/realm\"\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 := realm.NewLdap(ctx, \"secure\", \u0026realm.LdapArgs{\n\t\t\tRealm:        pulumi.String(\"secure-ldap\"),\n\t\t\tServer1:      pulumi.String(\"ldap1.example.com\"),\n\t\t\tServer2:      pulumi.String(\"ldap2.example.com\"),\n\t\t\tPort:         pulumi.Int(636),\n\t\t\tBaseDn:       pulumi.String(\"ou=users,dc=example,dc=com\"),\n\t\t\tBindDn:       pulumi.String(\"cn=readonly,dc=example,dc=com\"),\n\t\t\tBindPassword: pulumi.Any(ldapPassword),\n\t\t\tMode:         pulumi.String(\"ldaps\"),\n\t\t\tVerify:       pulumi.Bool(true),\n\t\t\tCaPath:       pulumi.String(\"/etc/pve/priv/ca.crt\"),\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.realm.Ldap;\nimport io.muehlbachler.pulumi.proxmoxve.realm.LdapArgs;\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 secure = new Ldap(\"secure\", LdapArgs.builder()\n            .realm(\"secure-ldap\")\n            .server1(\"ldap1.example.com\")\n            .server2(\"ldap2.example.com\")\n            .port(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(636) (example.pp:4,18-21)))\n            .baseDn(\"ou=users,dc=example,dc=com\")\n            .bindDn(\"cn=readonly,dc=example,dc=com\")\n            .bindPassword(ldapPassword)\n            .mode(\"ldaps\")\n            .verify(true)\n            .caPath(\"/etc/pve/priv/ca.crt\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  secure:\n    type: proxmoxve:realm:Ldap\n    properties:\n      realm: secure-ldap\n      server1: ldap1.example.com\n      server2: ldap2.example.com\n      port: 636\n      baseDn: ou=users,dc=example,dc=com\n      bindDn: cn=readonly,dc=example,dc=com\n      bindPassword: ${ldapPassword}\n      mode: ldaps\n      verify: true\n      caPath: /etc/pve/priv/ca.crt\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n#### With Group Synchronization\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst withGroups = new proxmoxve.realm.Ldap(\"with_groups\", {\n    realm: \"corporate-ldap\",\n    server1: \"ldap.corp.example.com\",\n    baseDn: \"ou=users,dc=corp,dc=example,dc=com\",\n    bindDn: \"cn=svc_ldap,ou=services,dc=corp,dc=example,dc=com\",\n    bindPassword: ldapPassword,\n    mode: \"ldap+starttls\",\n    groupDn: \"ou=groups,dc=corp,dc=example,dc=com\",\n    groupFilter: \"(objectClass=groupOfNames)\",\n    groupNameAttr: \"cn\",\n    syncAttributes: \"email=mail,firstname=givenName,lastname=sn\",\n    syncDefaultsOptions: \"scope=both,enable-new=1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nwith_groups = proxmoxve.realm.Ldap(\"with_groups\",\n    realm=\"corporate-ldap\",\n    server1=\"ldap.corp.example.com\",\n    base_dn=\"ou=users,dc=corp,dc=example,dc=com\",\n    bind_dn=\"cn=svc_ldap,ou=services,dc=corp,dc=example,dc=com\",\n    bind_password=ldap_password,\n    mode=\"ldap+starttls\",\n    group_dn=\"ou=groups,dc=corp,dc=example,dc=com\",\n    group_filter=\"(objectClass=groupOfNames)\",\n    group_name_attr=\"cn\",\n    sync_attributes=\"email=mail,firstname=givenName,lastname=sn\",\n    sync_defaults_options=\"scope=both,enable-new=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 withGroups = new ProxmoxVE.Realm.Ldap(\"with_groups\", new()\n    {\n        Realm = \"corporate-ldap\",\n        Server1 = \"ldap.corp.example.com\",\n        BaseDn = \"ou=users,dc=corp,dc=example,dc=com\",\n        BindDn = \"cn=svc_ldap,ou=services,dc=corp,dc=example,dc=com\",\n        BindPassword = ldapPassword,\n        Mode = \"ldap+starttls\",\n        GroupDn = \"ou=groups,dc=corp,dc=example,dc=com\",\n        GroupFilter = \"(objectClass=groupOfNames)\",\n        GroupNameAttr = \"cn\",\n        SyncAttributes = \"email=mail,firstname=givenName,lastname=sn\",\n        SyncDefaultsOptions = \"scope=both,enable-new=1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/go/proxmoxve/realm\"\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 := realm.NewLdap(ctx, \"with_groups\", \u0026realm.LdapArgs{\n\t\t\tRealm:               pulumi.String(\"corporate-ldap\"),\n\t\t\tServer1:             pulumi.String(\"ldap.corp.example.com\"),\n\t\t\tBaseDn:              pulumi.String(\"ou=users,dc=corp,dc=example,dc=com\"),\n\t\t\tBindDn:              pulumi.String(\"cn=svc_ldap,ou=services,dc=corp,dc=example,dc=com\"),\n\t\t\tBindPassword:        pulumi.Any(ldapPassword),\n\t\t\tMode:                pulumi.String(\"ldap+starttls\"),\n\t\t\tGroupDn:             pulumi.String(\"ou=groups,dc=corp,dc=example,dc=com\"),\n\t\t\tGroupFilter:         pulumi.String(\"(objectClass=groupOfNames)\"),\n\t\t\tGroupNameAttr:       pulumi.String(\"cn\"),\n\t\t\tSyncAttributes:      pulumi.String(\"email=mail,firstname=givenName,lastname=sn\"),\n\t\t\tSyncDefaultsOptions: pulumi.String(\"scope=both,enable-new=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.realm.Ldap;\nimport io.muehlbachler.pulumi.proxmoxve.realm.LdapArgs;\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 withGroups = new Ldap(\"withGroups\", LdapArgs.builder()\n            .realm(\"corporate-ldap\")\n            .server1(\"ldap.corp.example.com\")\n            .baseDn(\"ou=users,dc=corp,dc=example,dc=com\")\n            .bindDn(\"cn=svc_ldap,ou=services,dc=corp,dc=example,dc=com\")\n            .bindPassword(ldapPassword)\n            .mode(\"ldap+starttls\")\n            .groupDn(\"ou=groups,dc=corp,dc=example,dc=com\")\n            .groupFilter(\"(objectClass=groupOfNames)\")\n            .groupNameAttr(\"cn\")\n            .syncAttributes(\"email=mail,firstname=givenName,lastname=sn\")\n            .syncDefaultsOptions(\"scope=both,enable-new=1\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  withGroups:\n    type: proxmoxve:realm:Ldap\n    name: with_groups\n    properties:\n      realm: corporate-ldap\n      server1: ldap.corp.example.com\n      baseDn: ou=users,dc=corp,dc=example,dc=com\n      bindDn: cn=svc_ldap,ou=services,dc=corp,dc=example,dc=com\n      bindPassword: ${ldapPassword}\n      mode: ldap+starttls\n      groupDn: ou=groups,dc=corp,dc=example,dc=com\n      groupFilter: (objectClass=groupOfNames)\n      groupNameAttr: cn\n      syncAttributes: email=mail,firstname=givenName,lastname=sn\n      syncDefaultsOptions: scope=both,enable-new=1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## See Also\n\n- [Proxmox VE User Management](https://pve.proxmox.com/wiki/User_Management)\n- [Proxmox VE LDAP Authentication](https://pve.proxmox.com/wiki/User_Management#pveum_ldap)\n- [Proxmox API: /access/domains](https://pve.proxmox.com/pve-docs/api-viewer/index.html#/access/domains)\n\n## Import\n\n!/usr/bin/env sh\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 \u003cspan pulumi-lang-nodejs=\"`bindPassword`\" pulumi-lang-dotnet=\"`BindPassword`\" pulumi-lang-go=\"`bindPassword`\" pulumi-lang-python=\"`bind_password`\" pulumi-lang-yaml=\"`bindPassword`\" pulumi-lang-java=\"`bindPassword`\"\u003e`bindPassword`\u003c/span\u003e 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/ldapLegacy:LdapLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.realm.Ldap`\" pulumi-lang-dotnet=\"`proxmoxve.realm.Ldap`\" pulumi-lang-go=\"`realm.Ldap`\" pulumi-lang-python=\"`realm.Ldap`\" pulumi-lang-yaml=\"`proxmoxve.realm.Ldap`\" pulumi-lang-java=\"`proxmoxve.realm.Ldap`\"\u003e`proxmoxve.realm.Ldap`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages an LDAP authentication realm in Proxmox VE.\n\nLDAP realms allow Proxmox to authenticate users against an LDAP directory service.\n\n## Privileges Required\n\n| Path | Attribute |\n|-----------------|----------------|\n| /access/domains | Realm.Allocate |\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.realm.LdapLegacy(\"example\", {\n    realm: \"example-ldap\",\n    server1: \"ldap.example.com\",\n    port: 389,\n    baseDn: \"ou=people,dc=example,dc=com\",\n    userAttr: \"uid\",\n    bindDn: \"cn=admin,dc=example,dc=com\",\n    bindPassword: ldapBindPassword,\n    mode: \"ldap+starttls\",\n    verify: true,\n    groupDn: \"ou=groups,dc=example,dc=com\",\n    groupFilter: \"(objectClass=groupOfNames)\",\n    comment: \"Example LDAP realm managed by Terraform\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.realm.LdapLegacy(\"example\",\n    realm=\"example-ldap\",\n    server1=\"ldap.example.com\",\n    port=389,\n    base_dn=\"ou=people,dc=example,dc=com\",\n    user_attr=\"uid\",\n    bind_dn=\"cn=admin,dc=example,dc=com\",\n    bind_password=ldap_bind_password,\n    mode=\"ldap+starttls\",\n    verify=True,\n    group_dn=\"ou=groups,dc=example,dc=com\",\n    group_filter=\"(objectClass=groupOfNames)\",\n    comment=\"Example LDAP realm managed by Terraform\")\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.Realm.LdapLegacy(\"example\", new()\n    {\n        Realm = \"example-ldap\",\n        Server1 = \"ldap.example.com\",\n        Port = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(389) (example.pp:3,13-16)),\n        BaseDn = \"ou=people,dc=example,dc=com\",\n        UserAttr = \"uid\",\n        BindDn = \"cn=admin,dc=example,dc=com\",\n        BindPassword = ldapBindPassword,\n        Mode = \"ldap+starttls\",\n        Verify = true,\n        GroupDn = \"ou=groups,dc=example,dc=com\",\n        GroupFilter = \"(objectClass=groupOfNames)\",\n        Comment = \"Example LDAP realm managed by Terraform\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/go/proxmoxve/realm\"\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 := realm.NewLdapLegacy(ctx, \"example\", \u0026realm.LdapLegacyArgs{\n\t\t\tRealm:        pulumi.String(\"example-ldap\"),\n\t\t\tServer1:      pulumi.String(\"ldap.example.com\"),\n\t\t\tPort:         pulumi.Int(389),\n\t\t\tBaseDn:       pulumi.String(\"ou=people,dc=example,dc=com\"),\n\t\t\tUserAttr:     pulumi.String(\"uid\"),\n\t\t\tBindDn:       pulumi.String(\"cn=admin,dc=example,dc=com\"),\n\t\t\tBindPassword: pulumi.Any(ldapBindPassword),\n\t\t\tMode:         pulumi.String(\"ldap+starttls\"),\n\t\t\tVerify:       pulumi.Bool(true),\n\t\t\tGroupDn:      pulumi.String(\"ou=groups,dc=example,dc=com\"),\n\t\t\tGroupFilter:  pulumi.String(\"(objectClass=groupOfNames)\"),\n\t\t\tComment:      pulumi.String(\"Example LDAP realm managed by Terraform\"),\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.realm.LdapLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.realm.LdapLegacyArgs;\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 LdapLegacy(\"example\", LdapLegacyArgs.builder()\n            .realm(\"example-ldap\")\n            .server1(\"ldap.example.com\")\n            .port(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(389) (example.pp:3,13-16)))\n            .baseDn(\"ou=people,dc=example,dc=com\")\n            .userAttr(\"uid\")\n            .bindDn(\"cn=admin,dc=example,dc=com\")\n            .bindPassword(ldapBindPassword)\n            .mode(\"ldap+starttls\")\n            .verify(true)\n            .groupDn(\"ou=groups,dc=example,dc=com\")\n            .groupFilter(\"(objectClass=groupOfNames)\")\n            .comment(\"Example LDAP realm managed by Terraform\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:realm:LdapLegacy\n    properties:\n      realm: example-ldap\n      server1: ldap.example.com\n      port: 389 # Base DN and user attribute\n      baseDn: ou=people,dc=example,dc=com\n      userAttr: uid\n      bindDn: cn=admin,dc=example,dc=com\n      bindPassword: ${ldapBindPassword}\n      mode: ldap+starttls\n      verify: true # Group synchronization (optional)\n      groupDn: ou=groups,dc=example,dc=com\n      groupFilter: (objectClass=groupOfNames)\n      comment: Example LDAP realm managed by Terraform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Notes\n\n### Password Security\n\nThe \u003cspan pulumi-lang-nodejs=\"`bindPassword`\" pulumi-lang-dotnet=\"`BindPassword`\" pulumi-lang-go=\"`bindPassword`\" pulumi-lang-python=\"`bind_password`\" pulumi-lang-yaml=\"`bindPassword`\" pulumi-lang-java=\"`bindPassword`\"\u003e`bindPassword`\u003c/span\u003e is sent to Proxmox and stored securely, but it's never returned by the API. This means:\n- Terraform cannot detect if the password was changed outside of Terraform\n- You must maintain the password in your Terraform configuration or use a variable\n- The password will be marked as sensitive in Terraform state\n\n### LDAP vs LDAPS\n\n- **LDAP (port 389)**: Unencrypted connection. Not recommended for production.\n- **LDAPS (port 636)**: Encrypted connection using SSL/TLS. Recommended for production.\n- **LDAP+StartTLS**: Upgrades plain LDAP connection to TLS. Alternative to LDAPS.\n\n### User Synchronization\n\nTo trigger synchronization, use the \u003cspan pulumi-lang-nodejs=\"`proxmoxve.realm.SyncLegacy`\" pulumi-lang-dotnet=\"`proxmoxve.realm.SyncLegacy`\" pulumi-lang-go=\"`realm.SyncLegacy`\" pulumi-lang-python=\"`realm.SyncLegacy`\" pulumi-lang-yaml=\"`proxmoxve.realm.SyncLegacy`\" pulumi-lang-java=\"`proxmoxve.realm.SyncLegacy`\"\u003e`proxmoxve.realm.SyncLegacy`\u003c/span\u003e resource.\n\n### Common Configuration Scenarios\n\n#### Anonymous Binding\nFor testing or public LDAP servers, omit \u003cspan pulumi-lang-nodejs=\"`bindDn`\" pulumi-lang-dotnet=\"`BindDn`\" pulumi-lang-go=\"`bindDn`\" pulumi-lang-python=\"`bind_dn`\" pulumi-lang-yaml=\"`bindDn`\" pulumi-lang-java=\"`bindDn`\"\u003e`bindDn`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`bindPassword`\" pulumi-lang-dotnet=\"`BindPassword`\" pulumi-lang-go=\"`bindPassword`\" pulumi-lang-python=\"`bind_password`\" pulumi-lang-yaml=\"`bindPassword`\" pulumi-lang-java=\"`bindPassword`\"\u003e`bindPassword`\u003c/span\u003e to use anonymous binding:\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst anonymous = new proxmoxve.realm.LdapLegacy(\"anonymous\", {\n    realm: \"public-ldap\",\n    server1: \"ldap.example.com\",\n    baseDn: \"ou=users,dc=example,dc=com\",\n    userAttr: \"uid\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nanonymous = proxmoxve.realm.LdapLegacy(\"anonymous\",\n    realm=\"public-ldap\",\n    server1=\"ldap.example.com\",\n    base_dn=\"ou=users,dc=example,dc=com\",\n    user_attr=\"uid\")\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 anonymous = new ProxmoxVE.Realm.LdapLegacy(\"anonymous\", new()\n    {\n        Realm = \"public-ldap\",\n        Server1 = \"ldap.example.com\",\n        BaseDn = \"ou=users,dc=example,dc=com\",\n        UserAttr = \"uid\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/go/proxmoxve/realm\"\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 := realm.NewLdapLegacy(ctx, \"anonymous\", \u0026realm.LdapLegacyArgs{\n\t\t\tRealm:    pulumi.String(\"public-ldap\"),\n\t\t\tServer1:  pulumi.String(\"ldap.example.com\"),\n\t\t\tBaseDn:   pulumi.String(\"ou=users,dc=example,dc=com\"),\n\t\t\tUserAttr: pulumi.String(\"uid\"),\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.realm.LdapLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.realm.LdapLegacyArgs;\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 anonymous = new LdapLegacy(\"anonymous\", LdapLegacyArgs.builder()\n            .realm(\"public-ldap\")\n            .server1(\"ldap.example.com\")\n            .baseDn(\"ou=users,dc=example,dc=com\")\n            .userAttr(\"uid\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  anonymous:\n    type: proxmoxve:realm:LdapLegacy\n    properties:\n      realm: public-ldap\n      server1: ldap.example.com\n      baseDn: ou=users,dc=example,dc=com\n      userAttr: uid\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n#### Secure LDAPS with Failover\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst secure = new proxmoxve.realm.LdapLegacy(\"secure\", {\n    realm: \"secure-ldap\",\n    server1: \"ldap1.example.com\",\n    server2: \"ldap2.example.com\",\n    port: 636,\n    baseDn: \"ou=users,dc=example,dc=com\",\n    bindDn: \"cn=readonly,dc=example,dc=com\",\n    bindPassword: ldapPassword,\n    mode: \"ldaps\",\n    verify: true,\n    caPath: \"/etc/pve/priv/ca.crt\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nsecure = proxmoxve.realm.LdapLegacy(\"secure\",\n    realm=\"secure-ldap\",\n    server1=\"ldap1.example.com\",\n    server2=\"ldap2.example.com\",\n    port=636,\n    base_dn=\"ou=users,dc=example,dc=com\",\n    bind_dn=\"cn=readonly,dc=example,dc=com\",\n    bind_password=ldap_password,\n    mode=\"ldaps\",\n    verify=True,\n    ca_path=\"/etc/pve/priv/ca.crt\")\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 secure = new ProxmoxVE.Realm.LdapLegacy(\"secure\", new()\n    {\n        Realm = \"secure-ldap\",\n        Server1 = \"ldap1.example.com\",\n        Server2 = \"ldap2.example.com\",\n        Port = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(636) (example.pp:4,18-21)),\n        BaseDn = \"ou=users,dc=example,dc=com\",\n        BindDn = \"cn=readonly,dc=example,dc=com\",\n        BindPassword = ldapPassword,\n        Mode = \"ldaps\",\n        Verify = true,\n        CaPath = \"/etc/pve/priv/ca.crt\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/go/proxmoxve/realm\"\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 := realm.NewLdapLegacy(ctx, \"secure\", \u0026realm.LdapLegacyArgs{\n\t\t\tRealm:        pulumi.String(\"secure-ldap\"),\n\t\t\tServer1:      pulumi.String(\"ldap1.example.com\"),\n\t\t\tServer2:      pulumi.String(\"ldap2.example.com\"),\n\t\t\tPort:         pulumi.Int(636),\n\t\t\tBaseDn:       pulumi.String(\"ou=users,dc=example,dc=com\"),\n\t\t\tBindDn:       pulumi.String(\"cn=readonly,dc=example,dc=com\"),\n\t\t\tBindPassword: pulumi.Any(ldapPassword),\n\t\t\tMode:         pulumi.String(\"ldaps\"),\n\t\t\tVerify:       pulumi.Bool(true),\n\t\t\tCaPath:       pulumi.String(\"/etc/pve/priv/ca.crt\"),\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.realm.LdapLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.realm.LdapLegacyArgs;\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 secure = new LdapLegacy(\"secure\", LdapLegacyArgs.builder()\n            .realm(\"secure-ldap\")\n            .server1(\"ldap1.example.com\")\n            .server2(\"ldap2.example.com\")\n            .port(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(636) (example.pp:4,18-21)))\n            .baseDn(\"ou=users,dc=example,dc=com\")\n            .bindDn(\"cn=readonly,dc=example,dc=com\")\n            .bindPassword(ldapPassword)\n            .mode(\"ldaps\")\n            .verify(true)\n            .caPath(\"/etc/pve/priv/ca.crt\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  secure:\n    type: proxmoxve:realm:LdapLegacy\n    properties:\n      realm: secure-ldap\n      server1: ldap1.example.com\n      server2: ldap2.example.com\n      port: 636\n      baseDn: ou=users,dc=example,dc=com\n      bindDn: cn=readonly,dc=example,dc=com\n      bindPassword: ${ldapPassword}\n      mode: ldaps\n      verify: true\n      caPath: /etc/pve/priv/ca.crt\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n#### With Group Synchronization\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst withGroups = new proxmoxve.realm.LdapLegacy(\"with_groups\", {\n    realm: \"corporate-ldap\",\n    server1: \"ldap.corp.example.com\",\n    baseDn: \"ou=users,dc=corp,dc=example,dc=com\",\n    bindDn: \"cn=svc_ldap,ou=services,dc=corp,dc=example,dc=com\",\n    bindPassword: ldapPassword,\n    mode: \"ldap+starttls\",\n    groupDn: \"ou=groups,dc=corp,dc=example,dc=com\",\n    groupFilter: \"(objectClass=groupOfNames)\",\n    groupNameAttr: \"cn\",\n    syncAttributes: \"email=mail,firstname=givenName,lastname=sn\",\n    syncDefaultsOptions: \"scope=both,enable-new=1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nwith_groups = proxmoxve.realm.LdapLegacy(\"with_groups\",\n    realm=\"corporate-ldap\",\n    server1=\"ldap.corp.example.com\",\n    base_dn=\"ou=users,dc=corp,dc=example,dc=com\",\n    bind_dn=\"cn=svc_ldap,ou=services,dc=corp,dc=example,dc=com\",\n    bind_password=ldap_password,\n    mode=\"ldap+starttls\",\n    group_dn=\"ou=groups,dc=corp,dc=example,dc=com\",\n    group_filter=\"(objectClass=groupOfNames)\",\n    group_name_attr=\"cn\",\n    sync_attributes=\"email=mail,firstname=givenName,lastname=sn\",\n    sync_defaults_options=\"scope=both,enable-new=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 withGroups = new ProxmoxVE.Realm.LdapLegacy(\"with_groups\", new()\n    {\n        Realm = \"corporate-ldap\",\n        Server1 = \"ldap.corp.example.com\",\n        BaseDn = \"ou=users,dc=corp,dc=example,dc=com\",\n        BindDn = \"cn=svc_ldap,ou=services,dc=corp,dc=example,dc=com\",\n        BindPassword = ldapPassword,\n        Mode = \"ldap+starttls\",\n        GroupDn = \"ou=groups,dc=corp,dc=example,dc=com\",\n        GroupFilter = \"(objectClass=groupOfNames)\",\n        GroupNameAttr = \"cn\",\n        SyncAttributes = \"email=mail,firstname=givenName,lastname=sn\",\n        SyncDefaultsOptions = \"scope=both,enable-new=1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/go/proxmoxve/realm\"\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 := realm.NewLdapLegacy(ctx, \"with_groups\", \u0026realm.LdapLegacyArgs{\n\t\t\tRealm:               pulumi.String(\"corporate-ldap\"),\n\t\t\tServer1:             pulumi.String(\"ldap.corp.example.com\"),\n\t\t\tBaseDn:              pulumi.String(\"ou=users,dc=corp,dc=example,dc=com\"),\n\t\t\tBindDn:              pulumi.String(\"cn=svc_ldap,ou=services,dc=corp,dc=example,dc=com\"),\n\t\t\tBindPassword:        pulumi.Any(ldapPassword),\n\t\t\tMode:                pulumi.String(\"ldap+starttls\"),\n\t\t\tGroupDn:             pulumi.String(\"ou=groups,dc=corp,dc=example,dc=com\"),\n\t\t\tGroupFilter:         pulumi.String(\"(objectClass=groupOfNames)\"),\n\t\t\tGroupNameAttr:       pulumi.String(\"cn\"),\n\t\t\tSyncAttributes:      pulumi.String(\"email=mail,firstname=givenName,lastname=sn\"),\n\t\t\tSyncDefaultsOptions: pulumi.String(\"scope=both,enable-new=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.realm.LdapLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.realm.LdapLegacyArgs;\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 withGroups = new LdapLegacy(\"withGroups\", LdapLegacyArgs.builder()\n            .realm(\"corporate-ldap\")\n            .server1(\"ldap.corp.example.com\")\n            .baseDn(\"ou=users,dc=corp,dc=example,dc=com\")\n            .bindDn(\"cn=svc_ldap,ou=services,dc=corp,dc=example,dc=com\")\n            .bindPassword(ldapPassword)\n            .mode(\"ldap+starttls\")\n            .groupDn(\"ou=groups,dc=corp,dc=example,dc=com\")\n            .groupFilter(\"(objectClass=groupOfNames)\")\n            .groupNameAttr(\"cn\")\n            .syncAttributes(\"email=mail,firstname=givenName,lastname=sn\")\n            .syncDefaultsOptions(\"scope=both,enable-new=1\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  withGroups:\n    type: proxmoxve:realm:LdapLegacy\n    name: with_groups\n    properties:\n      realm: corporate-ldap\n      server1: ldap.corp.example.com\n      baseDn: ou=users,dc=corp,dc=example,dc=com\n      bindDn: cn=svc_ldap,ou=services,dc=corp,dc=example,dc=com\n      bindPassword: ${ldapPassword}\n      mode: ldap+starttls\n      groupDn: ou=groups,dc=corp,dc=example,dc=com\n      groupFilter: (objectClass=groupOfNames)\n      groupNameAttr: cn\n      syncAttributes: email=mail,firstname=givenName,lastname=sn\n      syncDefaultsOptions: scope=both,enable-new=1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## See Also\n\n- [Proxmox VE User Management](https://pve.proxmox.com/wiki/User_Management)\n- [Proxmox VE LDAP Authentication](https://pve.proxmox.com/wiki/User_Management#pveum_ldap)\n- [Proxmox API: /access/domains](https://pve.proxmox.com/pve-docs/api-viewer/index.html#/access/domains)\n\n## Import\n\n!/usr/bin/env sh\nLDAP realms can be imported using the realm identifier, e.g.:\n\n```sh\n$ pulumi import proxmoxve:realm/ldapLegacy:LdapLegacy example example.com\n```\n\n\u003e When importing, the \u003cspan pulumi-lang-nodejs=\"`bindPassword`\" pulumi-lang-dotnet=\"`BindPassword`\" pulumi-lang-go=\"`bindPassword`\" pulumi-lang-python=\"`bind_password`\" pulumi-lang-yaml=\"`bindPassword`\" pulumi-lang-java=\"`bindPassword`\"\u003e`bindPassword`\u003c/span\u003e 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 LdapLegacy 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/openid:Openid": {
            "description": "Manages an OpenID Connect authentication realm in Proxmox VE.\n\nOpenID Connect realms allow Proxmox to authenticate users against an external OpenID Connect provider.\n\n## Privileges Required\n\n| Path            | Attribute      |\n|-----------------|----------------|\n| /access/domains | Realm.Allocate |\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.realm.Openid(\"example\", {\n    realm: \"example-oidc\",\n    issuerUrl: \"https://auth.example.com\",\n    clientId: \"your-client-id\",\n    clientKey: oidcClientSecret,\n    usernameClaim: \"email\",\n    autocreate: true,\n    groupsClaim: \"groups\",\n    groupsAutocreate: true,\n    groupsOverwrite: false,\n    scopes: \"openid email profile\",\n    queryUserinfo: true,\n    comment: \"Example OpenID Connect realm managed by Terraform\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.realm.Openid(\"example\",\n    realm=\"example-oidc\",\n    issuer_url=\"https://auth.example.com\",\n    client_id=\"your-client-id\",\n    client_key=oidc_client_secret,\n    username_claim=\"email\",\n    autocreate=True,\n    groups_claim=\"groups\",\n    groups_autocreate=True,\n    groups_overwrite=False,\n    scopes=\"openid email profile\",\n    query_userinfo=True,\n    comment=\"Example OpenID Connect realm managed by Terraform\")\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.Realm.Openid(\"example\", new()\n    {\n        Realm = \"example-oidc\",\n        IssuerUrl = \"https://auth.example.com\",\n        ClientId = \"your-client-id\",\n        ClientKey = oidcClientSecret,\n        UsernameClaim = \"email\",\n        Autocreate = true,\n        GroupsClaim = \"groups\",\n        GroupsAutocreate = true,\n        GroupsOverwrite = false,\n        Scopes = \"openid email profile\",\n        QueryUserinfo = true,\n        Comment = \"Example OpenID Connect realm managed by Terraform\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/go/proxmoxve/realm\"\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 := realm.NewOpenid(ctx, \"example\", \u0026realm.OpenidArgs{\n\t\t\tRealm:            pulumi.String(\"example-oidc\"),\n\t\t\tIssuerUrl:        pulumi.String(\"https://auth.example.com\"),\n\t\t\tClientId:         pulumi.String(\"your-client-id\"),\n\t\t\tClientKey:        pulumi.Any(oidcClientSecret),\n\t\t\tUsernameClaim:    pulumi.String(\"email\"),\n\t\t\tAutocreate:       pulumi.Bool(true),\n\t\t\tGroupsClaim:      pulumi.String(\"groups\"),\n\t\t\tGroupsAutocreate: pulumi.Bool(true),\n\t\t\tGroupsOverwrite:  pulumi.Bool(false),\n\t\t\tScopes:           pulumi.String(\"openid email profile\"),\n\t\t\tQueryUserinfo:    pulumi.Bool(true),\n\t\t\tComment:          pulumi.String(\"Example OpenID Connect realm managed by Terraform\"),\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.realm.Openid;\nimport io.muehlbachler.pulumi.proxmoxve.realm.OpenidArgs;\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 Openid(\"example\", OpenidArgs.builder()\n            .realm(\"example-oidc\")\n            .issuerUrl(\"https://auth.example.com\")\n            .clientId(\"your-client-id\")\n            .clientKey(oidcClientSecret)\n            .usernameClaim(\"email\")\n            .autocreate(true)\n            .groupsClaim(\"groups\")\n            .groupsAutocreate(true)\n            .groupsOverwrite(false)\n            .scopes(\"openid email profile\")\n            .queryUserinfo(true)\n            .comment(\"Example OpenID Connect realm managed by Terraform\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:realm:Openid\n    properties:\n      realm: example-oidc\n      issuerUrl: https://auth.example.com\n      clientId: your-client-id\n      clientKey: ${oidcClientSecret}\n      usernameClaim: email\n      autocreate: true # Group mapping (optional)\n      groupsClaim: groups\n      groupsAutocreate: true\n      groupsOverwrite: false # Scopes and prompt\n      scopes: openid email profile\n      queryUserinfo: true\n      comment: Example OpenID Connect realm managed by Terraform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Notes\n\n### Client Key Security\n\nThe \u003cspan pulumi-lang-nodejs=\"`clientKey`\" pulumi-lang-dotnet=\"`ClientKey`\" pulumi-lang-go=\"`clientKey`\" pulumi-lang-python=\"`client_key`\" pulumi-lang-yaml=\"`clientKey`\" pulumi-lang-java=\"`clientKey`\"\u003e`clientKey`\u003c/span\u003e is sent to Proxmox and stored securely, but it's never returned by the API. This means:\n\n- Terraform cannot detect if the client key was changed outside of Terraform\n- You must maintain the client key in your Terraform configuration or use a variable\n- The client key will be marked as sensitive in Terraform state\n\n### Username Claim\n\nThe \u003cspan pulumi-lang-nodejs=\"`usernameClaim`\" pulumi-lang-dotnet=\"`UsernameClaim`\" pulumi-lang-go=\"`usernameClaim`\" pulumi-lang-python=\"`username_claim`\" pulumi-lang-yaml=\"`usernameClaim`\" pulumi-lang-java=\"`usernameClaim`\"\u003e`usernameClaim`\u003c/span\u003e attribute is **fixed after creation** — it cannot be changed once the realm is created. Changing it requires destroying and recreating the realm. Common values:\n\n- \u003cspan pulumi-lang-nodejs=\"`subject`\" pulumi-lang-dotnet=\"`Subject`\" pulumi-lang-go=\"`subject`\" pulumi-lang-python=\"`subject`\" pulumi-lang-yaml=\"`subject`\" pulumi-lang-java=\"`subject`\"\u003e`subject`\u003c/span\u003e (default) — Uses the OpenID \u003cspan pulumi-lang-nodejs=\"`sub`\" pulumi-lang-dotnet=\"`Sub`\" pulumi-lang-go=\"`sub`\" pulumi-lang-python=\"`sub`\" pulumi-lang-yaml=\"`sub`\" pulumi-lang-java=\"`sub`\"\u003e`sub`\u003c/span\u003e claim\n- \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 — Uses the \u003cspan pulumi-lang-nodejs=\"`preferredUsername`\" pulumi-lang-dotnet=\"`PreferredUsername`\" pulumi-lang-go=\"`preferredUsername`\" pulumi-lang-python=\"`preferred_username`\" pulumi-lang-yaml=\"`preferredUsername`\" pulumi-lang-java=\"`preferredUsername`\"\u003e`preferredUsername`\u003c/span\u003e claim\n- \u003cspan pulumi-lang-nodejs=\"`email`\" pulumi-lang-dotnet=\"`Email`\" pulumi-lang-go=\"`email`\" pulumi-lang-python=\"`email`\" pulumi-lang-yaml=\"`email`\" pulumi-lang-java=\"`email`\"\u003e`email`\u003c/span\u003e — Uses the \u003cspan pulumi-lang-nodejs=\"`email`\" pulumi-lang-dotnet=\"`Email`\" pulumi-lang-go=\"`email`\" pulumi-lang-python=\"`email`\" pulumi-lang-yaml=\"`email`\" pulumi-lang-java=\"`email`\"\u003e`email`\u003c/span\u003e claim\n- \u003cspan pulumi-lang-nodejs=\"`upn`\" pulumi-lang-dotnet=\"`Upn`\" pulumi-lang-go=\"`upn`\" pulumi-lang-python=\"`upn`\" pulumi-lang-yaml=\"`upn`\" pulumi-lang-java=\"`upn`\"\u003e`upn`\u003c/span\u003e — Uses the User Principal Name claim (common with ADFS/Azure AD)\n\nAny valid OpenID claim name can be used. Ensure the chosen claim provides unique, stable identifiers for your users.\n\n### Common Configuration Scenarios\n\n#### Minimal Configuration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst minimal = new proxmoxve.realm.Openid(\"minimal\", {\n    realm: \"my-oidc\",\n    issuerUrl: \"https://auth.example.com\",\n    clientId: oidcClientId,\n    clientKey: oidcClientSecret,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nminimal = proxmoxve.realm.Openid(\"minimal\",\n    realm=\"my-oidc\",\n    issuer_url=\"https://auth.example.com\",\n    client_id=oidc_client_id,\n    client_key=oidc_client_secret)\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 minimal = new ProxmoxVE.Realm.Openid(\"minimal\", new()\n    {\n        Realm = \"my-oidc\",\n        IssuerUrl = \"https://auth.example.com\",\n        ClientId = oidcClientId,\n        ClientKey = oidcClientSecret,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/go/proxmoxve/realm\"\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 := realm.NewOpenid(ctx, \"minimal\", \u0026realm.OpenidArgs{\n\t\t\tRealm:     pulumi.String(\"my-oidc\"),\n\t\t\tIssuerUrl: pulumi.String(\"https://auth.example.com\"),\n\t\t\tClientId:  pulumi.Any(oidcClientId),\n\t\t\tClientKey: pulumi.Any(oidcClientSecret),\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.realm.Openid;\nimport io.muehlbachler.pulumi.proxmoxve.realm.OpenidArgs;\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 minimal = new Openid(\"minimal\", OpenidArgs.builder()\n            .realm(\"my-oidc\")\n            .issuerUrl(\"https://auth.example.com\")\n            .clientId(oidcClientId)\n            .clientKey(oidcClientSecret)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  minimal:\n    type: proxmoxve:realm:Openid\n    properties:\n      realm: my-oidc\n      issuerUrl: https://auth.example.com\n      clientId: ${oidcClientId}\n      clientKey: ${oidcClientSecret}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n#### With User and Group Provisioning\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst full = new proxmoxve.realm.Openid(\"full\", {\n    realm: \"corporate-oidc\",\n    issuerUrl: \"https://auth.example.com/realms/my-realm\",\n    clientId: oidcClientId,\n    clientKey: oidcClientSecret,\n    usernameClaim: \"email\",\n    autocreate: true,\n    groupsClaim: \"groups\",\n    groupsAutocreate: true,\n    scopes: \"openid email profile\",\n    queryUserinfo: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfull = proxmoxve.realm.Openid(\"full\",\n    realm=\"corporate-oidc\",\n    issuer_url=\"https://auth.example.com/realms/my-realm\",\n    client_id=oidc_client_id,\n    client_key=oidc_client_secret,\n    username_claim=\"email\",\n    autocreate=True,\n    groups_claim=\"groups\",\n    groups_autocreate=True,\n    scopes=\"openid email profile\",\n    query_userinfo=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 full = new ProxmoxVE.Realm.Openid(\"full\", new()\n    {\n        Realm = \"corporate-oidc\",\n        IssuerUrl = \"https://auth.example.com/realms/my-realm\",\n        ClientId = oidcClientId,\n        ClientKey = oidcClientSecret,\n        UsernameClaim = \"email\",\n        Autocreate = true,\n        GroupsClaim = \"groups\",\n        GroupsAutocreate = true,\n        Scopes = \"openid email profile\",\n        QueryUserinfo = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/go/proxmoxve/realm\"\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 := realm.NewOpenid(ctx, \"full\", \u0026realm.OpenidArgs{\n\t\t\tRealm:            pulumi.String(\"corporate-oidc\"),\n\t\t\tIssuerUrl:        pulumi.String(\"https://auth.example.com/realms/my-realm\"),\n\t\t\tClientId:         pulumi.Any(oidcClientId),\n\t\t\tClientKey:        pulumi.Any(oidcClientSecret),\n\t\t\tUsernameClaim:    pulumi.String(\"email\"),\n\t\t\tAutocreate:       pulumi.Bool(true),\n\t\t\tGroupsClaim:      pulumi.String(\"groups\"),\n\t\t\tGroupsAutocreate: pulumi.Bool(true),\n\t\t\tScopes:           pulumi.String(\"openid email profile\"),\n\t\t\tQueryUserinfo:    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.realm.Openid;\nimport io.muehlbachler.pulumi.proxmoxve.realm.OpenidArgs;\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 full = new Openid(\"full\", OpenidArgs.builder()\n            .realm(\"corporate-oidc\")\n            .issuerUrl(\"https://auth.example.com/realms/my-realm\")\n            .clientId(oidcClientId)\n            .clientKey(oidcClientSecret)\n            .usernameClaim(\"email\")\n            .autocreate(true)\n            .groupsClaim(\"groups\")\n            .groupsAutocreate(true)\n            .scopes(\"openid email profile\")\n            .queryUserinfo(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  full:\n    type: proxmoxve:realm:Openid\n    properties:\n      realm: corporate-oidc\n      issuerUrl: https://auth.example.com/realms/my-realm\n      clientId: ${oidcClientId}\n      clientKey: ${oidcClientSecret}\n      usernameClaim: email\n      autocreate: true # Group synchronization\n      groupsClaim: groups\n      groupsAutocreate: true\n      scopes: openid email profile\n      queryUserinfo: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## See Also\n\n- [Proxmox VE User Management](https://pve.proxmox.com/wiki/User_Management)\n- [Proxmox VE OpenID Connect Authentication](https://pve.proxmox.com/wiki/User_Management#pveum_openid)\n- [Proxmox API: /access/domains](https://pve.proxmox.com/pve-docs/api-viewer/index.html#/access/domains)\n\n## Import\n\n!/usr/bin/env sh\nOpenID realms can be imported using the realm identifier, e.g.:\n\n```sh\n$ pulumi import proxmoxve:realm/openid:Openid example example-oidc\n```\n\n\u003e When importing, the \u003cspan pulumi-lang-nodejs=\"`clientKey`\" pulumi-lang-dotnet=\"`ClientKey`\" pulumi-lang-go=\"`clientKey`\" pulumi-lang-python=\"`client_key`\" pulumi-lang-yaml=\"`clientKey`\" pulumi-lang-java=\"`clientKey`\"\u003e`clientKey`\u003c/span\u003e 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": {
                "acrValues": {
                    "type": "string",
                    "description": "Authentication Context Class Reference values for the OpenID provider.\n"
                },
                "autocreate": {
                    "type": "boolean",
                    "description": "Automatically create users on the Proxmox cluster if they do not exist.\n"
                },
                "clientId": {
                    "type": "string",
                    "description": "OpenID Connect Client ID.\n"
                },
                "clientKey": {
                    "type": "string",
                    "description": "OpenID Connect Client Key (secret). Note: stored in Proxmox but not returned by API.\n",
                    "secret": true
                },
                "comment": {
                    "type": "string",
                    "description": "Description of the realm.\n"
                },
                "default": {
                    "type": "boolean",
                    "description": "Use this realm as the default for login.\n"
                },
                "groupsAutocreate": {
                    "type": "boolean",
                    "description": "Automatically create groups from claims rather than using existing Proxmox VE groups.\n"
                },
                "groupsClaim": {
                    "type": "string",
                    "description": "OpenID claim used to retrieve user group memberships.\n"
                },
                "groupsOverwrite": {
                    "type": "boolean",
                    "description": "Replace assigned groups on login instead of appending to existing ones.\n"
                },
                "issuerUrl": {
                    "type": "string",
                    "description": "OpenID Connect issuer URL. Proxmox uses OpenID Connect Discovery to configure the provider.\n"
                },
                "prompt": {
                    "type": "string",
                    "description": "Specifies whether the authorization server prompts for reauthentication and/or consent (e.g., 'none', 'login', 'consent', 'select_account').\n"
                },
                "queryUserinfo": {
                    "type": "boolean",
                    "description": "Query the OpenID userinfo endpoint for claims. Required when the identity provider does not include claims in the ID token.\n"
                },
                "realm": {
                    "type": "string",
                    "description": "Realm identifier (e.g., 'my-oidc').\n"
                },
                "scopes": {
                    "type": "string",
                    "description": "Space-separated list of OpenID scopes to request.\n"
                },
                "usernameClaim": {
                    "type": "string",
                    "description": "OpenID claim used to generate the unique username. Common values are \u003cspan pulumi-lang-nodejs=\"`subject`\" pulumi-lang-dotnet=\"`Subject`\" pulumi-lang-go=\"`subject`\" pulumi-lang-python=\"`subject`\" pulumi-lang-yaml=\"`subject`\" pulumi-lang-java=\"`subject`\"\u003e`subject`\u003c/span\u003e, \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, \u003cspan pulumi-lang-nodejs=\"`email`\" pulumi-lang-dotnet=\"`Email`\" pulumi-lang-go=\"`email`\" pulumi-lang-python=\"`email`\" pulumi-lang-yaml=\"`email`\" pulumi-lang-java=\"`email`\"\u003e`email`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`upn`\" pulumi-lang-dotnet=\"`Upn`\" pulumi-lang-go=\"`upn`\" pulumi-lang-python=\"`upn`\" pulumi-lang-yaml=\"`upn`\" pulumi-lang-java=\"`upn`\"\u003e`upn`\u003c/span\u003e.\n"
                }
            },
            "required": [
                "autocreate",
                "clientId",
                "default",
                "groupsAutocreate",
                "groupsOverwrite",
                "issuerUrl",
                "queryUserinfo",
                "realm",
                "scopes"
            ],
            "inputProperties": {
                "acrValues": {
                    "type": "string",
                    "description": "Authentication Context Class Reference values for the OpenID provider.\n"
                },
                "autocreate": {
                    "type": "boolean",
                    "description": "Automatically create users on the Proxmox cluster if they do not exist.\n"
                },
                "clientId": {
                    "type": "string",
                    "description": "OpenID Connect Client ID.\n"
                },
                "clientKey": {
                    "type": "string",
                    "description": "OpenID Connect Client Key (secret). Note: stored in Proxmox but not returned by API.\n",
                    "secret": true
                },
                "comment": {
                    "type": "string",
                    "description": "Description of the realm.\n"
                },
                "default": {
                    "type": "boolean",
                    "description": "Use this realm as the default for login.\n"
                },
                "groupsAutocreate": {
                    "type": "boolean",
                    "description": "Automatically create groups from claims rather than using existing Proxmox VE groups.\n"
                },
                "groupsClaim": {
                    "type": "string",
                    "description": "OpenID claim used to retrieve user group memberships.\n"
                },
                "groupsOverwrite": {
                    "type": "boolean",
                    "description": "Replace assigned groups on login instead of appending to existing ones.\n"
                },
                "issuerUrl": {
                    "type": "string",
                    "description": "OpenID Connect issuer URL. Proxmox uses OpenID Connect Discovery to configure the provider.\n"
                },
                "prompt": {
                    "type": "string",
                    "description": "Specifies whether the authorization server prompts for reauthentication and/or consent (e.g., 'none', 'login', 'consent', 'select_account').\n"
                },
                "queryUserinfo": {
                    "type": "boolean",
                    "description": "Query the OpenID userinfo endpoint for claims. Required when the identity provider does not include claims in the ID token.\n"
                },
                "realm": {
                    "type": "string",
                    "description": "Realm identifier (e.g., 'my-oidc').\n"
                },
                "scopes": {
                    "type": "string",
                    "description": "Space-separated list of OpenID scopes to request.\n"
                },
                "usernameClaim": {
                    "type": "string",
                    "description": "OpenID claim used to generate the unique username. Common values are \u003cspan pulumi-lang-nodejs=\"`subject`\" pulumi-lang-dotnet=\"`Subject`\" pulumi-lang-go=\"`subject`\" pulumi-lang-python=\"`subject`\" pulumi-lang-yaml=\"`subject`\" pulumi-lang-java=\"`subject`\"\u003e`subject`\u003c/span\u003e, \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, \u003cspan pulumi-lang-nodejs=\"`email`\" pulumi-lang-dotnet=\"`Email`\" pulumi-lang-go=\"`email`\" pulumi-lang-python=\"`email`\" pulumi-lang-yaml=\"`email`\" pulumi-lang-java=\"`email`\"\u003e`email`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`upn`\" pulumi-lang-dotnet=\"`Upn`\" pulumi-lang-go=\"`upn`\" pulumi-lang-python=\"`upn`\" pulumi-lang-yaml=\"`upn`\" pulumi-lang-java=\"`upn`\"\u003e`upn`\u003c/span\u003e.\n"
                }
            },
            "requiredInputs": [
                "clientId",
                "issuerUrl",
                "realm"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Openid resources.\n",
                "properties": {
                    "acrValues": {
                        "type": "string",
                        "description": "Authentication Context Class Reference values for the OpenID provider.\n"
                    },
                    "autocreate": {
                        "type": "boolean",
                        "description": "Automatically create users on the Proxmox cluster if they do not exist.\n"
                    },
                    "clientId": {
                        "type": "string",
                        "description": "OpenID Connect Client ID.\n"
                    },
                    "clientKey": {
                        "type": "string",
                        "description": "OpenID Connect Client Key (secret). Note: stored in Proxmox but not returned by API.\n",
                        "secret": true
                    },
                    "comment": {
                        "type": "string",
                        "description": "Description of the realm.\n"
                    },
                    "default": {
                        "type": "boolean",
                        "description": "Use this realm as the default for login.\n"
                    },
                    "groupsAutocreate": {
                        "type": "boolean",
                        "description": "Automatically create groups from claims rather than using existing Proxmox VE groups.\n"
                    },
                    "groupsClaim": {
                        "type": "string",
                        "description": "OpenID claim used to retrieve user group memberships.\n"
                    },
                    "groupsOverwrite": {
                        "type": "boolean",
                        "description": "Replace assigned groups on login instead of appending to existing ones.\n"
                    },
                    "issuerUrl": {
                        "type": "string",
                        "description": "OpenID Connect issuer URL. Proxmox uses OpenID Connect Discovery to configure the provider.\n"
                    },
                    "prompt": {
                        "type": "string",
                        "description": "Specifies whether the authorization server prompts for reauthentication and/or consent (e.g., 'none', 'login', 'consent', 'select_account').\n"
                    },
                    "queryUserinfo": {
                        "type": "boolean",
                        "description": "Query the OpenID userinfo endpoint for claims. Required when the identity provider does not include claims in the ID token.\n"
                    },
                    "realm": {
                        "type": "string",
                        "description": "Realm identifier (e.g., 'my-oidc').\n"
                    },
                    "scopes": {
                        "type": "string",
                        "description": "Space-separated list of OpenID scopes to request.\n"
                    },
                    "usernameClaim": {
                        "type": "string",
                        "description": "OpenID claim used to generate the unique username. Common values are \u003cspan pulumi-lang-nodejs=\"`subject`\" pulumi-lang-dotnet=\"`Subject`\" pulumi-lang-go=\"`subject`\" pulumi-lang-python=\"`subject`\" pulumi-lang-yaml=\"`subject`\" pulumi-lang-java=\"`subject`\"\u003e`subject`\u003c/span\u003e, \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, \u003cspan pulumi-lang-nodejs=\"`email`\" pulumi-lang-dotnet=\"`Email`\" pulumi-lang-go=\"`email`\" pulumi-lang-python=\"`email`\" pulumi-lang-yaml=\"`email`\" pulumi-lang-java=\"`email`\"\u003e`email`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`upn`\" pulumi-lang-dotnet=\"`Upn`\" pulumi-lang-go=\"`upn`\" pulumi-lang-python=\"`upn`\" pulumi-lang-yaml=\"`upn`\" pulumi-lang-java=\"`upn`\"\u003e`upn`\u003c/span\u003e.\n"
                    }
                },
                "type": "object"
            }
        },
        "proxmoxve:realm/openidLegacy:OpenidLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.realm.Openid`\" pulumi-lang-dotnet=\"`proxmoxve.realm.Openid`\" pulumi-lang-go=\"`realm.Openid`\" pulumi-lang-python=\"`realm.Openid`\" pulumi-lang-yaml=\"`proxmoxve.realm.Openid`\" pulumi-lang-java=\"`proxmoxve.realm.Openid`\"\u003e`proxmoxve.realm.Openid`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages an OpenID Connect authentication realm in Proxmox VE.\n\nOpenID Connect realms allow Proxmox to authenticate users against an external OpenID Connect provider.\n\n## Privileges Required\n\n| Path            | Attribute      |\n|-----------------|----------------|\n| /access/domains | Realm.Allocate |\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.realm.OpenidLegacy(\"example\", {\n    realm: \"example-oidc\",\n    issuerUrl: \"https://auth.example.com\",\n    clientId: \"your-client-id\",\n    clientKey: oidcClientSecret,\n    usernameClaim: \"email\",\n    autocreate: true,\n    groupsClaim: \"groups\",\n    groupsAutocreate: true,\n    groupsOverwrite: false,\n    scopes: \"openid email profile\",\n    queryUserinfo: true,\n    comment: \"Example OpenID Connect realm managed by Terraform\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.realm.OpenidLegacy(\"example\",\n    realm=\"example-oidc\",\n    issuer_url=\"https://auth.example.com\",\n    client_id=\"your-client-id\",\n    client_key=oidc_client_secret,\n    username_claim=\"email\",\n    autocreate=True,\n    groups_claim=\"groups\",\n    groups_autocreate=True,\n    groups_overwrite=False,\n    scopes=\"openid email profile\",\n    query_userinfo=True,\n    comment=\"Example OpenID Connect realm managed by Terraform\")\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.Realm.OpenidLegacy(\"example\", new()\n    {\n        Realm = \"example-oidc\",\n        IssuerUrl = \"https://auth.example.com\",\n        ClientId = \"your-client-id\",\n        ClientKey = oidcClientSecret,\n        UsernameClaim = \"email\",\n        Autocreate = true,\n        GroupsClaim = \"groups\",\n        GroupsAutocreate = true,\n        GroupsOverwrite = false,\n        Scopes = \"openid email profile\",\n        QueryUserinfo = true,\n        Comment = \"Example OpenID Connect realm managed by Terraform\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/go/proxmoxve/realm\"\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 := realm.NewOpenidLegacy(ctx, \"example\", \u0026realm.OpenidLegacyArgs{\n\t\t\tRealm:            pulumi.String(\"example-oidc\"),\n\t\t\tIssuerUrl:        pulumi.String(\"https://auth.example.com\"),\n\t\t\tClientId:         pulumi.String(\"your-client-id\"),\n\t\t\tClientKey:        pulumi.Any(oidcClientSecret),\n\t\t\tUsernameClaim:    pulumi.String(\"email\"),\n\t\t\tAutocreate:       pulumi.Bool(true),\n\t\t\tGroupsClaim:      pulumi.String(\"groups\"),\n\t\t\tGroupsAutocreate: pulumi.Bool(true),\n\t\t\tGroupsOverwrite:  pulumi.Bool(false),\n\t\t\tScopes:           pulumi.String(\"openid email profile\"),\n\t\t\tQueryUserinfo:    pulumi.Bool(true),\n\t\t\tComment:          pulumi.String(\"Example OpenID Connect realm managed by Terraform\"),\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.realm.OpenidLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.realm.OpenidLegacyArgs;\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 OpenidLegacy(\"example\", OpenidLegacyArgs.builder()\n            .realm(\"example-oidc\")\n            .issuerUrl(\"https://auth.example.com\")\n            .clientId(\"your-client-id\")\n            .clientKey(oidcClientSecret)\n            .usernameClaim(\"email\")\n            .autocreate(true)\n            .groupsClaim(\"groups\")\n            .groupsAutocreate(true)\n            .groupsOverwrite(false)\n            .scopes(\"openid email profile\")\n            .queryUserinfo(true)\n            .comment(\"Example OpenID Connect realm managed by Terraform\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:realm:OpenidLegacy\n    properties:\n      realm: example-oidc\n      issuerUrl: https://auth.example.com\n      clientId: your-client-id\n      clientKey: ${oidcClientSecret}\n      usernameClaim: email\n      autocreate: true # Group mapping (optional)\n      groupsClaim: groups\n      groupsAutocreate: true\n      groupsOverwrite: false # Scopes and prompt\n      scopes: openid email profile\n      queryUserinfo: true\n      comment: Example OpenID Connect realm managed by Terraform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Notes\n\n### Client Key Security\n\nThe \u003cspan pulumi-lang-nodejs=\"`clientKey`\" pulumi-lang-dotnet=\"`ClientKey`\" pulumi-lang-go=\"`clientKey`\" pulumi-lang-python=\"`client_key`\" pulumi-lang-yaml=\"`clientKey`\" pulumi-lang-java=\"`clientKey`\"\u003e`clientKey`\u003c/span\u003e is sent to Proxmox and stored securely, but it's never returned by the API. This means:\n\n- Terraform cannot detect if the client key was changed outside of Terraform\n- You must maintain the client key in your Terraform configuration or use a variable\n- The client key will be marked as sensitive in Terraform state\n\n### Username Claim\n\nThe \u003cspan pulumi-lang-nodejs=\"`usernameClaim`\" pulumi-lang-dotnet=\"`UsernameClaim`\" pulumi-lang-go=\"`usernameClaim`\" pulumi-lang-python=\"`username_claim`\" pulumi-lang-yaml=\"`usernameClaim`\" pulumi-lang-java=\"`usernameClaim`\"\u003e`usernameClaim`\u003c/span\u003e attribute is **fixed after creation** — it cannot be changed once the realm is created. Changing it requires destroying and recreating the realm. Common values:\n\n- \u003cspan pulumi-lang-nodejs=\"`subject`\" pulumi-lang-dotnet=\"`Subject`\" pulumi-lang-go=\"`subject`\" pulumi-lang-python=\"`subject`\" pulumi-lang-yaml=\"`subject`\" pulumi-lang-java=\"`subject`\"\u003e`subject`\u003c/span\u003e (default) — Uses the OpenID \u003cspan pulumi-lang-nodejs=\"`sub`\" pulumi-lang-dotnet=\"`Sub`\" pulumi-lang-go=\"`sub`\" pulumi-lang-python=\"`sub`\" pulumi-lang-yaml=\"`sub`\" pulumi-lang-java=\"`sub`\"\u003e`sub`\u003c/span\u003e claim\n- \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 — Uses the \u003cspan pulumi-lang-nodejs=\"`preferredUsername`\" pulumi-lang-dotnet=\"`PreferredUsername`\" pulumi-lang-go=\"`preferredUsername`\" pulumi-lang-python=\"`preferred_username`\" pulumi-lang-yaml=\"`preferredUsername`\" pulumi-lang-java=\"`preferredUsername`\"\u003e`preferredUsername`\u003c/span\u003e claim\n- \u003cspan pulumi-lang-nodejs=\"`email`\" pulumi-lang-dotnet=\"`Email`\" pulumi-lang-go=\"`email`\" pulumi-lang-python=\"`email`\" pulumi-lang-yaml=\"`email`\" pulumi-lang-java=\"`email`\"\u003e`email`\u003c/span\u003e — Uses the \u003cspan pulumi-lang-nodejs=\"`email`\" pulumi-lang-dotnet=\"`Email`\" pulumi-lang-go=\"`email`\" pulumi-lang-python=\"`email`\" pulumi-lang-yaml=\"`email`\" pulumi-lang-java=\"`email`\"\u003e`email`\u003c/span\u003e claim\n- \u003cspan pulumi-lang-nodejs=\"`upn`\" pulumi-lang-dotnet=\"`Upn`\" pulumi-lang-go=\"`upn`\" pulumi-lang-python=\"`upn`\" pulumi-lang-yaml=\"`upn`\" pulumi-lang-java=\"`upn`\"\u003e`upn`\u003c/span\u003e — Uses the User Principal Name claim (common with ADFS/Azure AD)\n\nAny valid OpenID claim name can be used. Ensure the chosen claim provides unique, stable identifiers for your users.\n\n### Common Configuration Scenarios\n\n#### Minimal Configuration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst minimal = new proxmoxve.realm.OpenidLegacy(\"minimal\", {\n    realm: \"my-oidc\",\n    issuerUrl: \"https://auth.example.com\",\n    clientId: oidcClientId,\n    clientKey: oidcClientSecret,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nminimal = proxmoxve.realm.OpenidLegacy(\"minimal\",\n    realm=\"my-oidc\",\n    issuer_url=\"https://auth.example.com\",\n    client_id=oidc_client_id,\n    client_key=oidc_client_secret)\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 minimal = new ProxmoxVE.Realm.OpenidLegacy(\"minimal\", new()\n    {\n        Realm = \"my-oidc\",\n        IssuerUrl = \"https://auth.example.com\",\n        ClientId = oidcClientId,\n        ClientKey = oidcClientSecret,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/go/proxmoxve/realm\"\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 := realm.NewOpenidLegacy(ctx, \"minimal\", \u0026realm.OpenidLegacyArgs{\n\t\t\tRealm:     pulumi.String(\"my-oidc\"),\n\t\t\tIssuerUrl: pulumi.String(\"https://auth.example.com\"),\n\t\t\tClientId:  pulumi.Any(oidcClientId),\n\t\t\tClientKey: pulumi.Any(oidcClientSecret),\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.realm.OpenidLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.realm.OpenidLegacyArgs;\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 minimal = new OpenidLegacy(\"minimal\", OpenidLegacyArgs.builder()\n            .realm(\"my-oidc\")\n            .issuerUrl(\"https://auth.example.com\")\n            .clientId(oidcClientId)\n            .clientKey(oidcClientSecret)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  minimal:\n    type: proxmoxve:realm:OpenidLegacy\n    properties:\n      realm: my-oidc\n      issuerUrl: https://auth.example.com\n      clientId: ${oidcClientId}\n      clientKey: ${oidcClientSecret}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n#### With User and Group Provisioning\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst full = new proxmoxve.realm.OpenidLegacy(\"full\", {\n    realm: \"corporate-oidc\",\n    issuerUrl: \"https://auth.example.com/realms/my-realm\",\n    clientId: oidcClientId,\n    clientKey: oidcClientSecret,\n    usernameClaim: \"email\",\n    autocreate: true,\n    groupsClaim: \"groups\",\n    groupsAutocreate: true,\n    scopes: \"openid email profile\",\n    queryUserinfo: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfull = proxmoxve.realm.OpenidLegacy(\"full\",\n    realm=\"corporate-oidc\",\n    issuer_url=\"https://auth.example.com/realms/my-realm\",\n    client_id=oidc_client_id,\n    client_key=oidc_client_secret,\n    username_claim=\"email\",\n    autocreate=True,\n    groups_claim=\"groups\",\n    groups_autocreate=True,\n    scopes=\"openid email profile\",\n    query_userinfo=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 full = new ProxmoxVE.Realm.OpenidLegacy(\"full\", new()\n    {\n        Realm = \"corporate-oidc\",\n        IssuerUrl = \"https://auth.example.com/realms/my-realm\",\n        ClientId = oidcClientId,\n        ClientKey = oidcClientSecret,\n        UsernameClaim = \"email\",\n        Autocreate = true,\n        GroupsClaim = \"groups\",\n        GroupsAutocreate = true,\n        Scopes = \"openid email profile\",\n        QueryUserinfo = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/go/proxmoxve/realm\"\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 := realm.NewOpenidLegacy(ctx, \"full\", \u0026realm.OpenidLegacyArgs{\n\t\t\tRealm:            pulumi.String(\"corporate-oidc\"),\n\t\t\tIssuerUrl:        pulumi.String(\"https://auth.example.com/realms/my-realm\"),\n\t\t\tClientId:         pulumi.Any(oidcClientId),\n\t\t\tClientKey:        pulumi.Any(oidcClientSecret),\n\t\t\tUsernameClaim:    pulumi.String(\"email\"),\n\t\t\tAutocreate:       pulumi.Bool(true),\n\t\t\tGroupsClaim:      pulumi.String(\"groups\"),\n\t\t\tGroupsAutocreate: pulumi.Bool(true),\n\t\t\tScopes:           pulumi.String(\"openid email profile\"),\n\t\t\tQueryUserinfo:    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.realm.OpenidLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.realm.OpenidLegacyArgs;\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 full = new OpenidLegacy(\"full\", OpenidLegacyArgs.builder()\n            .realm(\"corporate-oidc\")\n            .issuerUrl(\"https://auth.example.com/realms/my-realm\")\n            .clientId(oidcClientId)\n            .clientKey(oidcClientSecret)\n            .usernameClaim(\"email\")\n            .autocreate(true)\n            .groupsClaim(\"groups\")\n            .groupsAutocreate(true)\n            .scopes(\"openid email profile\")\n            .queryUserinfo(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  full:\n    type: proxmoxve:realm:OpenidLegacy\n    properties:\n      realm: corporate-oidc\n      issuerUrl: https://auth.example.com/realms/my-realm\n      clientId: ${oidcClientId}\n      clientKey: ${oidcClientSecret}\n      usernameClaim: email\n      autocreate: true # Group synchronization\n      groupsClaim: groups\n      groupsAutocreate: true\n      scopes: openid email profile\n      queryUserinfo: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## See Also\n\n- [Proxmox VE User Management](https://pve.proxmox.com/wiki/User_Management)\n- [Proxmox VE OpenID Connect Authentication](https://pve.proxmox.com/wiki/User_Management#pveum_openid)\n- [Proxmox API: /access/domains](https://pve.proxmox.com/pve-docs/api-viewer/index.html#/access/domains)\n\n## Import\n\n!/usr/bin/env sh\nOpenID realms can be imported using the realm identifier, e.g.:\n\n```sh\n$ pulumi import proxmoxve:realm/openidLegacy:OpenidLegacy example example-oidc\n```\n\n\u003e When importing, the \u003cspan pulumi-lang-nodejs=\"`clientKey`\" pulumi-lang-dotnet=\"`ClientKey`\" pulumi-lang-go=\"`clientKey`\" pulumi-lang-python=\"`client_key`\" pulumi-lang-yaml=\"`clientKey`\" pulumi-lang-java=\"`clientKey`\"\u003e`clientKey`\u003c/span\u003e 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": {
                "acrValues": {
                    "type": "string",
                    "description": "Authentication Context Class Reference values for the OpenID provider.\n"
                },
                "autocreate": {
                    "type": "boolean",
                    "description": "Automatically create users on the Proxmox cluster if they do not exist.\n"
                },
                "clientId": {
                    "type": "string",
                    "description": "OpenID Connect Client ID.\n"
                },
                "clientKey": {
                    "type": "string",
                    "description": "OpenID Connect Client Key (secret). Note: stored in Proxmox but not returned by API.\n",
                    "secret": true
                },
                "comment": {
                    "type": "string",
                    "description": "Description of the realm.\n"
                },
                "default": {
                    "type": "boolean",
                    "description": "Use this realm as the default for login.\n"
                },
                "groupsAutocreate": {
                    "type": "boolean",
                    "description": "Automatically create groups from claims rather than using existing Proxmox VE groups.\n"
                },
                "groupsClaim": {
                    "type": "string",
                    "description": "OpenID claim used to retrieve user group memberships.\n"
                },
                "groupsOverwrite": {
                    "type": "boolean",
                    "description": "Replace assigned groups on login instead of appending to existing ones.\n"
                },
                "issuerUrl": {
                    "type": "string",
                    "description": "OpenID Connect issuer URL. Proxmox uses OpenID Connect Discovery to configure the provider.\n"
                },
                "prompt": {
                    "type": "string",
                    "description": "Specifies whether the authorization server prompts for reauthentication and/or consent (e.g., 'none', 'login', 'consent', 'select_account').\n"
                },
                "queryUserinfo": {
                    "type": "boolean",
                    "description": "Query the OpenID userinfo endpoint for claims. Required when the identity provider does not include claims in the ID token.\n"
                },
                "realm": {
                    "type": "string",
                    "description": "Realm identifier (e.g., 'my-oidc').\n"
                },
                "scopes": {
                    "type": "string",
                    "description": "Space-separated list of OpenID scopes to request.\n"
                },
                "usernameClaim": {
                    "type": "string",
                    "description": "OpenID claim used to generate the unique username. Common values are \u003cspan pulumi-lang-nodejs=\"`subject`\" pulumi-lang-dotnet=\"`Subject`\" pulumi-lang-go=\"`subject`\" pulumi-lang-python=\"`subject`\" pulumi-lang-yaml=\"`subject`\" pulumi-lang-java=\"`subject`\"\u003e`subject`\u003c/span\u003e, \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, \u003cspan pulumi-lang-nodejs=\"`email`\" pulumi-lang-dotnet=\"`Email`\" pulumi-lang-go=\"`email`\" pulumi-lang-python=\"`email`\" pulumi-lang-yaml=\"`email`\" pulumi-lang-java=\"`email`\"\u003e`email`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`upn`\" pulumi-lang-dotnet=\"`Upn`\" pulumi-lang-go=\"`upn`\" pulumi-lang-python=\"`upn`\" pulumi-lang-yaml=\"`upn`\" pulumi-lang-java=\"`upn`\"\u003e`upn`\u003c/span\u003e.\n"
                }
            },
            "required": [
                "autocreate",
                "clientId",
                "default",
                "groupsAutocreate",
                "groupsOverwrite",
                "issuerUrl",
                "queryUserinfo",
                "realm",
                "scopes"
            ],
            "inputProperties": {
                "acrValues": {
                    "type": "string",
                    "description": "Authentication Context Class Reference values for the OpenID provider.\n"
                },
                "autocreate": {
                    "type": "boolean",
                    "description": "Automatically create users on the Proxmox cluster if they do not exist.\n"
                },
                "clientId": {
                    "type": "string",
                    "description": "OpenID Connect Client ID.\n"
                },
                "clientKey": {
                    "type": "string",
                    "description": "OpenID Connect Client Key (secret). Note: stored in Proxmox but not returned by API.\n",
                    "secret": true
                },
                "comment": {
                    "type": "string",
                    "description": "Description of the realm.\n"
                },
                "default": {
                    "type": "boolean",
                    "description": "Use this realm as the default for login.\n"
                },
                "groupsAutocreate": {
                    "type": "boolean",
                    "description": "Automatically create groups from claims rather than using existing Proxmox VE groups.\n"
                },
                "groupsClaim": {
                    "type": "string",
                    "description": "OpenID claim used to retrieve user group memberships.\n"
                },
                "groupsOverwrite": {
                    "type": "boolean",
                    "description": "Replace assigned groups on login instead of appending to existing ones.\n"
                },
                "issuerUrl": {
                    "type": "string",
                    "description": "OpenID Connect issuer URL. Proxmox uses OpenID Connect Discovery to configure the provider.\n"
                },
                "prompt": {
                    "type": "string",
                    "description": "Specifies whether the authorization server prompts for reauthentication and/or consent (e.g., 'none', 'login', 'consent', 'select_account').\n"
                },
                "queryUserinfo": {
                    "type": "boolean",
                    "description": "Query the OpenID userinfo endpoint for claims. Required when the identity provider does not include claims in the ID token.\n"
                },
                "realm": {
                    "type": "string",
                    "description": "Realm identifier (e.g., 'my-oidc').\n"
                },
                "scopes": {
                    "type": "string",
                    "description": "Space-separated list of OpenID scopes to request.\n"
                },
                "usernameClaim": {
                    "type": "string",
                    "description": "OpenID claim used to generate the unique username. Common values are \u003cspan pulumi-lang-nodejs=\"`subject`\" pulumi-lang-dotnet=\"`Subject`\" pulumi-lang-go=\"`subject`\" pulumi-lang-python=\"`subject`\" pulumi-lang-yaml=\"`subject`\" pulumi-lang-java=\"`subject`\"\u003e`subject`\u003c/span\u003e, \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, \u003cspan pulumi-lang-nodejs=\"`email`\" pulumi-lang-dotnet=\"`Email`\" pulumi-lang-go=\"`email`\" pulumi-lang-python=\"`email`\" pulumi-lang-yaml=\"`email`\" pulumi-lang-java=\"`email`\"\u003e`email`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`upn`\" pulumi-lang-dotnet=\"`Upn`\" pulumi-lang-go=\"`upn`\" pulumi-lang-python=\"`upn`\" pulumi-lang-yaml=\"`upn`\" pulumi-lang-java=\"`upn`\"\u003e`upn`\u003c/span\u003e.\n"
                }
            },
            "requiredInputs": [
                "clientId",
                "issuerUrl",
                "realm"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering OpenidLegacy resources.\n",
                "properties": {
                    "acrValues": {
                        "type": "string",
                        "description": "Authentication Context Class Reference values for the OpenID provider.\n"
                    },
                    "autocreate": {
                        "type": "boolean",
                        "description": "Automatically create users on the Proxmox cluster if they do not exist.\n"
                    },
                    "clientId": {
                        "type": "string",
                        "description": "OpenID Connect Client ID.\n"
                    },
                    "clientKey": {
                        "type": "string",
                        "description": "OpenID Connect Client Key (secret). Note: stored in Proxmox but not returned by API.\n",
                        "secret": true
                    },
                    "comment": {
                        "type": "string",
                        "description": "Description of the realm.\n"
                    },
                    "default": {
                        "type": "boolean",
                        "description": "Use this realm as the default for login.\n"
                    },
                    "groupsAutocreate": {
                        "type": "boolean",
                        "description": "Automatically create groups from claims rather than using existing Proxmox VE groups.\n"
                    },
                    "groupsClaim": {
                        "type": "string",
                        "description": "OpenID claim used to retrieve user group memberships.\n"
                    },
                    "groupsOverwrite": {
                        "type": "boolean",
                        "description": "Replace assigned groups on login instead of appending to existing ones.\n"
                    },
                    "issuerUrl": {
                        "type": "string",
                        "description": "OpenID Connect issuer URL. Proxmox uses OpenID Connect Discovery to configure the provider.\n"
                    },
                    "prompt": {
                        "type": "string",
                        "description": "Specifies whether the authorization server prompts for reauthentication and/or consent (e.g., 'none', 'login', 'consent', 'select_account').\n"
                    },
                    "queryUserinfo": {
                        "type": "boolean",
                        "description": "Query the OpenID userinfo endpoint for claims. Required when the identity provider does not include claims in the ID token.\n"
                    },
                    "realm": {
                        "type": "string",
                        "description": "Realm identifier (e.g., 'my-oidc').\n"
                    },
                    "scopes": {
                        "type": "string",
                        "description": "Space-separated list of OpenID scopes to request.\n"
                    },
                    "usernameClaim": {
                        "type": "string",
                        "description": "OpenID claim used to generate the unique username. Common values are \u003cspan pulumi-lang-nodejs=\"`subject`\" pulumi-lang-dotnet=\"`Subject`\" pulumi-lang-go=\"`subject`\" pulumi-lang-python=\"`subject`\" pulumi-lang-yaml=\"`subject`\" pulumi-lang-java=\"`subject`\"\u003e`subject`\u003c/span\u003e, \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, \u003cspan pulumi-lang-nodejs=\"`email`\" pulumi-lang-dotnet=\"`Email`\" pulumi-lang-go=\"`email`\" pulumi-lang-python=\"`email`\" pulumi-lang-yaml=\"`email`\" pulumi-lang-java=\"`email`\"\u003e`email`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`upn`\" pulumi-lang-dotnet=\"`Upn`\" pulumi-lang-go=\"`upn`\" pulumi-lang-python=\"`upn`\" pulumi-lang-yaml=\"`upn`\" pulumi-lang-java=\"`upn`\"\u003e`upn`\u003c/span\u003e.\n"
                    }
                },
                "type": "object"
            }
        },
        "proxmoxve:realm/sync:Sync": {
            "description": "Triggers synchronization of an existing authentication realm using `/access/domains/{realm}/sync`. This resource represents the last requested sync configuration; deleting it does not undo the sync.\n\nThis resource wraps the `/access/domains/{realm}/sync` API and is intended to be\nused alongside realm configuration resources such as\n\u003cspan pulumi-lang-nodejs=\"`proxmoxve.realm.Ldap`\" pulumi-lang-dotnet=\"`proxmoxve.realm.Ldap`\" pulumi-lang-go=\"`realm.Ldap`\" pulumi-lang-python=\"`realm.Ldap`\" pulumi-lang-yaml=\"`proxmoxve.realm.Ldap`\" pulumi-lang-java=\"`proxmoxve.realm.Ldap`\"\u003e`proxmoxve.realm.Ldap`\u003c/span\u003e.\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.realm.Ldap(\"example\", {\n    realm: \"example-ldap\",\n    server1: \"ldap.example.com\",\n    port: 389,\n    baseDn: \"ou=people,dc=example,dc=com\",\n    userAttr: \"uid\",\n    groupDn: \"ou=groups,dc=example,dc=com\",\n    groupFilter: \"(objectClass=groupOfNames)\",\n});\nconst exampleSync = new proxmoxve.realm.Sync(\"example\", {\n    realm: example.realm,\n    scope: \"both\",\n    removeVanished: \"acl;entry;properties\",\n    enableNew: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.realm.Ldap(\"example\",\n    realm=\"example-ldap\",\n    server1=\"ldap.example.com\",\n    port=389,\n    base_dn=\"ou=people,dc=example,dc=com\",\n    user_attr=\"uid\",\n    group_dn=\"ou=groups,dc=example,dc=com\",\n    group_filter=\"(objectClass=groupOfNames)\")\nexample_sync = proxmoxve.realm.Sync(\"example\",\n    realm=example.realm,\n    scope=\"both\",\n    remove_vanished=\"acl;entry;properties\",\n    enable_new=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.Realm.Ldap(\"example\", new()\n    {\n        Realm = \"example-ldap\",\n        Server1 = \"ldap.example.com\",\n        Port = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(389) (example.pp:3,17-20)),\n        BaseDn = \"ou=people,dc=example,dc=com\",\n        UserAttr = \"uid\",\n        GroupDn = \"ou=groups,dc=example,dc=com\",\n        GroupFilter = \"(objectClass=groupOfNames)\",\n    });\n\n    var exampleSync = new ProxmoxVE.Realm.Sync(\"example\", new()\n    {\n        Realm = example.Realm,\n        Scope = \"both\",\n        RemoveVanished = \"acl;entry;properties\",\n        EnableNew = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/go/proxmoxve/realm\"\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 := realm.NewLdap(ctx, \"example\", \u0026realm.LdapArgs{\n\t\t\tRealm:       pulumi.String(\"example-ldap\"),\n\t\t\tServer1:     pulumi.String(\"ldap.example.com\"),\n\t\t\tPort:        pulumi.Int(389),\n\t\t\tBaseDn:      pulumi.String(\"ou=people,dc=example,dc=com\"),\n\t\t\tUserAttr:    pulumi.String(\"uid\"),\n\t\t\tGroupDn:     pulumi.String(\"ou=groups,dc=example,dc=com\"),\n\t\t\tGroupFilter: pulumi.String(\"(objectClass=groupOfNames)\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = realm.NewSync(ctx, \"example\", \u0026realm.SyncArgs{\n\t\t\tRealm:          example.Realm,\n\t\t\tScope:          pulumi.String(\"both\"),\n\t\t\tRemoveVanished: pulumi.String(\"acl;entry;properties\"),\n\t\t\tEnableNew:      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.realm.Ldap;\nimport io.muehlbachler.pulumi.proxmoxve.realm.LdapArgs;\nimport io.muehlbachler.pulumi.proxmoxve.realm.Sync;\nimport io.muehlbachler.pulumi.proxmoxve.realm.SyncArgs;\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 Ldap(\"example\", LdapArgs.builder()\n            .realm(\"example-ldap\")\n            .server1(\"ldap.example.com\")\n            .port(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(389) (example.pp:3,17-20)))\n            .baseDn(\"ou=people,dc=example,dc=com\")\n            .userAttr(\"uid\")\n            .groupDn(\"ou=groups,dc=example,dc=com\")\n            .groupFilter(\"(objectClass=groupOfNames)\")\n            .build());\n\n        var exampleSync = new Sync(\"exampleSync\", SyncArgs.builder()\n            .realm(example.realm())\n            .scope(\"both\")\n            .removeVanished(\"acl;entry;properties\")\n            .enableNew(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:realm:Ldap\n    properties:\n      realm: example-ldap\n      server1: ldap.example.com\n      port: 389\n      baseDn: ou=people,dc=example,dc=com\n      userAttr: uid\n      groupDn: ou=groups,dc=example,dc=com\n      groupFilter: (objectClass=groupOfNames)\n  exampleSync:\n    type: proxmoxve:realm:Sync\n    name: example\n    properties:\n      realm: ${example.realm}\n      scope: both\n      removeVanished: acl;entry;properties\n      enableNew: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Behavior Notes\n\n- The sync operation is **one-shot**: applying the resource runs the sync\n  with the specified options. Proxmox does not expose a persistent sync\n  object, so this resource only records the last requested sync\n  configuration in Terraform state.\n- Destroying the resource does **not** undo any previously performed sync;\n  it simply removes the resource from Terraform state.\n\n## Import\n\n!/usr/bin/env sh\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 \u003cspan pulumi-lang-nodejs=\"`realm`\" pulumi-lang-dotnet=\"`Realm`\" pulumi-lang-go=\"`realm`\" pulumi-lang-python=\"`realm`\" pulumi-lang-yaml=\"`realm`\" pulumi-lang-java=\"`realm`\"\u003e`realm`\u003c/span\u003e and \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 attributes; other fields must\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 removeVanished \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 removeVanished \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 removeVanished \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 removeVanished \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 removeVanished \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 removeVanished \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:realm/syncLegacy:SyncLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.realm.Sync`\" pulumi-lang-dotnet=\"`proxmoxve.realm.Sync`\" pulumi-lang-go=\"`realm.Sync`\" pulumi-lang-python=\"`realm.Sync`\" pulumi-lang-yaml=\"`proxmoxve.realm.Sync`\" pulumi-lang-java=\"`proxmoxve.realm.Sync`\"\u003e`proxmoxve.realm.Sync`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nTriggers synchronization of an existing authentication realm using `/access/domains/{realm}/sync`. This resource represents the last requested sync configuration; deleting it does not undo the sync.\n\nThis resource wraps the `/access/domains/{realm}/sync` API and is intended to be\nused alongside realm configuration resources such as\n\u003cspan pulumi-lang-nodejs=\"`proxmoxve.realm.LdapLegacy`\" pulumi-lang-dotnet=\"`proxmoxve.realm.LdapLegacy`\" pulumi-lang-go=\"`realm.LdapLegacy`\" pulumi-lang-python=\"`realm.LdapLegacy`\" pulumi-lang-yaml=\"`proxmoxve.realm.LdapLegacy`\" pulumi-lang-java=\"`proxmoxve.realm.LdapLegacy`\"\u003e`proxmoxve.realm.LdapLegacy`\u003c/span\u003e.\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.realm.LdapLegacy(\"example\", {\n    realm: \"example-ldap\",\n    server1: \"ldap.example.com\",\n    port: 389,\n    baseDn: \"ou=people,dc=example,dc=com\",\n    userAttr: \"uid\",\n    groupDn: \"ou=groups,dc=example,dc=com\",\n    groupFilter: \"(objectClass=groupOfNames)\",\n});\nconst exampleSyncLegacy = new proxmoxve.realm.SyncLegacy(\"example\", {\n    realm: example.realm,\n    scope: \"both\",\n    removeVanished: \"acl;entry;properties\",\n    enableNew: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.realm.LdapLegacy(\"example\",\n    realm=\"example-ldap\",\n    server1=\"ldap.example.com\",\n    port=389,\n    base_dn=\"ou=people,dc=example,dc=com\",\n    user_attr=\"uid\",\n    group_dn=\"ou=groups,dc=example,dc=com\",\n    group_filter=\"(objectClass=groupOfNames)\")\nexample_sync_legacy = proxmoxve.realm.SyncLegacy(\"example\",\n    realm=example.realm,\n    scope=\"both\",\n    remove_vanished=\"acl;entry;properties\",\n    enable_new=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.Realm.LdapLegacy(\"example\", new()\n    {\n        Realm = \"example-ldap\",\n        Server1 = \"ldap.example.com\",\n        Port = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(389) (example.pp:3,17-20)),\n        BaseDn = \"ou=people,dc=example,dc=com\",\n        UserAttr = \"uid\",\n        GroupDn = \"ou=groups,dc=example,dc=com\",\n        GroupFilter = \"(objectClass=groupOfNames)\",\n    });\n\n    var exampleSyncLegacy = new ProxmoxVE.Realm.SyncLegacy(\"example\", new()\n    {\n        Realm = example.Realm,\n        Scope = \"both\",\n        RemoveVanished = \"acl;entry;properties\",\n        EnableNew = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/go/proxmoxve/realm\"\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 := realm.NewLdapLegacy(ctx, \"example\", \u0026realm.LdapLegacyArgs{\n\t\t\tRealm:       pulumi.String(\"example-ldap\"),\n\t\t\tServer1:     pulumi.String(\"ldap.example.com\"),\n\t\t\tPort:        pulumi.Int(389),\n\t\t\tBaseDn:      pulumi.String(\"ou=people,dc=example,dc=com\"),\n\t\t\tUserAttr:    pulumi.String(\"uid\"),\n\t\t\tGroupDn:     pulumi.String(\"ou=groups,dc=example,dc=com\"),\n\t\t\tGroupFilter: pulumi.String(\"(objectClass=groupOfNames)\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = realm.NewSyncLegacy(ctx, \"example\", \u0026realm.SyncLegacyArgs{\n\t\t\tRealm:          example.Realm,\n\t\t\tScope:          pulumi.String(\"both\"),\n\t\t\tRemoveVanished: pulumi.String(\"acl;entry;properties\"),\n\t\t\tEnableNew:      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.realm.LdapLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.realm.LdapLegacyArgs;\nimport io.muehlbachler.pulumi.proxmoxve.realm.SyncLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.realm.SyncLegacyArgs;\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 LdapLegacy(\"example\", LdapLegacyArgs.builder()\n            .realm(\"example-ldap\")\n            .server1(\"ldap.example.com\")\n            .port(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(389) (example.pp:3,17-20)))\n            .baseDn(\"ou=people,dc=example,dc=com\")\n            .userAttr(\"uid\")\n            .groupDn(\"ou=groups,dc=example,dc=com\")\n            .groupFilter(\"(objectClass=groupOfNames)\")\n            .build());\n\n        var exampleSyncLegacy = new SyncLegacy(\"exampleSyncLegacy\", SyncLegacyArgs.builder()\n            .realm(example.realm())\n            .scope(\"both\")\n            .removeVanished(\"acl;entry;properties\")\n            .enableNew(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:realm:LdapLegacy\n    properties:\n      realm: example-ldap\n      server1: ldap.example.com\n      port: 389\n      baseDn: ou=people,dc=example,dc=com\n      userAttr: uid\n      groupDn: ou=groups,dc=example,dc=com\n      groupFilter: (objectClass=groupOfNames)\n  exampleSyncLegacy:\n    type: proxmoxve:realm:SyncLegacy\n    name: example\n    properties:\n      realm: ${example.realm}\n      scope: both\n      removeVanished: acl;entry;properties\n      enableNew: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Behavior Notes\n\n- The sync operation is **one-shot**: applying the resource runs the sync\n  with the specified options. Proxmox does not expose a persistent sync\n  object, so this resource only records the last requested sync\n  configuration in Terraform state.\n- Destroying the resource does **not** undo any previously performed sync;\n  it simply removes the resource from Terraform state.\n\n## Import\n\n!/usr/bin/env sh\nRealm sync resources can be imported by realm name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:realm/syncLegacy:SyncLegacy example example.com\n```\n\nImporting only populates the \u003cspan pulumi-lang-nodejs=\"`realm`\" pulumi-lang-dotnet=\"`Realm`\" pulumi-lang-go=\"`realm`\" pulumi-lang-python=\"`realm`\" pulumi-lang-yaml=\"`realm`\" pulumi-lang-java=\"`realm`\"\u003e`realm`\u003c/span\u003e and \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 attributes; other fields must\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 removeVanished \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 removeVanished \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 removeVanished \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 removeVanished \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 SyncLegacy 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 removeVanished \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 removeVanished \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: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`replaceTriggeredBy`\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/applierLegacy:ApplierLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.sdn.Applier`\" pulumi-lang-dotnet=\"`proxmoxve.sdn.Applier`\" pulumi-lang-go=\"`sdn.Applier`\" pulumi-lang-python=\"`sdn.Applier`\" pulumi-lang-yaml=\"`proxmoxve.sdn.Applier`\" pulumi-lang-java=\"`proxmoxve.sdn.Applier`\"\u003e`proxmoxve.sdn.Applier`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\n**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`replaceTriggeredBy`\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 ApplierLegacy 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",
            "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 node.\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 node.\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 node.\n"
                    }
                },
                "type": "object"
            }
        },
        "proxmoxve:sdn/fabric/node/openfabricLegacy:OpenfabricLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.sdn/fabric/node.Openfabric`\" pulumi-lang-dotnet=\"`proxmoxve.sdn/fabric/node.Openfabric`\" pulumi-lang-go=\"`sdn/fabric/node.Openfabric`\" pulumi-lang-python=\"`sdn/fabric/node.Openfabric`\" pulumi-lang-yaml=\"`proxmoxve.sdn/fabric/node.Openfabric`\" pulumi-lang-java=\"`proxmoxve.sdn/fabric/node.Openfabric`\"\u003e`proxmoxve.sdn/fabric/node.Openfabric`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nOpenFabric Fabric Node in Proxmox SDN. Fabrics in Proxmox VE SDN provide automated routing between nodes in a cluster.\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 node.\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 node.\n"
                }
            },
            "requiredInputs": [
                "fabricId",
                "interfaceNames",
                "nodeId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering OpenfabricLegacy 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 node.\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",
            "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/fabric/node/ospfLegacy:OspfLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.sdn/fabric/node.Ospf`\" pulumi-lang-dotnet=\"`proxmoxve.sdn/fabric/node.Ospf`\" pulumi-lang-go=\"`sdn/fabric/node.Ospf`\" pulumi-lang-python=\"`sdn/fabric/node.Ospf`\" pulumi-lang-yaml=\"`proxmoxve.sdn/fabric/node.Ospf`\" pulumi-lang-java=\"`proxmoxve.sdn/fabric/node.Ospf`\"\u003e`proxmoxve.sdn/fabric/node.Ospf`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nOSPF Fabric Node in Proxmox SDN. Fabrics in Proxmox VE SDN provide automated routing between nodes in a cluster.\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 OspfLegacy 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/fabric/openfabric:Openfabric": {
            "description": "OpenFabric Fabric in Proxmox SDN. Fabrics in Proxmox VE SDN provide automated routing between nodes in a cluster.\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 csnpInterval \u003c/span\u003eproperty for OpenFabric.\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 helloInterval \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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN fabric.\n"
                }
            },
            "required": [
                "resourceId"
            ],
            "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 csnpInterval \u003c/span\u003eproperty for OpenFabric.\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 helloInterval \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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN fabric.\n"
                }
            },
            "requiredInputs": [
                "resourceId"
            ],
            "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 csnpInterval \u003c/span\u003eproperty for OpenFabric.\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 helloInterval \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"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The unique identifier of the SDN fabric.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "proxmox_virtual_environment_sdn_fabric_openfabric"
                }
            ]
        },
        "proxmoxve:sdn/fabric/openfabricLegacy:OpenfabricLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.sdn/fabric.Openfabric`\" pulumi-lang-dotnet=\"`proxmoxve.sdn/fabric.Openfabric`\" pulumi-lang-go=\"`sdn/fabric.Openfabric`\" pulumi-lang-python=\"`sdn/fabric.Openfabric`\" pulumi-lang-yaml=\"`proxmoxve.sdn/fabric.Openfabric`\" pulumi-lang-java=\"`proxmoxve.sdn/fabric.Openfabric`\"\u003e`proxmoxve.sdn/fabric.Openfabric`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nOpenFabric Fabric in Proxmox SDN. Fabrics in Proxmox VE SDN provide automated routing between nodes in a cluster.\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 csnpInterval \u003c/span\u003eproperty for OpenFabric.\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 helloInterval \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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN fabric.\n"
                }
            },
            "required": [
                "resourceId"
            ],
            "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 csnpInterval \u003c/span\u003eproperty for OpenFabric.\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 helloInterval \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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN fabric.\n"
                }
            },
            "requiredInputs": [
                "resourceId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering OpenfabricLegacy 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 csnpInterval \u003c/span\u003eproperty for OpenFabric.\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 helloInterval \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"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The unique identifier of the SDN fabric.\n"
                    }
                },
                "type": "object"
            }
        },
        "proxmoxve:sdn/fabric/ospf:Ospf": {
            "description": "OSPF Fabric in Proxmox SDN. Fabrics in Proxmox VE SDN provide automated routing between nodes in a cluster.\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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN fabric.\n"
                }
            },
            "required": [
                "area",
                "resourceId",
                "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN fabric.\n"
                }
            },
            "requiredInputs": [
                "area",
                "resourceId",
                "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"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The unique identifier of the SDN fabric.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "proxmox_virtual_environment_sdn_fabric_ospf"
                }
            ]
        },
        "proxmoxve:sdn/fabric/ospfLegacy:OspfLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.sdn/fabric.Ospf`\" pulumi-lang-dotnet=\"`proxmoxve.sdn/fabric.Ospf`\" pulumi-lang-go=\"`sdn/fabric.Ospf`\" pulumi-lang-python=\"`sdn/fabric.Ospf`\" pulumi-lang-yaml=\"`proxmoxve.sdn/fabric.Ospf`\" pulumi-lang-java=\"`proxmoxve.sdn/fabric.Ospf`\"\u003e`proxmoxve.sdn/fabric.Ospf`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nOSPF Fabric in Proxmox SDN. Fabrics in Proxmox VE SDN provide automated routing between nodes in a cluster.\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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN fabric.\n"
                }
            },
            "required": [
                "area",
                "resourceId",
                "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN fabric.\n"
                }
            },
            "requiredInputs": [
                "area",
                "resourceId",
                "ipPrefix"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering OspfLegacy 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"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The unique identifier of the SDN fabric.\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.sdn.zone.Simple(\"example_zone_1\", {\n    resourceId: \"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.sdn.zone.Simple(\"example_zone_2\", {\n    resourceId: \"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    resourceId: \"vnet1\",\n    zone: exampleZone1.resourceId,\n}, {\n    dependsOn: [finalizer],\n});\n// SDN VNet - VNet with alias and port isolation\nconst exampleVnet2 = new proxmoxve.sdn.Vnet(\"example_vnet_2\", {\n    resourceId: \"vnet2\",\n    zone: exampleZone2.resourceId,\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.resourceId,\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.resourceId,\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.sdn.zone.Simple(\"example_zone_1\",\n    resource_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.sdn.zone.Simple(\"example_zone_2\",\n    resource_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    resource_id=\"vnet1\",\n    zone=example_zone1.resource_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    resource_id=\"vnet2\",\n    zone=example_zone2.resource_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.resource_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.resource_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.Sdn.Zone.Simple(\"example_zone_1\", new()\n    {\n        ResourceId = \"zone1\",\n        Nodes = new[]\n        {\n            \"pve\",\n        },\n        Mtu = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1500) (example.pp:8,16-20)),\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.Sdn.Zone.Simple(\"example_zone_2\", new()\n    {\n        ResourceId = \"zone2\",\n        Nodes = new[]\n        {\n            \"pve\",\n        },\n        Mtu = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1500) (example.pp:27,16-20)),\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        ResourceId = \"vnet1\",\n        Zone = exampleZone1.ResourceId,\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        ResourceId = \"vnet2\",\n        Zone = exampleZone2.ResourceId,\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.ResourceId,\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.ResourceId,\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/v8/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\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 := sdn.NewSimple(ctx, \"example_zone_1\", \u0026sdn.SimpleArgs{\n\t\t\tResourceId: 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 := sdn.NewSimple(ctx, \"example_zone_2\", \u0026sdn.SimpleArgs{\n\t\t\tResourceId: 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\tResourceId: pulumi.String(\"vnet1\"),\n\t\t\tZone:       exampleZone1.ResourceId,\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\tResourceId:   pulumi.String(\"vnet2\"),\n\t\t\tZone:         exampleZone2.ResourceId,\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.ResourceId,\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.ResourceId,\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.sdn.Simple;\nimport io.muehlbachler.pulumi.proxmoxve.sdn.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            .resourceId(\"zone1\")\n            .nodes(\"pve\")\n            .mtu(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1500) (example.pp:8,16-20)))\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            .resourceId(\"zone2\")\n            .nodes(\"pve\")\n            .mtu(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1500) (example.pp:27,16-20)))\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(finalizer)\n                .build());\n\n        // SDN VNet - Basic vnet\n        var exampleVnet1 = new Vnet(\"exampleVnet1\", VnetArgs.builder()\n            .resourceId(\"vnet1\")\n            .zone(exampleZone1.resourceId())\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            .resourceId(\"vnet2\")\n            .zone(exampleZone2.resourceId())\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.resourceId())\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.resourceId())\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:sdn/zone:Simple\n    name: example_zone_1\n    properties:\n      resourceId: 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:sdn/zone:Simple\n    name: example_zone_2\n    properties:\n      resourceId: 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      resourceId: vnet1\n      zone: ${exampleZone1.resourceId}\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      resourceId: vnet2\n      zone: ${exampleZone2.resourceId}\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.resourceId}\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.resourceId}\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\nSDN subnet can be imported using its unique identifier in the format: \u003cvnet\u003e/\u003csubnet-id\u003e\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$ 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/subnetLegacy:SubnetLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.sdn.Subnet`\" pulumi-lang-dotnet=\"`proxmoxve.sdn.Subnet`\" pulumi-lang-go=\"`sdn.Subnet`\" pulumi-lang-python=\"`sdn.Subnet`\" pulumi-lang-yaml=\"`proxmoxve.sdn.Subnet`\" pulumi-lang-java=\"`proxmoxve.sdn.Subnet`\"\u003e`proxmoxve.sdn.Subnet`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages 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.ApplierLegacy(\"finalizer\", {});\n// SDN Zone (Simple) - Basic zone for simple vnets\nconst exampleZone1 = new proxmoxve.sdn.zone.SimpleLegacy(\"example_zone_1\", {\n    resourceId: \"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.sdn.zone.SimpleLegacy(\"example_zone_2\", {\n    resourceId: \"zone2\",\n    nodes: [\"pve\"],\n    mtu: 1500,\n}, {\n    dependsOn: [finalizer],\n});\n// SDN VNet - Basic vnet\nconst exampleVnet1 = new proxmoxve.sdn.VnetLegacy(\"example_vnet_1\", {\n    resourceId: \"vnet1\",\n    zone: exampleZone1.resourceId,\n}, {\n    dependsOn: [finalizer],\n});\n// SDN VNet - VNet with alias and port isolation\nconst exampleVnet2 = new proxmoxve.sdn.VnetLegacy(\"example_vnet_2\", {\n    resourceId: \"vnet2\",\n    zone: exampleZone2.resourceId,\n    alias: \"Example VNet 2\",\n    isolatePorts: true,\n    vlanAware: false,\n}, {\n    dependsOn: [finalizer],\n});\n// Basic Subnet\nconst basicSubnet = new proxmoxve.sdn.SubnetLegacy(\"basic_subnet\", {\n    cidr: \"192.168.1.0/24\",\n    vnet: exampleVnet1.resourceId,\n    gateway: \"192.168.1.1\",\n}, {\n    dependsOn: [finalizer],\n});\n// Subnet with DHCP Configuration\nconst dhcpSubnet = new proxmoxve.sdn.SubnetLegacy(\"dhcp_subnet\", {\n    cidr: \"192.168.2.0/24\",\n    vnet: exampleVnet2.resourceId,\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.ApplierLegacy(\"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.ApplierLegacy(\"finalizer\")\n# SDN Zone (Simple) - Basic zone for simple vnets\nexample_zone1 = proxmoxve.sdn.zone.SimpleLegacy(\"example_zone_1\",\n    resource_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.sdn.zone.SimpleLegacy(\"example_zone_2\",\n    resource_id=\"zone2\",\n    nodes=[\"pve\"],\n    mtu=1500,\n    opts = pulumi.ResourceOptions(depends_on=[finalizer]))\n# SDN VNet - Basic vnet\nexample_vnet1 = proxmoxve.sdn.VnetLegacy(\"example_vnet_1\",\n    resource_id=\"vnet1\",\n    zone=example_zone1.resource_id,\n    opts = pulumi.ResourceOptions(depends_on=[finalizer]))\n# SDN VNet - VNet with alias and port isolation\nexample_vnet2 = proxmoxve.sdn.VnetLegacy(\"example_vnet_2\",\n    resource_id=\"vnet2\",\n    zone=example_zone2.resource_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.SubnetLegacy(\"basic_subnet\",\n    cidr=\"192.168.1.0/24\",\n    vnet=example_vnet1.resource_id,\n    gateway=\"192.168.1.1\",\n    opts = pulumi.ResourceOptions(depends_on=[finalizer]))\n# Subnet with DHCP Configuration\ndhcp_subnet = proxmoxve.sdn.SubnetLegacy(\"dhcp_subnet\",\n    cidr=\"192.168.2.0/24\",\n    vnet=example_vnet2.resource_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.ApplierLegacy(\"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.ApplierLegacy(\"finalizer\");\n\n    // SDN Zone (Simple) - Basic zone for simple vnets\n    var exampleZone1 = new ProxmoxVE.Sdn.Zone.SimpleLegacy(\"example_zone_1\", new()\n    {\n        ResourceId = \"zone1\",\n        Nodes = new[]\n        {\n            \"pve\",\n        },\n        Mtu = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1500) (example.pp:8,16-20)),\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.Sdn.Zone.SimpleLegacy(\"example_zone_2\", new()\n    {\n        ResourceId = \"zone2\",\n        Nodes = new[]\n        {\n            \"pve\",\n        },\n        Mtu = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1500) (example.pp:27,16-20)),\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            finalizer,\n        },\n    });\n\n    // SDN VNet - Basic vnet\n    var exampleVnet1 = new ProxmoxVE.Sdn.VnetLegacy(\"example_vnet_1\", new()\n    {\n        ResourceId = \"vnet1\",\n        Zone = exampleZone1.ResourceId,\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.VnetLegacy(\"example_vnet_2\", new()\n    {\n        ResourceId = \"vnet2\",\n        Zone = exampleZone2.ResourceId,\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.SubnetLegacy(\"basic_subnet\", new()\n    {\n        Cidr = \"192.168.1.0/24\",\n        Vnet = exampleVnet1.ResourceId,\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.SubnetLegacy(\"dhcp_subnet\", new()\n    {\n        Cidr = \"192.168.2.0/24\",\n        Vnet = exampleVnet2.ResourceId,\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.SubnetLegacyDhcpRangeArgs\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.ApplierLegacy(\"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/v8/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\tfinalizer, err := sdn.NewApplierLegacy(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 := sdn.NewSimpleLegacy(ctx, \"example_zone_1\", \u0026sdn.SimpleLegacyArgs{\n\t\t\tResourceId: 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 := sdn.NewSimpleLegacy(ctx, \"example_zone_2\", \u0026sdn.SimpleLegacyArgs{\n\t\t\tResourceId: 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.NewVnetLegacy(ctx, \"example_vnet_1\", \u0026sdn.VnetLegacyArgs{\n\t\t\tResourceId: pulumi.String(\"vnet1\"),\n\t\t\tZone:       exampleZone1.ResourceId,\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.NewVnetLegacy(ctx, \"example_vnet_2\", \u0026sdn.VnetLegacyArgs{\n\t\t\tResourceId:   pulumi.String(\"vnet2\"),\n\t\t\tZone:         exampleZone2.ResourceId,\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.NewSubnetLegacy(ctx, \"basic_subnet\", \u0026sdn.SubnetLegacyArgs{\n\t\t\tCidr:    pulumi.String(\"192.168.1.0/24\"),\n\t\t\tVnet:    exampleVnet1.ResourceId,\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.NewSubnetLegacy(ctx, \"dhcp_subnet\", \u0026sdn.SubnetLegacyArgs{\n\t\t\tCidr:          pulumi.String(\"192.168.2.0/24\"),\n\t\t\tVnet:          exampleVnet2.ResourceId,\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.SubnetLegacyDhcpRangeArgs{\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.NewApplierLegacy(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.ApplierLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.sdn.SimpleLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.sdn.SimpleLegacyArgs;\nimport io.muehlbachler.pulumi.proxmoxve.sdn.VnetLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.sdn.VnetLegacyArgs;\nimport io.muehlbachler.pulumi.proxmoxve.sdn.SubnetLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.sdn.SubnetLegacyArgs;\nimport com.pulumi.proxmoxve.sdn.inputs.SubnetLegacyDhcpRangeArgs;\nimport io.muehlbachler.pulumi.proxmoxve.sdn.ApplierLegacyArgs;\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 ApplierLegacy(\"finalizer\");\n\n        // SDN Zone (Simple) - Basic zone for simple vnets\n        var exampleZone1 = new SimpleLegacy(\"exampleZone1\", SimpleLegacyArgs.builder()\n            .resourceId(\"zone1\")\n            .nodes(\"pve\")\n            .mtu(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1500) (example.pp:8,16-20)))\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 SimpleLegacy(\"exampleZone2\", SimpleLegacyArgs.builder()\n            .resourceId(\"zone2\")\n            .nodes(\"pve\")\n            .mtu(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1500) (example.pp:27,16-20)))\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(finalizer)\n                .build());\n\n        // SDN VNet - Basic vnet\n        var exampleVnet1 = new VnetLegacy(\"exampleVnet1\", VnetLegacyArgs.builder()\n            .resourceId(\"vnet1\")\n            .zone(exampleZone1.resourceId())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(finalizer)\n                .build());\n\n        // SDN VNet - VNet with alias and port isolation\n        var exampleVnet2 = new VnetLegacy(\"exampleVnet2\", VnetLegacyArgs.builder()\n            .resourceId(\"vnet2\")\n            .zone(exampleZone2.resourceId())\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 SubnetLegacy(\"basicSubnet\", SubnetLegacyArgs.builder()\n            .cidr(\"192.168.1.0/24\")\n            .vnet(exampleVnet1.resourceId())\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 SubnetLegacy(\"dhcpSubnet\", SubnetLegacyArgs.builder()\n            .cidr(\"192.168.2.0/24\")\n            .vnet(exampleVnet2.resourceId())\n            .gateway(\"192.168.2.1\")\n            .dhcpDnsServer(\"192.168.2.53\")\n            .dnsZonePrefix(\"internal.example.com\")\n            .snat(true)\n            .dhcpRange(SubnetLegacyDhcpRangeArgs.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 ApplierLegacy(\"subnetApplier\", ApplierLegacyArgs.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:sdn/zone:SimpleLegacy\n    name: example_zone_1\n    properties:\n      resourceId: 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:sdn/zone:SimpleLegacy\n    name: example_zone_2\n    properties:\n      resourceId: 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:VnetLegacy\n    name: example_vnet_1\n    properties:\n      resourceId: vnet1\n      zone: ${exampleZone1.resourceId}\n    options:\n      dependsOn:\n        - ${finalizer}\n  # SDN VNet - VNet with alias and port isolation\n  exampleVnet2:\n    type: proxmoxve:sdn:VnetLegacy\n    name: example_vnet_2\n    properties:\n      resourceId: vnet2\n      zone: ${exampleZone2.resourceId}\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:SubnetLegacy\n    name: basic_subnet\n    properties:\n      cidr: 192.168.1.0/24\n      vnet: ${exampleVnet1.resourceId}\n      gateway: 192.168.1.1\n    options:\n      dependsOn:\n        - ${finalizer}\n  # Subnet with DHCP Configuration\n  dhcpSubnet:\n    type: proxmoxve:sdn:SubnetLegacy\n    name: dhcp_subnet\n    properties:\n      cidr: 192.168.2.0/24\n      vnet: ${exampleVnet2.resourceId}\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:ApplierLegacy\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:ApplierLegacy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n!/usr/bin/env sh\nSDN subnet can be imported using its unique identifier in the format: \u003cvnet\u003e/\u003csubnet-id\u003e\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/subnetLegacy:SubnetLegacy basic_subnet vnet1/zone1-192.168.1.0-24\n$ pulumi import proxmoxve:sdn/subnetLegacy:SubnetLegacy 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/SubnetLegacyDhcpRange:SubnetLegacyDhcpRange",
                    "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/SubnetLegacyDhcpRange:SubnetLegacyDhcpRange",
                    "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 SubnetLegacy 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/SubnetLegacyDhcpRange:SubnetLegacyDhcpRange",
                        "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.sdn.zone.Simple(\"example_zone_1\", {\n    resourceId: \"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.sdn.zone.Simple(\"example_zone_2\", {\n    resourceId: \"zone2\",\n    mtu: 1500,\n}, {\n    dependsOn: [finalizer],\n});\n// Basic VNet (Simple)\nconst basicVnet = new proxmoxve.sdn.Vnet(\"basic_vnet\", {\n    resourceId: \"vnet1\",\n    zone: exampleZone1.resourceId,\n}, {\n    dependsOn: [finalizer],\n});\n// VNet with Alias and Port Isolation\nconst isolatedVnet = new proxmoxve.sdn.Vnet(\"isolated_vnet\", {\n    resourceId: \"vnet2\",\n    zone: exampleZone2.resourceId,\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.sdn.zone.Simple(\"example_zone_1\",\n    resource_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.sdn.zone.Simple(\"example_zone_2\",\n    resource_id=\"zone2\",\n    mtu=1500,\n    opts = pulumi.ResourceOptions(depends_on=[finalizer]))\n# Basic VNet (Simple)\nbasic_vnet = proxmoxve.sdn.Vnet(\"basic_vnet\",\n    resource_id=\"vnet1\",\n    zone=example_zone1.resource_id,\n    opts = pulumi.ResourceOptions(depends_on=[finalizer]))\n# VNet with Alias and Port Isolation\nisolated_vnet = proxmoxve.sdn.Vnet(\"isolated_vnet\",\n    resource_id=\"vnet2\",\n    zone=example_zone2.resource_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.Sdn.Zone.Simple(\"example_zone_1\", new()\n    {\n        ResourceId = \"zone1\",\n        Mtu = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1500) (example.pp:7,16-20)),\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.Sdn.Zone.Simple(\"example_zone_2\", new()\n    {\n        ResourceId = \"zone2\",\n        Mtu = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1500) (example.pp:25,16-20)),\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        ResourceId = \"vnet1\",\n        Zone = exampleZone1.ResourceId,\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        ResourceId = \"vnet2\",\n        Zone = exampleZone2.ResourceId,\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/v8/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\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 := sdn.NewSimple(ctx, \"example_zone_1\", \u0026sdn.SimpleArgs{\n\t\t\tResourceId: 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 := sdn.NewSimple(ctx, \"example_zone_2\", \u0026sdn.SimpleArgs{\n\t\t\tResourceId: 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\tResourceId: pulumi.String(\"vnet1\"),\n\t\t\tZone:       exampleZone1.ResourceId,\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\tResourceId:   pulumi.String(\"vnet2\"),\n\t\t\tZone:         exampleZone2.ResourceId,\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.sdn.Simple;\nimport io.muehlbachler.pulumi.proxmoxve.sdn.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            .resourceId(\"zone1\")\n            .mtu(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1500) (example.pp:7,16-20)))\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            .resourceId(\"zone2\")\n            .mtu(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1500) (example.pp:25,16-20)))\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(finalizer)\n                .build());\n\n        // Basic VNet (Simple)\n        var basicVnet = new Vnet(\"basicVnet\", VnetArgs.builder()\n            .resourceId(\"vnet1\")\n            .zone(exampleZone1.resourceId())\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            .resourceId(\"vnet2\")\n            .zone(exampleZone2.resourceId())\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:sdn/zone:Simple\n    name: example_zone_1\n    properties:\n      resourceId: 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:sdn/zone:Simple\n    name: example_zone_2\n    properties:\n      resourceId: 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      resourceId: vnet1\n      zone: ${exampleZone1.resourceId}\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      resourceId: vnet2\n      zone: ${exampleZone2.resourceId}\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\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$ 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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN 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"
                },
                "zone": {
                    "type": "string",
                    "description": "The zone to which this VNet belongs.\n"
                }
            },
            "required": [
                "resourceId",
                "zone"
            ],
            "inputProperties": {
                "alias": {
                    "type": "string",
                    "description": "An optional alias for this VNet.\n"
                },
                "isolatePorts": {
                    "type": "boolean",
                    "description": "Isolate ports within this VNet.\n"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN 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"
                },
                "zone": {
                    "type": "string",
                    "description": "The zone to which this VNet belongs.\n"
                }
            },
            "requiredInputs": [
                "resourceId",
                "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"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The unique identifier of the SDN 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"
                    },
                    "zone": {
                        "type": "string",
                        "description": "The zone to which this VNet belongs.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "proxmox_virtual_environment_sdn_vnet"
                }
            ]
        },
        "proxmoxve:sdn/vnetLegacy:VnetLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.sdn.Vnet`\" pulumi-lang-dotnet=\"`proxmoxve.sdn.Vnet`\" pulumi-lang-go=\"`sdn.Vnet`\" pulumi-lang-python=\"`sdn.Vnet`\" pulumi-lang-yaml=\"`proxmoxve.sdn.Vnet`\" pulumi-lang-java=\"`proxmoxve.sdn.Vnet`\"\u003e`proxmoxve.sdn.Vnet`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages 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.ApplierLegacy(\"finalizer\", {});\n// SDN Zone (Simple) - Basic zone for simple vnets\nconst exampleZone1 = new proxmoxve.sdn.zone.SimpleLegacy(\"example_zone_1\", {\n    resourceId: \"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.sdn.zone.SimpleLegacy(\"example_zone_2\", {\n    resourceId: \"zone2\",\n    mtu: 1500,\n}, {\n    dependsOn: [finalizer],\n});\n// Basic VNet (Simple)\nconst basicVnet = new proxmoxve.sdn.VnetLegacy(\"basic_vnet\", {\n    resourceId: \"vnet1\",\n    zone: exampleZone1.resourceId,\n}, {\n    dependsOn: [finalizer],\n});\n// VNet with Alias and Port Isolation\nconst isolatedVnet = new proxmoxve.sdn.VnetLegacy(\"isolated_vnet\", {\n    resourceId: \"vnet2\",\n    zone: exampleZone2.resourceId,\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.ApplierLegacy(\"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.ApplierLegacy(\"finalizer\")\n# SDN Zone (Simple) - Basic zone for simple vnets\nexample_zone1 = proxmoxve.sdn.zone.SimpleLegacy(\"example_zone_1\",\n    resource_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.sdn.zone.SimpleLegacy(\"example_zone_2\",\n    resource_id=\"zone2\",\n    mtu=1500,\n    opts = pulumi.ResourceOptions(depends_on=[finalizer]))\n# Basic VNet (Simple)\nbasic_vnet = proxmoxve.sdn.VnetLegacy(\"basic_vnet\",\n    resource_id=\"vnet1\",\n    zone=example_zone1.resource_id,\n    opts = pulumi.ResourceOptions(depends_on=[finalizer]))\n# VNet with Alias and Port Isolation\nisolated_vnet = proxmoxve.sdn.VnetLegacy(\"isolated_vnet\",\n    resource_id=\"vnet2\",\n    zone=example_zone2.resource_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.ApplierLegacy(\"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.ApplierLegacy(\"finalizer\");\n\n    // SDN Zone (Simple) - Basic zone for simple vnets\n    var exampleZone1 = new ProxmoxVE.Sdn.Zone.SimpleLegacy(\"example_zone_1\", new()\n    {\n        ResourceId = \"zone1\",\n        Mtu = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1500) (example.pp:7,16-20)),\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.Sdn.Zone.SimpleLegacy(\"example_zone_2\", new()\n    {\n        ResourceId = \"zone2\",\n        Mtu = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1500) (example.pp:25,16-20)),\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            finalizer,\n        },\n    });\n\n    // Basic VNet (Simple)\n    var basicVnet = new ProxmoxVE.Sdn.VnetLegacy(\"basic_vnet\", new()\n    {\n        ResourceId = \"vnet1\",\n        Zone = exampleZone1.ResourceId,\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.VnetLegacy(\"isolated_vnet\", new()\n    {\n        ResourceId = \"vnet2\",\n        Zone = exampleZone2.ResourceId,\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.ApplierLegacy(\"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/v8/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\tfinalizer, err := sdn.NewApplierLegacy(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 := sdn.NewSimpleLegacy(ctx, \"example_zone_1\", \u0026sdn.SimpleLegacyArgs{\n\t\t\tResourceId: 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 := sdn.NewSimpleLegacy(ctx, \"example_zone_2\", \u0026sdn.SimpleLegacyArgs{\n\t\t\tResourceId: 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.NewVnetLegacy(ctx, \"basic_vnet\", \u0026sdn.VnetLegacyArgs{\n\t\t\tResourceId: pulumi.String(\"vnet1\"),\n\t\t\tZone:       exampleZone1.ResourceId,\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.NewVnetLegacy(ctx, \"isolated_vnet\", \u0026sdn.VnetLegacyArgs{\n\t\t\tResourceId:   pulumi.String(\"vnet2\"),\n\t\t\tZone:         exampleZone2.ResourceId,\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.NewApplierLegacy(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.ApplierLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.sdn.SimpleLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.sdn.SimpleLegacyArgs;\nimport io.muehlbachler.pulumi.proxmoxve.sdn.VnetLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.sdn.VnetLegacyArgs;\nimport io.muehlbachler.pulumi.proxmoxve.sdn.ApplierLegacyArgs;\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 ApplierLegacy(\"finalizer\");\n\n        // SDN Zone (Simple) - Basic zone for simple vnets\n        var exampleZone1 = new SimpleLegacy(\"exampleZone1\", SimpleLegacyArgs.builder()\n            .resourceId(\"zone1\")\n            .mtu(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1500) (example.pp:7,16-20)))\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 SimpleLegacy(\"exampleZone2\", SimpleLegacyArgs.builder()\n            .resourceId(\"zone2\")\n            .mtu(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1500) (example.pp:25,16-20)))\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(finalizer)\n                .build());\n\n        // Basic VNet (Simple)\n        var basicVnet = new VnetLegacy(\"basicVnet\", VnetLegacyArgs.builder()\n            .resourceId(\"vnet1\")\n            .zone(exampleZone1.resourceId())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(finalizer)\n                .build());\n\n        // VNet with Alias and Port Isolation\n        var isolatedVnet = new VnetLegacy(\"isolatedVnet\", VnetLegacyArgs.builder()\n            .resourceId(\"vnet2\")\n            .zone(exampleZone2.resourceId())\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 ApplierLegacy(\"vnetApplier\", ApplierLegacyArgs.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:sdn/zone:SimpleLegacy\n    name: example_zone_1\n    properties:\n      resourceId: 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:sdn/zone:SimpleLegacy\n    name: example_zone_2\n    properties:\n      resourceId: zone2\n      mtu: 1500\n    options:\n      dependsOn:\n        - ${finalizer}\n  # Basic VNet (Simple)\n  basicVnet:\n    type: proxmoxve:sdn:VnetLegacy\n    name: basic_vnet\n    properties:\n      resourceId: vnet1\n      zone: ${exampleZone1.resourceId}\n    options:\n      dependsOn:\n        - ${finalizer}\n  # VNet with Alias and Port Isolation\n  isolatedVnet:\n    type: proxmoxve:sdn:VnetLegacy\n    name: isolated_vnet\n    properties:\n      resourceId: vnet2\n      zone: ${exampleZone2.resourceId}\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:ApplierLegacy\n    name: vnet_applier\n    options:\n      dependsOn:\n        - ${exampleZone1}\n        - ${exampleZone2}\n        - ${basicVnet}\n        - ${isolatedVnet}\n  finalizer:\n    type: proxmoxve:sdn:ApplierLegacy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n!/usr/bin/env sh\nSDN vnet can be imported using its unique identifier (vnet ID)\n\n```sh\n$ pulumi import proxmoxve:sdn/vnetLegacy:VnetLegacy basic_vnet vnet1\n$ pulumi import proxmoxve:sdn/vnetLegacy:VnetLegacy 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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN 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"
                },
                "zone": {
                    "type": "string",
                    "description": "The zone to which this VNet belongs.\n"
                }
            },
            "required": [
                "resourceId",
                "zone"
            ],
            "inputProperties": {
                "alias": {
                    "type": "string",
                    "description": "An optional alias for this VNet.\n"
                },
                "isolatePorts": {
                    "type": "boolean",
                    "description": "Isolate ports within this VNet.\n"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN 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"
                },
                "zone": {
                    "type": "string",
                    "description": "The zone to which this VNet belongs.\n"
                }
            },
            "requiredInputs": [
                "resourceId",
                "zone"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering VnetLegacy resources.\n",
                "properties": {
                    "alias": {
                        "type": "string",
                        "description": "An optional alias for this VNet.\n"
                    },
                    "isolatePorts": {
                        "type": "boolean",
                        "description": "Isolate ports within this VNet.\n"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The unique identifier of the SDN 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"
                    },
                    "zone": {
                        "type": "string",
                        "description": "The zone to which this VNet belongs.\n"
                    }
                },
                "type": "object"
            }
        },
        "proxmoxve:sdn/zone/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.sdn.zone.Evpn(\"example\", {\n    resourceId: \"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.sdn.zone.Evpn(\"example\",\n    resource_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.Sdn.Zone.Evpn(\"example\", new()\n    {\n        ResourceId = \"evpn1\",\n        Nodes = new[]\n        {\n            \"pve\",\n        },\n        Controller = \"evpn-controller1\",\n        VrfVxlan = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(4000) (example.pp:4,16-20)),\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 = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1450) (example.pp:14,29-33)),\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/v8/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.NewEvpn(ctx, \"example\", \u0026sdn.EvpnArgs{\n\t\t\tResourceId: 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.sdn.Evpn;\nimport io.muehlbachler.pulumi.proxmoxve.sdn.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            .resourceId(\"evpn1\")\n            .nodes(\"pve\")\n            .controller(\"evpn-controller1\")\n            .vrfVxlan(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(4000) (example.pp:4,16-20)))\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(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1450) (example.pp:14,29-33)))\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:sdn/zone:Evpn\n    properties:\n      resourceId: 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\nEVPN SDN zone can be imported using its unique identifier (zone ID)\n\n```sh\n$ pulumi import proxmoxve:sdn/zone/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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN zone.\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"
                }
            },
            "required": [
                "advertiseSubnets",
                "controller",
                "disableArpNdSuppression",
                "exitNodes",
                "exitNodesLocalRouting",
                "resourceId",
                "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN zone.\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"
                }
            },
            "requiredInputs": [
                "controller",
                "resourceId",
                "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"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The unique identifier of the SDN zone.\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"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "proxmox_virtual_environment_sdn_zone_evpn"
                }
            ]
        },
        "proxmoxve:sdn/zone/evpnLegacy:EvpnLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.sdn/zone.Evpn`\" pulumi-lang-dotnet=\"`proxmoxve.sdn/zone.Evpn`\" pulumi-lang-go=\"`sdn/zone.Evpn`\" pulumi-lang-python=\"`sdn/zone.Evpn`\" pulumi-lang-yaml=\"`proxmoxve.sdn/zone.Evpn`\" pulumi-lang-java=\"`proxmoxve.sdn/zone.Evpn`\"\u003e`proxmoxve.sdn/zone.Evpn`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nEVPN 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.sdn.zone.EvpnLegacy(\"example\", {\n    resourceId: \"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.sdn.zone.EvpnLegacy(\"example\",\n    resource_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.Sdn.Zone.EvpnLegacy(\"example\", new()\n    {\n        ResourceId = \"evpn1\",\n        Nodes = new[]\n        {\n            \"pve\",\n        },\n        Controller = \"evpn-controller1\",\n        VrfVxlan = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(4000) (example.pp:4,16-20)),\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 = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1450) (example.pp:14,29-33)),\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/v8/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.NewEvpnLegacy(ctx, \"example\", \u0026sdn.EvpnLegacyArgs{\n\t\t\tResourceId: 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.sdn.EvpnLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.sdn.EvpnLegacyArgs;\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 EvpnLegacy(\"example\", EvpnLegacyArgs.builder()\n            .resourceId(\"evpn1\")\n            .nodes(\"pve\")\n            .controller(\"evpn-controller1\")\n            .vrfVxlan(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(4000) (example.pp:4,16-20)))\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(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1450) (example.pp:14,29-33)))\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:sdn/zone:EvpnLegacy\n    properties:\n      resourceId: 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\nEVPN SDN zone can be imported using its unique identifier (zone ID)\n\n```sh\n$ pulumi import proxmoxve:sdn/zone/evpnLegacy:EvpnLegacy 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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN zone.\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"
                }
            },
            "required": [
                "advertiseSubnets",
                "controller",
                "disableArpNdSuppression",
                "exitNodes",
                "exitNodesLocalRouting",
                "resourceId",
                "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN zone.\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"
                }
            },
            "requiredInputs": [
                "controller",
                "resourceId",
                "vrfVxlan"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering EvpnLegacy 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"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The unique identifier of the SDN zone.\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"
                    }
                },
                "type": "object"
            }
        },
        "proxmoxve:sdn/zone/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.sdn.zone.Qinq(\"example\", {\n    resourceId: \"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.sdn.zone.Qinq(\"example\",\n    resource_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.Sdn.Zone.Qinq(\"example\", new()\n    {\n        ResourceId = \"qinq1\",\n        Bridge = \"vmbr0\",\n        ServiceVlan = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:3,25-28)),\n        ServiceVlanProtocol = \"802.1ad\",\n        Mtu = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1496) (example.pp:5,25-29)),\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/v8/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.NewQinq(ctx, \"example\", \u0026sdn.QinqArgs{\n\t\t\tResourceId:          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.sdn.Qinq;\nimport io.muehlbachler.pulumi.proxmoxve.sdn.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            .resourceId(\"qinq1\")\n            .bridge(\"vmbr0\")\n            .serviceVlan(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:3,25-28)))\n            .serviceVlanProtocol(\"802.1ad\")\n            .mtu(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1496) (example.pp:5,25-29)))\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:sdn/zone:Qinq\n    properties:\n      resourceId: 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\nQinQ SDN zone can be imported using its unique identifier (zone ID)\n\n```sh\n$ pulumi import proxmoxve:sdn/zone/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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN zone.\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"
                }
            },
            "required": [
                "bridge",
                "resourceId",
                "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN zone.\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"
                }
            },
            "requiredInputs": [
                "bridge",
                "resourceId",
                "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"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The unique identifier of the SDN zone.\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"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "proxmox_virtual_environment_sdn_zone_qinq"
                }
            ]
        },
        "proxmoxve:sdn/zone/qinqLegacy:QinqLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.sdn/zone.Qinq`\" pulumi-lang-dotnet=\"`proxmoxve.sdn/zone.Qinq`\" pulumi-lang-go=\"`sdn/zone.Qinq`\" pulumi-lang-python=\"`sdn/zone.Qinq`\" pulumi-lang-yaml=\"`proxmoxve.sdn/zone.Qinq`\" pulumi-lang-java=\"`proxmoxve.sdn/zone.Qinq`\"\u003e`proxmoxve.sdn/zone.Qinq`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nQinQ 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.sdn.zone.QinqLegacy(\"example\", {\n    resourceId: \"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.sdn.zone.QinqLegacy(\"example\",\n    resource_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.Sdn.Zone.QinqLegacy(\"example\", new()\n    {\n        ResourceId = \"qinq1\",\n        Bridge = \"vmbr0\",\n        ServiceVlan = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:3,25-28)),\n        ServiceVlanProtocol = \"802.1ad\",\n        Mtu = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1496) (example.pp:5,25-29)),\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/v8/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.NewQinqLegacy(ctx, \"example\", \u0026sdn.QinqLegacyArgs{\n\t\t\tResourceId:          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.sdn.QinqLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.sdn.QinqLegacyArgs;\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 QinqLegacy(\"example\", QinqLegacyArgs.builder()\n            .resourceId(\"qinq1\")\n            .bridge(\"vmbr0\")\n            .serviceVlan(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:3,25-28)))\n            .serviceVlanProtocol(\"802.1ad\")\n            .mtu(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1496) (example.pp:5,25-29)))\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:sdn/zone:QinqLegacy\n    properties:\n      resourceId: 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\nQinQ SDN zone can be imported using its unique identifier (zone ID)\n\n```sh\n$ pulumi import proxmoxve:sdn/zone/qinqLegacy:QinqLegacy 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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN zone.\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"
                }
            },
            "required": [
                "bridge",
                "resourceId",
                "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN zone.\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"
                }
            },
            "requiredInputs": [
                "bridge",
                "resourceId",
                "serviceVlan"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering QinqLegacy 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"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The unique identifier of the SDN zone.\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"
                    }
                },
                "type": "object"
            }
        },
        "proxmoxve:sdn/zone/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.sdn.zone.Simple(\"example\", {\n    resourceId: \"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.sdn.zone.Simple(\"example\",\n    resource_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.Sdn.Zone.Simple(\"example\", new()\n    {\n        ResourceId = \"simple1\",\n        Nodes = new[]\n        {\n            \"pve\",\n        },\n        Mtu = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1500) (example.pp:3,16-20)),\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/v8/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.NewSimple(ctx, \"example\", \u0026sdn.SimpleArgs{\n\t\t\tResourceId: 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.sdn.Simple;\nimport io.muehlbachler.pulumi.proxmoxve.sdn.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            .resourceId(\"simple1\")\n            .nodes(\"pve\")\n            .mtu(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1500) (example.pp:3,16-20)))\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:sdn/zone:Simple\n    properties:\n      resourceId: 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\nSimple SDN zone can be imported using its unique identifier (zone ID)\n\n```sh\n$ pulumi import proxmoxve:sdn/zone/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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN zone.\n"
                },
                "reverseDns": {
                    "type": "string",
                    "description": "Reverse DNS API server address.\n"
                },
                "state": {
                    "type": "string",
                    "description": "Indicates the current state of the zone.\n"
                }
            },
            "required": [
                "resourceId",
                "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN zone.\n"
                },
                "reverseDns": {
                    "type": "string",
                    "description": "Reverse DNS API server address.\n"
                }
            },
            "requiredInputs": [
                "resourceId"
            ],
            "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"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The unique identifier of the SDN zone.\n"
                    },
                    "reverseDns": {
                        "type": "string",
                        "description": "Reverse DNS API server address.\n"
                    },
                    "state": {
                        "type": "string",
                        "description": "Indicates the current state of the zone.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "proxmox_virtual_environment_sdn_zone_simple"
                }
            ]
        },
        "proxmoxve:sdn/zone/simpleLegacy:SimpleLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.sdn/zone.Simple`\" pulumi-lang-dotnet=\"`proxmoxve.sdn/zone.Simple`\" pulumi-lang-go=\"`sdn/zone.Simple`\" pulumi-lang-python=\"`sdn/zone.Simple`\" pulumi-lang-yaml=\"`proxmoxve.sdn/zone.Simple`\" pulumi-lang-java=\"`proxmoxve.sdn/zone.Simple`\"\u003e`proxmoxve.sdn/zone.Simple`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nSimple 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.sdn.zone.SimpleLegacy(\"example\", {\n    resourceId: \"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.sdn.zone.SimpleLegacy(\"example\",\n    resource_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.Sdn.Zone.SimpleLegacy(\"example\", new()\n    {\n        ResourceId = \"simple1\",\n        Nodes = new[]\n        {\n            \"pve\",\n        },\n        Mtu = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1500) (example.pp:3,16-20)),\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/v8/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.NewSimpleLegacy(ctx, \"example\", \u0026sdn.SimpleLegacyArgs{\n\t\t\tResourceId: 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.sdn.SimpleLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.sdn.SimpleLegacyArgs;\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 SimpleLegacy(\"example\", SimpleLegacyArgs.builder()\n            .resourceId(\"simple1\")\n            .nodes(\"pve\")\n            .mtu(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1500) (example.pp:3,16-20)))\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:sdn/zone:SimpleLegacy\n    properties:\n      resourceId: 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\nSimple SDN zone can be imported using its unique identifier (zone ID)\n\n```sh\n$ pulumi import proxmoxve:sdn/zone/simpleLegacy:SimpleLegacy 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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN zone.\n"
                },
                "reverseDns": {
                    "type": "string",
                    "description": "Reverse DNS API server address.\n"
                },
                "state": {
                    "type": "string",
                    "description": "Indicates the current state of the zone.\n"
                }
            },
            "required": [
                "resourceId",
                "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN zone.\n"
                },
                "reverseDns": {
                    "type": "string",
                    "description": "Reverse DNS API server address.\n"
                }
            },
            "requiredInputs": [
                "resourceId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering SimpleLegacy 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"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The unique identifier of the SDN zone.\n"
                    },
                    "reverseDns": {
                        "type": "string",
                        "description": "Reverse DNS API server address.\n"
                    },
                    "state": {
                        "type": "string",
                        "description": "Indicates the current state of the zone.\n"
                    }
                },
                "type": "object"
            }
        },
        "proxmoxve:sdn/zone/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.sdn.zone.Vlan(\"example\", {\n    resourceId: \"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.sdn.zone.Vlan(\"example\",\n    resource_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.Sdn.Zone.Vlan(\"example\", new()\n    {\n        ResourceId = \"vlan1\",\n        Bridge = \"vmbr0\",\n        Mtu = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1500) (example.pp:3,16-20)),\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/v8/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.NewVlan(ctx, \"example\", \u0026sdn.VlanArgs{\n\t\t\tResourceId: 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.sdn.Vlan;\nimport io.muehlbachler.pulumi.proxmoxve.sdn.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            .resourceId(\"vlan1\")\n            .bridge(\"vmbr0\")\n            .mtu(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1500) (example.pp:3,16-20)))\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:sdn/zone:Vlan\n    properties:\n      resourceId: 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\nVLAN SDN zone can be imported using its unique identifier (zone ID)\n\n```sh\n$ pulumi import proxmoxve:sdn/zone/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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN zone.\n"
                },
                "reverseDns": {
                    "type": "string",
                    "description": "Reverse DNS API server address.\n"
                },
                "state": {
                    "type": "string",
                    "description": "Indicates the current state of the zone.\n"
                }
            },
            "required": [
                "bridge",
                "resourceId",
                "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN zone.\n"
                },
                "reverseDns": {
                    "type": "string",
                    "description": "Reverse DNS API server address.\n"
                }
            },
            "requiredInputs": [
                "bridge",
                "resourceId"
            ],
            "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"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The unique identifier of the SDN zone.\n"
                    },
                    "reverseDns": {
                        "type": "string",
                        "description": "Reverse DNS API server address.\n"
                    },
                    "state": {
                        "type": "string",
                        "description": "Indicates the current state of the zone.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "proxmox_virtual_environment_sdn_zone_vlan"
                }
            ]
        },
        "proxmoxve:sdn/zone/vlanLegacy:VlanLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.sdn/zone.Vlan`\" pulumi-lang-dotnet=\"`proxmoxve.sdn/zone.Vlan`\" pulumi-lang-go=\"`sdn/zone.Vlan`\" pulumi-lang-python=\"`sdn/zone.Vlan`\" pulumi-lang-yaml=\"`proxmoxve.sdn/zone.Vlan`\" pulumi-lang-java=\"`proxmoxve.sdn/zone.Vlan`\"\u003e`proxmoxve.sdn/zone.Vlan`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nVLAN 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.sdn.zone.VlanLegacy(\"example\", {\n    resourceId: \"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.sdn.zone.VlanLegacy(\"example\",\n    resource_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.Sdn.Zone.VlanLegacy(\"example\", new()\n    {\n        ResourceId = \"vlan1\",\n        Bridge = \"vmbr0\",\n        Mtu = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1500) (example.pp:3,16-20)),\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/v8/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.NewVlanLegacy(ctx, \"example\", \u0026sdn.VlanLegacyArgs{\n\t\t\tResourceId: 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.sdn.VlanLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.sdn.VlanLegacyArgs;\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 VlanLegacy(\"example\", VlanLegacyArgs.builder()\n            .resourceId(\"vlan1\")\n            .bridge(\"vmbr0\")\n            .mtu(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1500) (example.pp:3,16-20)))\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:sdn/zone:VlanLegacy\n    properties:\n      resourceId: 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\nVLAN SDN zone can be imported using its unique identifier (zone ID)\n\n```sh\n$ pulumi import proxmoxve:sdn/zone/vlanLegacy:VlanLegacy 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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN zone.\n"
                },
                "reverseDns": {
                    "type": "string",
                    "description": "Reverse DNS API server address.\n"
                },
                "state": {
                    "type": "string",
                    "description": "Indicates the current state of the zone.\n"
                }
            },
            "required": [
                "bridge",
                "resourceId",
                "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN zone.\n"
                },
                "reverseDns": {
                    "type": "string",
                    "description": "Reverse DNS API server address.\n"
                }
            },
            "requiredInputs": [
                "bridge",
                "resourceId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering VlanLegacy 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"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The unique identifier of the SDN zone.\n"
                    },
                    "reverseDns": {
                        "type": "string",
                        "description": "Reverse DNS API server address.\n"
                    },
                    "state": {
                        "type": "string",
                        "description": "Indicates the current state of the zone.\n"
                    }
                },
                "type": "object"
            }
        },
        "proxmoxve:sdn/zone/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.sdn.zone.Vxlan(\"example\", {\n    resourceId: \"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.sdn.zone.Vxlan(\"example\",\n    resource_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.Sdn.Zone.Vxlan(\"example\", new()\n    {\n        ResourceId = \"vxlan1\",\n        Peers = new[]\n        {\n            \"10.0.0.1\",\n            \"10.0.0.2\",\n            \"10.0.0.3\",\n        },\n        Mtu = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1450) (example.pp:3,16-20)),\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/v8/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.NewVxlan(ctx, \"example\", \u0026sdn.VxlanArgs{\n\t\t\tResourceId: 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.sdn.Vxlan;\nimport io.muehlbachler.pulumi.proxmoxve.sdn.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            .resourceId(\"vxlan1\")\n            .peers(            \n                \"10.0.0.1\",\n                \"10.0.0.2\",\n                \"10.0.0.3\")\n            .mtu(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1450) (example.pp:3,16-20)))\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:sdn/zone:Vxlan\n    properties:\n      resourceId: 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\nVXLAN SDN zone can be imported using its unique identifier (zone ID)\n\n```sh\n$ pulumi import proxmoxve:sdn/zone/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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN zone.\n"
                },
                "reverseDns": {
                    "type": "string",
                    "description": "Reverse DNS API server address.\n"
                },
                "state": {
                    "type": "string",
                    "description": "Indicates the current state of the zone.\n"
                }
            },
            "required": [
                "resourceId",
                "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN zone.\n"
                },
                "reverseDns": {
                    "type": "string",
                    "description": "Reverse DNS API server address.\n"
                }
            },
            "requiredInputs": [
                "resourceId",
                "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"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The unique identifier of the SDN zone.\n"
                    },
                    "reverseDns": {
                        "type": "string",
                        "description": "Reverse DNS API server address.\n"
                    },
                    "state": {
                        "type": "string",
                        "description": "Indicates the current state of the zone.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "proxmox_virtual_environment_sdn_zone_vxlan"
                }
            ]
        },
        "proxmoxve:sdn/zone/vxlanLegacy:VxlanLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.sdn/zone.Vxlan`\" pulumi-lang-dotnet=\"`proxmoxve.sdn/zone.Vxlan`\" pulumi-lang-go=\"`sdn/zone.Vxlan`\" pulumi-lang-python=\"`sdn/zone.Vxlan`\" pulumi-lang-yaml=\"`proxmoxve.sdn/zone.Vxlan`\" pulumi-lang-java=\"`proxmoxve.sdn/zone.Vxlan`\"\u003e`proxmoxve.sdn/zone.Vxlan`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nVXLAN 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.sdn.zone.VxlanLegacy(\"example\", {\n    resourceId: \"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.sdn.zone.VxlanLegacy(\"example\",\n    resource_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.Sdn.Zone.VxlanLegacy(\"example\", new()\n    {\n        ResourceId = \"vxlan1\",\n        Peers = new[]\n        {\n            \"10.0.0.1\",\n            \"10.0.0.2\",\n            \"10.0.0.3\",\n        },\n        Mtu = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1450) (example.pp:3,16-20)),\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/v8/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.NewVxlanLegacy(ctx, \"example\", \u0026sdn.VxlanLegacyArgs{\n\t\t\tResourceId: 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.sdn.VxlanLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.sdn.VxlanLegacyArgs;\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 VxlanLegacy(\"example\", VxlanLegacyArgs.builder()\n            .resourceId(\"vxlan1\")\n            .peers(            \n                \"10.0.0.1\",\n                \"10.0.0.2\",\n                \"10.0.0.3\")\n            .mtu(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1450) (example.pp:3,16-20)))\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:sdn/zone:VxlanLegacy\n    properties:\n      resourceId: 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\nVXLAN SDN zone can be imported using its unique identifier (zone ID)\n\n```sh\n$ pulumi import proxmoxve:sdn/zone/vxlanLegacy:VxlanLegacy 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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN zone.\n"
                },
                "reverseDns": {
                    "type": "string",
                    "description": "Reverse DNS API server address.\n"
                },
                "state": {
                    "type": "string",
                    "description": "Indicates the current state of the zone.\n"
                }
            },
            "required": [
                "resourceId",
                "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the SDN zone.\n"
                },
                "reverseDns": {
                    "type": "string",
                    "description": "Reverse DNS API server address.\n"
                }
            },
            "requiredInputs": [
                "resourceId",
                "peers"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering VxlanLegacy 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"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The unique identifier of the SDN zone.\n"
                    },
                    "reverseDns": {
                        "type": "string",
                        "description": "Reverse DNS API server address.\n"
                    },
                    "state": {
                        "type": "string",
                        "description": "Indicates the current state of the zone.\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    resourceId: \"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    resource_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        ResourceId = \"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 = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(5) (example.pp:14,27-28)),\n            KeepDaily = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(7) (example.pp:15,27-28)),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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\tResourceId: 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            .resourceId(\"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(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(5) (example.pp:14,27-28)))\n                .keepDaily(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(7) (example.pp:15,27-28)))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:storage:Cifs\n    properties:\n      resourceId: 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\n## Import\n\n!/usr/bin/env sh\nStorage can be imported using its identifier, e.g.:\n\n```sh\n$ pulumi import proxmoxve:storage/cifs:Cifs example local-cifs\n```\n\n",
            "properties": {
                "backups": {
                    "$ref": "#/types/proxmoxve:storage/CifsBackups:CifsBackups",
                    "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"
                },
                "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the storage.\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",
                "resourceId",
                "nodes",
                "password",
                "server",
                "share",
                "shared",
                "username"
            ],
            "inputProperties": {
                "backups": {
                    "$ref": "#/types/proxmoxve:storage/CifsBackups:CifsBackups",
                    "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"
                },
                "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the storage.\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": [
                "resourceId",
                "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"
                    },
                    "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"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The unique identifier of the storage.\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"
            },
            "aliases": [
                {
                    "type": "proxmox_virtual_environment_storage_cifs"
                }
            ]
        },
        "proxmoxve:storage/cifsLegacy:CifsLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.storage.Cifs`\" pulumi-lang-dotnet=\"`proxmoxve.storage.Cifs`\" pulumi-lang-go=\"`storage.Cifs`\" pulumi-lang-python=\"`storage.Cifs`\" pulumi-lang-yaml=\"`proxmoxve.storage.Cifs`\" pulumi-lang-java=\"`proxmoxve.storage.Cifs`\"\u003e`proxmoxve.storage.Cifs`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages 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.CifsLegacy(\"example\", {\n    resourceId: \"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.CifsLegacy(\"example\",\n    resource_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.CifsLegacy(\"example\", new()\n    {\n        ResourceId = \"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.CifsLegacyBackupsArgs\n        {\n            MaxProtectedBackups = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(5) (example.pp:14,27-28)),\n            KeepDaily = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(7) (example.pp:15,27-28)),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.NewCifsLegacy(ctx, \"example\", \u0026storage.CifsLegacyArgs{\n\t\t\tResourceId: 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.CifsLegacyBackupsArgs{\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.CifsLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.storage.CifsLegacyArgs;\nimport com.pulumi.proxmoxve.storage.inputs.CifsLegacyBackupsArgs;\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 CifsLegacy(\"example\", CifsLegacyArgs.builder()\n            .resourceId(\"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(CifsLegacyBackupsArgs.builder()\n                .maxProtectedBackups(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(5) (example.pp:14,27-28)))\n                .keepDaily(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(7) (example.pp:15,27-28)))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:storage:CifsLegacy\n    properties:\n      resourceId: 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\n## Import\n\n!/usr/bin/env sh\nStorage can be imported using its identifier, e.g.:\n\n```sh\n$ pulumi import proxmoxve:storage/cifsLegacy:CifsLegacy example local-cifs\n```\n\n",
            "properties": {
                "backups": {
                    "$ref": "#/types/proxmoxve:storage/CifsLegacyBackups:CifsLegacyBackups",
                    "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"
                },
                "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the storage.\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",
                "resourceId",
                "nodes",
                "password",
                "server",
                "share",
                "shared",
                "username"
            ],
            "inputProperties": {
                "backups": {
                    "$ref": "#/types/proxmoxve:storage/CifsLegacyBackups:CifsLegacyBackups",
                    "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"
                },
                "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the storage.\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": [
                "resourceId",
                "password",
                "server",
                "share",
                "username"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering CifsLegacy resources.\n",
                "properties": {
                    "backups": {
                        "$ref": "#/types/proxmoxve:storage/CifsLegacyBackups:CifsLegacyBackups",
                        "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"
                    },
                    "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"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The unique identifier of the storage.\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    resourceId: \"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    resource_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        ResourceId = \"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 = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(5) (example.pp:9,27-28)),\n            KeepDaily = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(7) (example.pp:10,27-28)),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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\tResourceId: 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            .resourceId(\"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(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(5) (example.pp:9,27-28)))\n                .keepDaily(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(7) (example.pp:10,27-28)))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:storage:Directory\n    properties:\n      resourceId: 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\n## Import\n\n!/usr/bin/env sh\nStorage can be imported using its identifier, e.g.:\n\n```sh\n$ pulumi import proxmoxve:storage/directory:Directory example local-dir\n```\n\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"
                },
                "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the storage.\n"
                },
                "shared": {
                    "type": "boolean",
                    "description": "Whether the storage is shared across all nodes.\n"
                }
            },
            "required": [
                "contents",
                "disable",
                "resourceId",
                "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"
                },
                "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the storage.\n"
                },
                "shared": {
                    "type": "boolean",
                    "description": "Whether the storage is shared across all nodes.\n"
                }
            },
            "requiredInputs": [
                "resourceId",
                "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"
                    },
                    "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"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The unique identifier of the storage.\n"
                    },
                    "shared": {
                        "type": "boolean",
                        "description": "Whether the storage is shared across all nodes.\n"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "proxmox_virtual_environment_storage_directory"
                }
            ]
        },
        "proxmoxve:storage/directoryLegacy:DirectoryLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.storage.Directory`\" pulumi-lang-dotnet=\"`proxmoxve.storage.Directory`\" pulumi-lang-go=\"`storage.Directory`\" pulumi-lang-python=\"`storage.Directory`\" pulumi-lang-yaml=\"`proxmoxve.storage.Directory`\" pulumi-lang-java=\"`proxmoxve.storage.Directory`\"\u003e`proxmoxve.storage.Directory`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages 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.DirectoryLegacy(\"example\", {\n    resourceId: \"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.DirectoryLegacy(\"example\",\n    resource_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.DirectoryLegacy(\"example\", new()\n    {\n        ResourceId = \"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.DirectoryLegacyBackupsArgs\n        {\n            MaxProtectedBackups = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(5) (example.pp:9,27-28)),\n            KeepDaily = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(7) (example.pp:10,27-28)),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.NewDirectoryLegacy(ctx, \"example\", \u0026storage.DirectoryLegacyArgs{\n\t\t\tResourceId: 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.DirectoryLegacyBackupsArgs{\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.DirectoryLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.storage.DirectoryLegacyArgs;\nimport com.pulumi.proxmoxve.storage.inputs.DirectoryLegacyBackupsArgs;\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 DirectoryLegacy(\"example\", DirectoryLegacyArgs.builder()\n            .resourceId(\"example-dir\")\n            .path(\"/var/lib/vz\")\n            .nodes(\"pve\")\n            .contents(\"images\")\n            .shared(true)\n            .disable(false)\n            .backups(DirectoryLegacyBackupsArgs.builder()\n                .maxProtectedBackups(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(5) (example.pp:9,27-28)))\n                .keepDaily(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(7) (example.pp:10,27-28)))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:storage:DirectoryLegacy\n    properties:\n      resourceId: 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\n## Import\n\n!/usr/bin/env sh\nStorage can be imported using its identifier, e.g.:\n\n```sh\n$ pulumi import proxmoxve:storage/directoryLegacy:DirectoryLegacy example local-dir\n```\n\n",
            "properties": {
                "backups": {
                    "$ref": "#/types/proxmoxve:storage/DirectoryLegacyBackups:DirectoryLegacyBackups",
                    "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"
                },
                "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the storage.\n"
                },
                "shared": {
                    "type": "boolean",
                    "description": "Whether the storage is shared across all nodes.\n"
                }
            },
            "required": [
                "contents",
                "disable",
                "resourceId",
                "nodes",
                "path",
                "shared"
            ],
            "inputProperties": {
                "backups": {
                    "$ref": "#/types/proxmoxve:storage/DirectoryLegacyBackups:DirectoryLegacyBackups",
                    "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"
                },
                "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the storage.\n"
                },
                "shared": {
                    "type": "boolean",
                    "description": "Whether the storage is shared across all nodes.\n"
                }
            },
            "requiredInputs": [
                "resourceId",
                "path"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DirectoryLegacy resources.\n",
                "properties": {
                    "backups": {
                        "$ref": "#/types/proxmoxve:storage/DirectoryLegacyBackups:DirectoryLegacyBackups",
                        "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"
                    },
                    "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"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The unique identifier of the storage.\n"
                    },
                    "shared": {
                        "type": "boolean",
                        "description": "Whether the storage is shared across all nodes.\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    resourceId: \"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    resource_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        ResourceId = \"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/v8/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\tResourceId: 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            .resourceId(\"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      resourceId: example-lvm\n      nodes:\n        - pve\n      volumeGroup: vg0\n      contents:\n        - images\n      wipeRemovedVolumes: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n!/usr/bin/env sh\nStorage can be imported using its identifier, e.g.:\n\n```sh\n$ pulumi import proxmoxve:storage/lvm:Lvm example local-lvm\n```\n\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"
                },
                "nodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of nodes where this storage is available.\n"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the storage.\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",
                "resourceId",
                "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"
                },
                "nodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of nodes where this storage is available.\n"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the storage.\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": [
                "resourceId",
                "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"
                    },
                    "nodes": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of nodes where this storage is available.\n"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The unique identifier of the storage.\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"
            },
            "aliases": [
                {
                    "type": "proxmox_virtual_environment_storage_lvm"
                }
            ]
        },
        "proxmoxve:storage/lvmLegacy:LvmLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.storage.Lvm`\" pulumi-lang-dotnet=\"`proxmoxve.storage.Lvm`\" pulumi-lang-go=\"`storage.Lvm`\" pulumi-lang-python=\"`storage.Lvm`\" pulumi-lang-yaml=\"`proxmoxve.storage.Lvm`\" pulumi-lang-java=\"`proxmoxve.storage.Lvm`\"\u003e`proxmoxve.storage.Lvm`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages 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.LvmLegacy(\"example\", {\n    resourceId: \"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.LvmLegacy(\"example\",\n    resource_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.LvmLegacy(\"example\", new()\n    {\n        ResourceId = \"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/v8/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.NewLvmLegacy(ctx, \"example\", \u0026storage.LvmLegacyArgs{\n\t\t\tResourceId: 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.LvmLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.storage.LvmLegacyArgs;\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 LvmLegacy(\"example\", LvmLegacyArgs.builder()\n            .resourceId(\"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:LvmLegacy\n    properties:\n      resourceId: example-lvm\n      nodes:\n        - pve\n      volumeGroup: vg0\n      contents:\n        - images\n      wipeRemovedVolumes: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n!/usr/bin/env sh\nStorage can be imported using its identifier, e.g.:\n\n```sh\n$ pulumi import proxmoxve:storage/lvmLegacy:LvmLegacy example local-lvm\n```\n\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"
                },
                "nodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of nodes where this storage is available.\n"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the storage.\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",
                "resourceId",
                "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"
                },
                "nodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of nodes where this storage is available.\n"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the storage.\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": [
                "resourceId",
                "volumeGroup"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering LvmLegacy 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"
                    },
                    "nodes": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of nodes where this storage is available.\n"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The unique identifier of the storage.\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    resourceId: \"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    resource_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        ResourceId = \"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/v8/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\tResourceId: 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            .resourceId(\"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      resourceId: example-lvmthin\n      nodes:\n        - pve\n      volumeGroup: vg0\n      thinPool: data\n      contents:\n        - images\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n!/usr/bin/env sh\nStorage can be imported using its identifier, e.g.:\n\n```sh\n$ pulumi import proxmoxve:storage/lvmthin:Lvmthin example local-lvm-thin\n```\n\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"
                },
                "nodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of nodes where this storage is available.\n"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the storage.\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",
                "resourceId",
                "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"
                },
                "nodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of nodes where this storage is available.\n"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the storage.\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": [
                "resourceId",
                "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"
                    },
                    "nodes": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of nodes where this storage is available.\n"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The unique identifier of the storage.\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"
            },
            "aliases": [
                {
                    "type": "proxmox_virtual_environment_storage_lvmthin"
                }
            ]
        },
        "proxmoxve:storage/lvmthinLegacy:LvmthinLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.storage.Lvmthin`\" pulumi-lang-dotnet=\"`proxmoxve.storage.Lvmthin`\" pulumi-lang-go=\"`storage.Lvmthin`\" pulumi-lang-python=\"`storage.Lvmthin`\" pulumi-lang-yaml=\"`proxmoxve.storage.Lvmthin`\" pulumi-lang-java=\"`proxmoxve.storage.Lvmthin`\"\u003e`proxmoxve.storage.Lvmthin`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages 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.LvmthinLegacy(\"example\", {\n    resourceId: \"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.LvmthinLegacy(\"example\",\n    resource_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.LvmthinLegacy(\"example\", new()\n    {\n        ResourceId = \"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/v8/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.NewLvmthinLegacy(ctx, \"example\", \u0026storage.LvmthinLegacyArgs{\n\t\t\tResourceId: 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.LvmthinLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.storage.LvmthinLegacyArgs;\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 LvmthinLegacy(\"example\", LvmthinLegacyArgs.builder()\n            .resourceId(\"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:LvmthinLegacy\n    properties:\n      resourceId: example-lvmthin\n      nodes:\n        - pve\n      volumeGroup: vg0\n      thinPool: data\n      contents:\n        - images\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n!/usr/bin/env sh\nStorage can be imported using its identifier, e.g.:\n\n```sh\n$ pulumi import proxmoxve:storage/lvmthinLegacy:LvmthinLegacy example local-lvm-thin\n```\n\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"
                },
                "nodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of nodes where this storage is available.\n"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the storage.\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",
                "resourceId",
                "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"
                },
                "nodes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of nodes where this storage is available.\n"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the storage.\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": [
                "resourceId",
                "thinPool",
                "volumeGroup"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering LvmthinLegacy 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"
                    },
                    "nodes": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of nodes where this storage is available.\n"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The unique identifier of the storage.\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    resourceId: \"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    resource_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        ResourceId = \"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 = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(5) (example.pp:11,27-28)),\n            KeepDaily = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(7) (example.pp:12,27-28)),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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\tResourceId: 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            .resourceId(\"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(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(5) (example.pp:11,27-28)))\n                .keepDaily(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(7) (example.pp:12,27-28)))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:storage:Nfs\n    properties:\n      resourceId: 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\n## Import\n\n!/usr/bin/env sh\nStorage can be imported using its identifier, e.g.:\n\n```sh\n$ pulumi import proxmoxve:storage/nfs:Nfs example local-nfs\n```\n\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"
                },
                "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the storage.\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",
                "resourceId",
                "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"
                },
                "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the storage.\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",
                "resourceId",
                "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"
                    },
                    "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"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The unique identifier of the storage.\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"
            },
            "aliases": [
                {
                    "type": "proxmox_virtual_environment_storage_nfs"
                }
            ]
        },
        "proxmoxve:storage/nfsLegacy:NfsLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.storage.Nfs`\" pulumi-lang-dotnet=\"`proxmoxve.storage.Nfs`\" pulumi-lang-go=\"`storage.Nfs`\" pulumi-lang-python=\"`storage.Nfs`\" pulumi-lang-yaml=\"`proxmoxve.storage.Nfs`\" pulumi-lang-java=\"`proxmoxve.storage.Nfs`\"\u003e`proxmoxve.storage.Nfs`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages 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.NfsLegacy(\"example\", {\n    resourceId: \"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.NfsLegacy(\"example\",\n    resource_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.NfsLegacy(\"example\", new()\n    {\n        ResourceId = \"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.NfsLegacyBackupsArgs\n        {\n            MaxProtectedBackups = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(5) (example.pp:11,27-28)),\n            KeepDaily = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(7) (example.pp:12,27-28)),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.NewNfsLegacy(ctx, \"example\", \u0026storage.NfsLegacyArgs{\n\t\t\tResourceId: 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.NfsLegacyBackupsArgs{\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.NfsLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.storage.NfsLegacyArgs;\nimport com.pulumi.proxmoxve.storage.inputs.NfsLegacyBackupsArgs;\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 NfsLegacy(\"example\", NfsLegacyArgs.builder()\n            .resourceId(\"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(NfsLegacyBackupsArgs.builder()\n                .maxProtectedBackups(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(5) (example.pp:11,27-28)))\n                .keepDaily(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(7) (example.pp:12,27-28)))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:storage:NfsLegacy\n    properties:\n      resourceId: 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\n## Import\n\n!/usr/bin/env sh\nStorage can be imported using its identifier, e.g.:\n\n```sh\n$ pulumi import proxmoxve:storage/nfsLegacy:NfsLegacy example local-nfs\n```\n\n",
            "properties": {
                "backups": {
                    "$ref": "#/types/proxmoxve:storage/NfsLegacyBackups:NfsLegacyBackups",
                    "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"
                },
                "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the storage.\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",
                "resourceId",
                "nodes",
                "server",
                "shared"
            ],
            "inputProperties": {
                "backups": {
                    "$ref": "#/types/proxmoxve:storage/NfsLegacyBackups:NfsLegacyBackups",
                    "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"
                },
                "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the storage.\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",
                "resourceId",
                "server"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering NfsLegacy resources.\n",
                "properties": {
                    "backups": {
                        "$ref": "#/types/proxmoxve:storage/NfsLegacyBackups:NfsLegacyBackups",
                        "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"
                    },
                    "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"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The unique identifier of the storage.\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    resourceId: \"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    resource_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        ResourceId = \"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/v8/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\tResourceId: 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            .resourceId(\"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      resourceId: 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\n## Import\n\n!/usr/bin/env sh\nStorage can be imported using its identifier, e.g.:\n\n```sh\n$ pulumi import proxmoxve:storage/pbs:Pbs example pbs-backup\n```\n\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`generateEncryptionKey`\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`generatedEncryptionKey`\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`encryptionKey`\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`generateEncryptionKey`\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
                },
                "resourceId": {
                    "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",
                "resourceId",
                "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`generateEncryptionKey`\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`generatedEncryptionKey`\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`encryptionKey`\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
                },
                "resourceId": {
                    "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",
                "resourceId",
                "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`generateEncryptionKey`\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`generatedEncryptionKey`\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`encryptionKey`\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`generateEncryptionKey`\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
                    },
                    "resourceId": {
                        "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"
            },
            "aliases": [
                {
                    "type": "proxmox_virtual_environment_storage_pbs"
                }
            ]
        },
        "proxmoxve:storage/pbsLegacy:PbsLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.storage.Pbs`\" pulumi-lang-dotnet=\"`proxmoxve.storage.Pbs`\" pulumi-lang-go=\"`storage.Pbs`\" pulumi-lang-python=\"`storage.Pbs`\" pulumi-lang-yaml=\"`proxmoxve.storage.Pbs`\" pulumi-lang-java=\"`proxmoxve.storage.Pbs`\"\u003e`proxmoxve.storage.Pbs`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages 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.PbsLegacy(\"example\", {\n    resourceId: \"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.PbsLegacy(\"example\",\n    resource_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.PbsLegacy(\"example\", new()\n    {\n        ResourceId = \"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/v8/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.NewPbsLegacy(ctx, \"example\", \u0026storage.PbsLegacyArgs{\n\t\t\tResourceId: 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.PbsLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.storage.PbsLegacyArgs;\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 PbsLegacy(\"example\", PbsLegacyArgs.builder()\n            .resourceId(\"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:PbsLegacy\n    properties:\n      resourceId: 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\n## Import\n\n!/usr/bin/env sh\nStorage can be imported using its identifier, e.g.:\n\n```sh\n$ pulumi import proxmoxve:storage/pbsLegacy:PbsLegacy example pbs-backup\n```\n\n",
            "properties": {
                "backups": {
                    "$ref": "#/types/proxmoxve:storage/PbsLegacyBackups:PbsLegacyBackups",
                    "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`generateEncryptionKey`\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`generatedEncryptionKey`\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`encryptionKey`\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`generateEncryptionKey`\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
                },
                "resourceId": {
                    "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",
                "resourceId",
                "nodes",
                "password",
                "server",
                "shared",
                "username"
            ],
            "inputProperties": {
                "backups": {
                    "$ref": "#/types/proxmoxve:storage/PbsLegacyBackups:PbsLegacyBackups",
                    "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`generateEncryptionKey`\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`generatedEncryptionKey`\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`encryptionKey`\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
                },
                "resourceId": {
                    "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",
                "resourceId",
                "password",
                "server",
                "username"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering PbsLegacy resources.\n",
                "properties": {
                    "backups": {
                        "$ref": "#/types/proxmoxve:storage/PbsLegacyBackups:PbsLegacyBackups",
                        "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`generateEncryptionKey`\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`generatedEncryptionKey`\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`encryptionKey`\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`generateEncryptionKey`\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
                    },
                    "resourceId": {
                        "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    resourceId: \"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    resource_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        ResourceId = \"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/v8/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\tResourceId: 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            .resourceId(\"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      resourceId: 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\n## Import\n\n!/usr/bin/env sh\nStorage can be imported using its identifier, e.g.:\n\n```sh\n$ pulumi import proxmoxve:storage/zfspool:Zfspool example local-zfs\n```\n\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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the storage.\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"
                }
            },
            "required": [
                "contents",
                "disable",
                "resourceId",
                "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the storage.\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"
                }
            },
            "requiredInputs": [
                "resourceId",
                "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"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The unique identifier of the storage.\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"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "proxmox_virtual_environment_storage_zfspool"
                }
            ]
        },
        "proxmoxve:storage/zfspoolLegacy:ZfspoolLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.storage.Zfspool`\" pulumi-lang-dotnet=\"`proxmoxve.storage.Zfspool`\" pulumi-lang-go=\"`storage.Zfspool`\" pulumi-lang-python=\"`storage.Zfspool`\" pulumi-lang-yaml=\"`proxmoxve.storage.Zfspool`\" pulumi-lang-java=\"`proxmoxve.storage.Zfspool`\"\u003e`proxmoxve.storage.Zfspool`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nManages 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.ZfspoolLegacy(\"example\", {\n    resourceId: \"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.ZfspoolLegacy(\"example\",\n    resource_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.ZfspoolLegacy(\"example\", new()\n    {\n        ResourceId = \"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/v8/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.NewZfspoolLegacy(ctx, \"example\", \u0026storage.ZfspoolLegacyArgs{\n\t\t\tResourceId: 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.ZfspoolLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.storage.ZfspoolLegacyArgs;\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 ZfspoolLegacy(\"example\", ZfspoolLegacyArgs.builder()\n            .resourceId(\"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:ZfspoolLegacy\n    properties:\n      resourceId: 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\n## Import\n\n!/usr/bin/env sh\nStorage can be imported using its identifier, e.g.:\n\n```sh\n$ pulumi import proxmoxve:storage/zfspoolLegacy:ZfspoolLegacy example local-zfs\n```\n\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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the storage.\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"
                }
            },
            "required": [
                "contents",
                "disable",
                "resourceId",
                "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"
                },
                "resourceId": {
                    "type": "string",
                    "description": "The unique identifier of the storage.\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"
                }
            },
            "requiredInputs": [
                "resourceId",
                "zfsPool"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ZfspoolLegacy 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"
                    },
                    "resourceId": {
                        "type": "string",
                        "description": "The unique identifier of the storage.\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"
                    }
                },
                "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.UserLegacy(\"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.UserLegacy(\"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.Index.UserLegacy(\"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/v8/go/proxmoxve\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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 := proxmoxve.NewUserLegacy(ctx, \"user\", \u0026proxmoxve.UserLegacyArgs{\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.UserLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.UserLegacyArgs;\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 UserLegacy(\"user\", UserLegacyArgs.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:UserLegacy\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\nTokens can be imported using their identifiers in the format `user_id!token_name`, 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:user/tokenLegacy:TokenLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.user.Token`\" pulumi-lang-dotnet=\"`proxmoxve.user.Token`\" pulumi-lang-go=\"`user.Token`\" pulumi-lang-python=\"`user.Token`\" pulumi-lang-yaml=\"`proxmoxve.user.Token`\" pulumi-lang-java=\"`proxmoxve.user.Token`\"\u003e`proxmoxve.user.Token`\u003c/span\u003e instead. This resource will be removed in v1.0.\n\nUser 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.UserLegacy(\"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.TokenLegacy(\"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.UserLegacy(\"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.TokenLegacy(\"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.Index.UserLegacy(\"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.TokenLegacy(\"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/v8/go/proxmoxve\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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 := proxmoxve.NewUserLegacy(ctx, \"user\", \u0026proxmoxve.UserLegacyArgs{\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.NewTokenLegacy(ctx, \"user_token\", \u0026user.TokenLegacyArgs{\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.UserLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.UserLegacyArgs;\nimport io.muehlbachler.pulumi.proxmoxve.user.TokenLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.user.TokenLegacyArgs;\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 UserLegacy(\"user\", UserLegacyArgs.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 TokenLegacy(\"userToken\", TokenLegacyArgs.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:UserLegacy\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:TokenLegacy\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\nTokens can be imported using they identifiers in format `user_id!token_name` format, e.g.:\n\n```sh\n$ pulumi import proxmoxve:user/tokenLegacy:TokenLegacy 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 TokenLegacy 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"
            }
        }
    },
    "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 dataProxmoxAcmeAccount = 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 enumerate(all.accounts)}\npulumi.export(\"dataProxmoxAcmeAccount\", 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        [\"dataProxmoxAcmeAccount\"] = 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/getAccountLegacy:getAccountLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.acme.Account`\" pulumi-lang-dotnet=\"`proxmoxve.acme.Account`\" pulumi-lang-go=\"`acme.Account`\" pulumi-lang-python=\"`acme.Account`\" pulumi-lang-yaml=\"`proxmoxve.acme.Account`\" pulumi-lang-java=\"`proxmoxve.acme.Account`\"\u003e`proxmoxve.acme.Account`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieves 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.getAccountsLegacy({});\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.getAccountLegacy({\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_legacy()\n# ...which we will go through in order to fetch the whole data on each account.\nexample = {__key: proxmoxve.acme.get_account_legacy(name=__value) for __key, __value in enumerate(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.GetAccountsLegacy.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 getAccountLegacy.\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 getAccountLegacy.\n",
                "properties": {
                    "account": {
                        "$ref": "#/types/proxmoxve:acme/getAccountLegacyAccount:getAccountLegacyAccount",
                        "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 dataProxmoxAcmeAccounts = example.then(example =\u003e example.accounts);\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.acme.get_accounts()\npulumi.export(\"dataProxmoxAcmeAccounts\", 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        [\"dataProxmoxAcmeAccounts\"] = example.Apply(getAccountsResult =\u003e getAccountsResult.Accounts),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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(\"dataProxmoxAcmeAccounts\", 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(\"dataProxmoxAcmeAccounts\", example.accounts());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: proxmoxve:acme:getAccounts\n      arguments: {}\noutputs:\n  dataProxmoxAcmeAccounts: ${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/getAccountsLegacy:getAccountsLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.acme.getAccounts`\" pulumi-lang-dotnet=\"`proxmoxve.acme.getAccounts`\" pulumi-lang-go=\"`acme.getAccounts`\" pulumi-lang-python=\"`acme_get_accounts`\" pulumi-lang-yaml=\"`proxmoxve.acme.getAccounts`\" pulumi-lang-java=\"`proxmoxve.acme.getAccounts`\"\u003e`proxmoxve.acme.getAccounts`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieves 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.getAccountsLegacy({});\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_legacy()\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.GetAccountsLegacy.Invoke();\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentAcmeAccounts\"] = example.Apply(getAccountsLegacyResult =\u003e getAccountsLegacyResult.Accounts),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.GetAccountsLegacy(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.getAccountsLegacy(%!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:getAccountsLegacy\n      arguments: {}\noutputs:\n  dataProxmoxVirtualEnvironmentAcmeAccounts: ${example.accounts}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "outputs": {
                "description": "A collection of values returned by getAccountsLegacy.\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 dataProxmoxAcmePlugin = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.acme.get_plugin(plugin=\"standalone\")\npulumi.export(\"dataProxmoxAcmePlugin\", 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        [\"dataProxmoxAcmePlugin\"] = example,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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(\"dataProxmoxAcmePlugin\", 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(\"dataProxmoxAcmePlugin\", example);\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: proxmoxve:acme:getPlugin\n      arguments:\n        plugin: standalone\noutputs:\n  dataProxmoxAcmePlugin: ${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/getPluginLegacy:getPluginLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.acme.getPlugin`\" pulumi-lang-dotnet=\"`proxmoxve.acme.getPlugin`\" pulumi-lang-go=\"`acme.getPlugin`\" pulumi-lang-python=\"`acme_get_plugin`\" pulumi-lang-yaml=\"`proxmoxve.acme.getPlugin`\" pulumi-lang-java=\"`proxmoxve.acme.getPlugin`\"\u003e`proxmoxve.acme.getPlugin`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieves 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.getPluginLegacy({\n    plugin: \"standalone\",\n});\nexport const dataProxmoxVirtualEnvironmentAcmePlugin = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.acme.get_plugin_legacy(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.GetPluginLegacy.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/v8/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.GetPluginLegacy(ctx, \u0026acme.GetPluginLegacyArgs{\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.GetPluginLegacyArgs;\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.getPluginLegacy(GetPluginLegacyArgs.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:getPluginLegacy\n      arguments:\n        plugin: standalone\noutputs:\n  dataProxmoxVirtualEnvironmentAcmePlugin: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getPluginLegacy.\n",
                "properties": {
                    "plugin": {
                        "type": "string",
                        "description": "ACME Plugin ID name.\n"
                    }
                },
                "type": "object",
                "required": [
                    "plugin"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getPluginLegacy.\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 dataProxmoxAcmePlugins = example.then(example =\u003e example.plugins);\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.acme.get_plugins()\npulumi.export(\"dataProxmoxAcmePlugins\", 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        [\"dataProxmoxAcmePlugins\"] = example.Apply(getPluginsResult =\u003e getPluginsResult.Plugins),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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(\"dataProxmoxAcmePlugins\", 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(\"dataProxmoxAcmePlugins\", example.plugins());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: proxmoxve:acme:getPlugins\n      arguments: {}\noutputs:\n  dataProxmoxAcmePlugins: ${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:acme/getPluginsLegacy:getPluginsLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.acme.getPlugins`\" pulumi-lang-dotnet=\"`proxmoxve.acme.getPlugins`\" pulumi-lang-go=\"`acme.getPlugins`\" pulumi-lang-python=\"`acme_get_plugins`\" pulumi-lang-yaml=\"`proxmoxve.acme.getPlugins`\" pulumi-lang-java=\"`proxmoxve.acme.getPlugins`\"\u003e`proxmoxve.acme.getPlugins`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieves 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.getPluginsLegacy({});\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_legacy()\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.GetPluginsLegacy.Invoke();\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentAcmePlugins\"] = example.Apply(getPluginsLegacyResult =\u003e getPluginsLegacyResult.Plugins),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.GetPluginsLegacy(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.getPluginsLegacy(%!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:getPluginsLegacy\n      arguments: {}\noutputs:\n  dataProxmoxVirtualEnvironmentAcmePlugins: ${example.plugins}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "outputs": {
                "description": "A collection of values returned by getPluginsLegacy.\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/getPluginsLegacyPlugin:getPluginsLegacyPlugin"
                        },
                        "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 proxmoxAptRepository = 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(\"proxmoxAptRepository\", 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 = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(0) (example.pp:2,14-15)),\n        Node = \"pve\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"proxmoxAptRepository\"] = example,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.LookupRepository(ctx, \u0026apt.LookupRepositoryArgs{\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(\"proxmoxAptRepository\", 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(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(0) (example.pp:2,14-15)))\n            .node(\"pve\")\n            .build());\n\n        ctx.export(\"proxmoxAptRepository\", 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  proxmoxAptRepository: ${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/getRepositoryLegacy:getRepositoryLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.apt.Repository`\" pulumi-lang-dotnet=\"`proxmoxve.apt.Repository`\" pulumi-lang-go=\"`apt.Repository`\" pulumi-lang-python=\"`apt.Repository`\" pulumi-lang-yaml=\"`proxmoxve.apt.Repository`\" pulumi-lang-java=\"`proxmoxve.apt.Repository`\"\u003e`proxmoxve.apt.Repository`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieves 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.getRepositoryLegacy({\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_legacy(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.GetRepositoryLegacy.Invoke(new()\n    {\n        FilePath = \"/etc/apt/sources.list\",\n        Index = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(0) (example.pp:2,14-15)),\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/v8/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.LookupRepositoryLegacy(ctx, \u0026apt.LookupRepositoryLegacyArgs{\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.GetRepositoryLegacyArgs;\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.getRepositoryLegacy(GetRepositoryLegacyArgs.builder()\n            .filePath(\"/etc/apt/sources.list\")\n            .index(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(0) (example.pp:2,14-15)))\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:getRepositoryLegacy\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 getRepositoryLegacy.\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 getRepositoryLegacy.\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 proxmoxAptStandardRepository = 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(\"proxmoxAptStandardRepository\", 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        [\"proxmoxAptStandardRepository\"] = example,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.LookupRepository(ctx, \u0026standard.LookupRepositoryArgs{\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(\"proxmoxAptStandardRepository\", 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(\"proxmoxAptStandardRepository\", 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  proxmoxAptStandardRepository: ${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:apt/standard/getRepositoryLegacy:getRepositoryLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.apt/standard.Repository`\" pulumi-lang-dotnet=\"`proxmoxve.apt/standard.Repository`\" pulumi-lang-go=\"`apt/standard.Repository`\" pulumi-lang-python=\"`apt/standard.Repository`\" pulumi-lang-yaml=\"`proxmoxve.apt/standard.Repository`\" pulumi-lang-java=\"`proxmoxve.apt/standard.Repository`\"\u003e`proxmoxve.apt/standard.Repository`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieves 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.getRepositoryLegacy({\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_legacy(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.GetRepositoryLegacy.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/v8/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.LookupRepositoryLegacy(ctx, \u0026standard.LookupRepositoryLegacyArgs{\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.GetRepositoryLegacyArgs;\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.getRepositoryLegacy(GetRepositoryLegacyArgs.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:getRepositoryLegacy\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 getRepositoryLegacy.\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 getRepositoryLegacy.\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:backup/getJobs:getJobs": {
            "description": "Retrieves the list of cluster-wide backup jobs.\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 all = proxmoxve.backup.getJobs({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nall = proxmoxve.backup.get_jobs()\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 all = ProxmoxVE.Backup.GetJobs.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/go/proxmoxve/backup\"\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 := backup.GetJobs(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.backup.BackupFunctions;\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 all = BackupFunctions.getJobs(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);\n\n    }\n}\n```\n```yaml\nvariables:\n  all:\n    fn::invoke:\n      function: proxmoxve:backup:getJobs\n      arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "outputs": {
                "description": "A collection of values returned by getJobs.\n",
                "properties": {
                    "id": {
                        "description": "Unique identifier for this data source.\n",
                        "type": "string"
                    },
                    "jobs": {
                        "description": "List of backup jobs.\n",
                        "items": {
                            "$ref": "#/types/proxmoxve:backup/getJobsJob:getJobsJob"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "id",
                    "jobs"
                ],
                "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 dataProxmoxHardwareMappingsPci = example_pci;\nexport const dataProxmoxHardwareMappingsUsb = 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(\"dataProxmoxHardwareMappingsPci\", example_pci)\npulumi.export(\"dataProxmoxHardwareMappingsUsb\", 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        [\"dataProxmoxHardwareMappingsPci\"] = example_pci,\n        [\"dataProxmoxHardwareMappingsUsb\"] = example_usb,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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(\"dataProxmoxHardwareMappingsPci\", example_pci)\n\t\tctx.Export(\"dataProxmoxHardwareMappingsUsb\", 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(\"dataProxmoxHardwareMappingsPci\", example_pci);\n        ctx.export(\"dataProxmoxHardwareMappingsUsb\", 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  dataProxmoxHardwareMappingsPci: ${[\"example-pci\"]}\n  dataProxmoxHardwareMappingsUsb: ${[\"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/getMappingsLegacy:getMappingsLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.hardware.getMappings`\" pulumi-lang-dotnet=\"`proxmoxve.hardware.getMappings`\" pulumi-lang-go=\"`hardware.getMappings`\" pulumi-lang-python=\"`hardware_get_mappings`\" pulumi-lang-yaml=\"`proxmoxve.hardware.getMappings`\" pulumi-lang-java=\"`proxmoxve.hardware.getMappings`\"\u003e`proxmoxve.hardware.getMappings`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieves 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.getMappingsLegacy({\n    checkNode: \"pve\",\n    type: \"dir\",\n});\nconst example_pci = proxmoxve.hardware.getMappingsLegacy({\n    checkNode: \"pve\",\n    type: \"pci\",\n});\nconst example_usb = proxmoxve.hardware.getMappingsLegacy({\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_legacy(check_node=\"pve\",\n    type=\"dir\")\nexample_pci = proxmoxve.hardware.get_mappings_legacy(check_node=\"pve\",\n    type=\"pci\")\nexample_usb = proxmoxve.hardware.get_mappings_legacy(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.GetMappingsLegacy.Invoke(new()\n    {\n        CheckNode = \"pve\",\n        Type = \"dir\",\n    });\n\n    var example_pci = ProxmoxVE.Hardware.GetMappingsLegacy.Invoke(new()\n    {\n        CheckNode = \"pve\",\n        Type = \"pci\",\n    });\n\n    var example_usb = ProxmoxVE.Hardware.GetMappingsLegacy.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/v8/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.GetMappingsLegacy(ctx, \u0026hardware.GetMappingsLegacyArgs{\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.GetMappingsLegacy(ctx, \u0026hardware.GetMappingsLegacyArgs{\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.GetMappingsLegacy(ctx, \u0026hardware.GetMappingsLegacyArgs{\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.GetMappingsLegacyArgs;\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.getMappingsLegacy(GetMappingsLegacyArgs.builder()\n            .checkNode(\"pve\")\n            .type(\"dir\")\n            .build());\n\n        final var example-pci = HardwareFunctions.getMappingsLegacy(GetMappingsLegacyArgs.builder()\n            .checkNode(\"pve\")\n            .type(\"pci\")\n            .build());\n\n        final var example-usb = HardwareFunctions.getMappingsLegacy(GetMappingsLegacyArgs.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:getMappingsLegacy\n      arguments:\n        checkNode: pve\n        type: dir\n  example-pci:\n    fn::invoke:\n      function: proxmoxve:hardware:getMappingsLegacy\n      arguments:\n        checkNode: pve\n        type: pci\n  example-usb:\n    fn::invoke:\n      function: proxmoxve:hardware:getMappingsLegacy\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 getMappingsLegacy.\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 getMappingsLegacy.\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/getMappingsLegacyCheck:getMappingsLegacyCheck"
                        },
                        "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/getPci:getPci": {
            "description": "Retrieves the list of PCI devices present on a specific Proxmox VE node. This is useful for discovering PCI devices available for passthrough or for configuring hardware mappings.\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 PCI devices on a node (using default blacklist)\nconst example = proxmoxve.hardware.getPci({\n    nodeName: \"pve\",\n});\n// List all PCI devices including bridges and memory controllers\nconst all = proxmoxve.hardware.getPci({\n    nodeName: \"pve\",\n    pciClassBlacklists: [],\n});\n// Find all NVIDIA GPUs (vendor ID 10de = NVIDIA, class 03 = display controller)\nconst gpus = proxmoxve.hardware.getPci({\n    nodeName: \"pve\",\n    pciClassBlacklists: [],\n    filters: {\n        vendorId: \"10de\",\n        \"class\": \"03\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# List all PCI devices on a node (using default blacklist)\nexample = proxmoxve.hardware.get_pci(node_name=\"pve\")\n# List all PCI devices including bridges and memory controllers\nall = proxmoxve.hardware.get_pci(node_name=\"pve\",\n    pci_class_blacklists=[])\n# Find all NVIDIA GPUs (vendor ID 10de = NVIDIA, class 03 = display controller)\ngpus = proxmoxve.hardware.get_pci(node_name=\"pve\",\n    pci_class_blacklists=[],\n    filters={\n        \"vendor_id\": \"10de\",\n        \"class_\": \"03\",\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 PCI devices on a node (using default blacklist)\n    var example = ProxmoxVE.Hardware.GetPci.Invoke(new()\n    {\n        NodeName = \"pve\",\n    });\n\n    // List all PCI devices including bridges and memory controllers\n    var all = ProxmoxVE.Hardware.GetPci.Invoke(new()\n    {\n        NodeName = \"pve\",\n        PciClassBlacklists = new() { },\n    });\n\n    // Find all NVIDIA GPUs (vendor ID 10de = NVIDIA, class 03 = display controller)\n    var gpus = ProxmoxVE.Hardware.GetPci.Invoke(new()\n    {\n        NodeName = \"pve\",\n        PciClassBlacklists = new() { },\n        Filters = new ProxmoxVE.Hardware.Inputs.GetPciFiltersInputArgs\n        {\n            VendorId = \"10de\",\n            Class = \"03\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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// List all PCI devices on a node (using default blacklist)\n\t\t_, err := hardware.GetPci(ctx, \u0026hardware.GetPciArgs{\n\t\t\tNodeName: \"pve\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// List all PCI devices including bridges and memory controllers\n\t\t_, err = hardware.GetPci(ctx, \u0026hardware.GetPciArgs{\n\t\t\tNodeName:           \"pve\",\n\t\t\tPciClassBlacklists: []interface{}{},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Find all NVIDIA GPUs (vendor ID 10de = NVIDIA, class 03 = display controller)\n\t\t_, err = hardware.GetPci(ctx, \u0026hardware.GetPciArgs{\n\t\t\tNodeName:           \"pve\",\n\t\t\tPciClassBlacklists: []interface{}{},\n\t\t\tFilters: hardware.GetPciFilters{\n\t\t\t\tVendorId: pulumi.StringRef(\"10de\"),\n\t\t\t\tClass:    pulumi.StringRef(\"03\"),\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.hardware.HardwareFunctions;\nimport com.pulumi.proxmoxve.hardware.inputs.GetPciArgs;\nimport com.pulumi.proxmoxve.hardware.inputs.GetPciFiltersArgs;\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 PCI devices on a node (using default blacklist)\n        final var example = HardwareFunctions.getPci(GetPciArgs.builder()\n            .nodeName(\"pve\")\n            .build());\n\n        // List all PCI devices including bridges and memory controllers\n        final var all = HardwareFunctions.getPci(GetPciArgs.builder()\n            .nodeName(\"pve\")\n            .pciClassBlacklists()\n            .build());\n\n        // Find all NVIDIA GPUs (vendor ID 10de = NVIDIA, class 03 = display controller)\n        final var gpus = HardwareFunctions.getPci(GetPciArgs.builder()\n            .nodeName(\"pve\")\n            .pciClassBlacklists()\n            .filters(GetPciFiltersArgs.builder()\n                .vendorId(\"10de\")\n                .class_(\"03\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  # List all PCI devices on a node (using default blacklist)\n  example:\n    fn::invoke:\n      function: proxmoxve:hardware:getPci\n      arguments:\n        nodeName: pve\n  # List all PCI devices including bridges and memory controllers\n  all:\n    fn::invoke:\n      function: proxmoxve:hardware:getPci\n      arguments:\n        nodeName: pve\n        pciClassBlacklists: []\n  # Find all NVIDIA GPUs (vendor ID 10de = NVIDIA, class 03 = display controller)\n  gpus:\n    fn::invoke:\n      function: proxmoxve:hardware:getPci\n      arguments:\n        nodeName: pve\n        pciClassBlacklists: []\n        filters:\n          vendorId: 10de\n          class: '03'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getPci.\n",
                "properties": {
                    "filters": {
                        "$ref": "#/types/proxmoxve:hardware/getPciFilters:getPciFilters",
                        "description": "Client-side filters for narrowing down results. All filters use prefix matching.\n"
                    },
                    "nodeName": {
                        "type": "string",
                        "description": "The name of the node to list PCI devices from.\n"
                    },
                    "pciClassBlacklists": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of PCI class IDs (hex prefixes) to exclude from the results. If not set, the Proxmox default blacklist is used which filters out memory controllers (05), bridges (06), and processors (0b). Set to an empty list to return all devices.\n"
                    }
                },
                "type": "object",
                "required": [
                    "nodeName"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getPci.\n",
                "properties": {
                    "devices": {
                        "description": "The list of PCI devices.\n",
                        "items": {
                            "$ref": "#/types/proxmoxve:hardware/getPciDevice:getPciDevice"
                        },
                        "type": "array"
                    },
                    "filters": {
                        "$ref": "#/types/proxmoxve:hardware/getPciFilters:getPciFilters",
                        "description": "Client-side filters for narrowing down results. All filters use prefix matching.\n"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "nodeName": {
                        "description": "The name of the node to list PCI devices from.\n",
                        "type": "string"
                    },
                    "pciClassBlacklists": {
                        "description": "A list of PCI class IDs (hex prefixes) to exclude from the results. If not set, the Proxmox default blacklist is used which filters out memory controllers (05), bridges (06), and processors (0b). Set to an empty list to return all devices.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "devices",
                    "nodeName",
                    "id"
                ],
                "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 dataProxmoxHardwareMappingDir = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.hardware.mapping.get_dir(name=\"example\")\npulumi.export(\"dataProxmoxHardwareMappingDir\", 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        [\"dataProxmoxHardwareMappingDir\"] = example,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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(\"dataProxmoxHardwareMappingDir\", 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(\"dataProxmoxHardwareMappingDir\", 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  dataProxmoxHardwareMappingDir: ${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/getDirLegacy:getDirLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.hardware/mapping.Dir`\" pulumi-lang-dotnet=\"`proxmoxve.hardware/mapping.Dir`\" pulumi-lang-go=\"`hardware/mapping.Dir`\" pulumi-lang-python=\"`hardware/mapping.Dir`\" pulumi-lang-yaml=\"`proxmoxve.hardware/mapping.Dir`\" pulumi-lang-java=\"`proxmoxve.hardware/mapping.Dir`\"\u003e`proxmoxve.hardware/mapping.Dir`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieves 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.getDirLegacy({\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_legacy(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.GetDirLegacy.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/v8/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.GetDirLegacy(ctx, \u0026mapping.GetDirLegacyArgs{\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.GetDirLegacyArgs;\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.getDirLegacy(GetDirLegacyArgs.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:getDirLegacy\n      arguments:\n        name: example\noutputs:\n  dataProxmoxVirtualEnvironmentHardwareMappingDir: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getDirLegacy.\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 getDirLegacy.\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/getDirLegacyMap:getDirLegacyMap"
                        },
                        "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 dataProxmoxHardwareMappingPci = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.hardware.mapping.get_pci(name=\"example\")\npulumi.export(\"dataProxmoxHardwareMappingPci\", 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        [\"dataProxmoxHardwareMappingPci\"] = example,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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(\"dataProxmoxHardwareMappingPci\", 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(\"dataProxmoxHardwareMappingPci\", 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  dataProxmoxHardwareMappingPci: ${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/getPciLegacy:getPciLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.hardware/mapping.Pci`\" pulumi-lang-dotnet=\"`proxmoxve.hardware/mapping.Pci`\" pulumi-lang-go=\"`hardware/mapping.Pci`\" pulumi-lang-python=\"`hardware/mapping.Pci`\" pulumi-lang-yaml=\"`proxmoxve.hardware/mapping.Pci`\" pulumi-lang-java=\"`proxmoxve.hardware/mapping.Pci`\"\u003e`proxmoxve.hardware/mapping.Pci`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieves 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.getPciLegacy({\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_legacy(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.GetPciLegacy.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/v8/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.GetPciLegacy(ctx, \u0026mapping.GetPciLegacyArgs{\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.GetPciLegacyArgs;\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.getPciLegacy(GetPciLegacyArgs.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:getPciLegacy\n      arguments:\n        name: example\noutputs:\n  dataProxmoxVirtualEnvironmentHardwareMappingPci: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getPciLegacy.\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 getPciLegacy.\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/getPciLegacyMap:getPciLegacyMap"
                        },
                        "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 dataProxmoxHardwareMappingUsb = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.hardware.mapping.get_usb(name=\"example\")\npulumi.export(\"dataProxmoxHardwareMappingUsb\", 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        [\"dataProxmoxHardwareMappingUsb\"] = example,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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(\"dataProxmoxHardwareMappingUsb\", 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(\"dataProxmoxHardwareMappingUsb\", 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  dataProxmoxHardwareMappingUsb: ${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:hardware/mapping/getUsbLegacy:getUsbLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.hardware/mapping.Usb`\" pulumi-lang-dotnet=\"`proxmoxve.hardware/mapping.Usb`\" pulumi-lang-go=\"`hardware/mapping.Usb`\" pulumi-lang-python=\"`hardware/mapping.Usb`\" pulumi-lang-yaml=\"`proxmoxve.hardware/mapping.Usb`\" pulumi-lang-java=\"`proxmoxve.hardware/mapping.Usb`\"\u003e`proxmoxve.hardware/mapping.Usb`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieves 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.getUsbLegacy({\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_legacy(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.GetUsbLegacy.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/v8/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.GetUsbLegacy(ctx, \u0026mapping.GetUsbLegacyArgs{\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.GetUsbLegacyArgs;\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.getUsbLegacy(GetUsbLegacyArgs.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:getUsbLegacy\n      arguments:\n        name: example\noutputs:\n  dataProxmoxVirtualEnvironmentHardwareMappingUsb: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getUsbLegacy.\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 getUsbLegacy.\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/getUsbLegacyMap:getUsbLegacyMap"
                        },
                        "type": "array"
                    },
                    "name": {
                        "description": "The name of this USB hardware mapping.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "comment",
                    "id",
                    "maps",
                    "name"
                ],
                "type": "object"
            }
        },
        "proxmoxve:index/getContainerLegacy:getContainerLegacy": {
            "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.getContainerLegacy({\n    nodeName: \"test\",\n    vmId: 100,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\ntest_container = proxmoxve.get_container_legacy(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.Index.GetContainerLegacy.Invoke(new()\n    {\n        NodeName = \"test\",\n        VmId = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:2,14-17)),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.GetContainerLegacy(ctx, \u0026proxmoxve.LookupContainerLegacyArgs{\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.GetContainerLegacyArgs;\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.getContainerLegacy(GetContainerLegacyArgs.builder()\n            .nodeName(\"test\")\n            .vmId(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:2,14-17)))\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  testContainer:\n    fn::invoke:\n      function: proxmoxve:getContainerLegacy\n      arguments:\n        nodeName: test\n        vmId: 100\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getContainerLegacy.\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 getContainerLegacy.\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/getContainersLegacy:getContainersLegacy": {
            "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.getContainersLegacy({\n    tags: [\"ubuntu\"],\n});\nconst ubuntuTemplates = proxmoxve.getContainersLegacy({\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_legacy(tags=[\"ubuntu\"])\nubuntu_templates = proxmoxve.get_containers_legacy(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.Index.GetContainersLegacy.Invoke(new()\n    {\n        Tags = new[]\n        {\n            \"ubuntu\",\n        },\n    });\n\n    var ubuntuTemplates = ProxmoxVE.Index.GetContainersLegacy.Invoke(new()\n    {\n        Tags = new[]\n        {\n            \"template\",\n            \"latest\",\n        },\n        Filters = new[]\n        {\n            new ProxmoxVE.Inputs.GetContainersLegacyFilterInputArgs\n            {\n                Name = \"template\",\n                Values = new[]\n                {\n                    \"true\",\n                },\n            },\n            new ProxmoxVE.Inputs.GetContainersLegacyFilterInputArgs\n            {\n                Name = \"status\",\n                Values = new[]\n                {\n                    \"stopped\",\n                },\n            },\n            new ProxmoxVE.Inputs.GetContainersLegacyFilterInputArgs\n            {\n                Name = \"name\",\n                Regex = true,\n                Values = new[]\n                {\n                    \"^ubuntu-20.*$\",\n                },\n            },\n            new ProxmoxVE.Inputs.GetContainersLegacyFilterInputArgs\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/v8/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.GetContainersLegacy(ctx, \u0026proxmoxve.GetContainersLegacyArgs{\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.GetContainersLegacy(ctx, \u0026proxmoxve.GetContainersLegacyArgs{\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.GetContainersLegacyFilter{\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.GetContainersLegacyArgs;\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.getContainersLegacy(GetContainersLegacyArgs.builder()\n            .tags(\"ubuntu\")\n            .build());\n\n        final var ubuntuTemplates = ProxmoxveFunctions.getContainersLegacy(GetContainersLegacyArgs.builder()\n            .tags(            \n                \"template\",\n                \"latest\")\n            .filters(            \n                GetContainersLegacyFilterArgs.builder()\n                    .name(\"template\")\n                    .values(\"true\")\n                    .build(),\n                GetContainersLegacyFilterArgs.builder()\n                    .name(\"status\")\n                    .values(\"stopped\")\n                    .build(),\n                GetContainersLegacyFilterArgs.builder()\n                    .name(\"name\")\n                    .regex(true)\n                    .values(\"^ubuntu-20.*$\")\n                    .build(),\n                GetContainersLegacyFilterArgs.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:getContainersLegacy\n      arguments:\n        tags:\n          - ubuntu\n  ubuntuTemplates:\n    fn::invoke:\n      function: proxmoxve:getContainersLegacy\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 getContainersLegacy.\n",
                "properties": {
                    "filters": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/proxmoxve:index/getContainersLegacyFilter:getContainersLegacyFilter"
                        },
                        "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 getContainersLegacy.\n",
                "properties": {
                    "containers": {
                        "description": "The containers list.\n",
                        "items": {
                            "$ref": "#/types/proxmoxve:index/getContainersLegacyContainer:getContainersLegacyContainer"
                        },
                        "type": "array"
                    },
                    "filters": {
                        "items": {
                            "$ref": "#/types/proxmoxve:index/getContainersLegacyFilter:getContainersLegacyFilter"
                        },
                        "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/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:index/getDatastoresDatastore:getDatastoresDatastore"
                        },
                        "description": "The list of datastores.\n"
                    },
                    "filters": {
                        "$ref": "#/types/proxmoxve:index/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:index/getDatastoresDatastore:getDatastoresDatastore"
                        },
                        "type": "array"
                    },
                    "filters": {
                        "$ref": "#/types/proxmoxve:index/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:index/getDatastoresLegacy:getDatastoresLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.getDatastores`\" pulumi-lang-dotnet=\"`proxmoxve.getDatastores`\" pulumi-lang-go=\"`getDatastores`\" pulumi-lang-python=\"`get_datastores`\" pulumi-lang-yaml=\"`proxmoxve.getDatastores`\" pulumi-lang-java=\"`proxmoxve.getDatastores`\"\u003e`proxmoxve.getDatastores`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieves information about all the datastores available to a specific node.\n",
            "inputs": {
                "description": "A collection of arguments for invoking getDatastoresLegacy.\n",
                "properties": {
                    "datastores": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/proxmoxve:index/getDatastoresLegacyDatastore:getDatastoresLegacyDatastore"
                        },
                        "description": "The list of datastores.\n"
                    },
                    "filters": {
                        "$ref": "#/types/proxmoxve:index/getDatastoresLegacyFilters:getDatastoresLegacyFilters",
                        "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 getDatastoresLegacy.\n",
                "properties": {
                    "datastores": {
                        "description": "The list of datastores.\n",
                        "items": {
                            "$ref": "#/types/proxmoxve:index/getDatastoresLegacyDatastore:getDatastoresLegacyDatastore"
                        },
                        "type": "array"
                    },
                    "filters": {
                        "$ref": "#/types/proxmoxve:index/getDatastoresLegacyFilters:getDatastoresLegacyFilters",
                        "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:index/getDnsLegacy:getDnsLegacy": {
            "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.getDnsLegacy({\n    nodeName: \"first-node\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfirst_node = proxmoxve.get_dns_legacy(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.Index.GetDnsLegacy.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/v8/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.GetDnsLegacy(ctx, \u0026proxmoxve.LookupDnsLegacyArgs{\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.ProxmoxveFunctions;\nimport com.pulumi.proxmoxve.inputs.GetDnsLegacyArgs;\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 = ProxmoxveFunctions.getDnsLegacy(GetDnsLegacyArgs.builder()\n            .nodeName(\"first-node\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  firstNode:\n    fn::invoke:\n      function: proxmoxve:getDnsLegacy\n      arguments:\n        nodeName: first-node\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getDnsLegacy.\n",
                "properties": {
                    "nodeName": {
                        "type": "string",
                        "description": "A node name.\n"
                    }
                },
                "type": "object",
                "required": [
                    "nodeName"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getDnsLegacy.\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: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(\"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    disk: [{\n        datastoreId: \"local-lvm\",\n        fileFormat: \"qcow2\",\n        size: 20,\n    }],\n    networkDevice: [{\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(\"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    disk=[{\n        \"datastoreId\": \"local-lvm\",\n        \"fileFormat\": \"qcow2\",\n        \"size\": 20,\n    }],\n    network_device=[{\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.Index.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.Index.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.Index.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.Index.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.Index.Vm(\"example\", new()\n    {\n        NodeName = \"pve\",\n        VmId = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:53,14-17)),\n        Cdrom = new[]\n        {\n            new ProxmoxVE.Inputs.VmCdromArgs\n            {\n                FileId = ubuntuIso.Apply(getFileResult =\u003e getFileResult.Id),\n            },\n        },\n        Cpu = new ProxmoxVE.Inputs.VmCpuArgs\n        {\n            Cores = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2) (example.pp:59,13-14)),\n        },\n        Memory = new[]\n        {\n            \n            {\n                { \"dedicated\", %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2048) (example.pp:62,17-21)) },\n            },\n        },\n        Disk = new[]\n        {\n            \n            {\n                { \"datastoreId\", \"local-lvm\" },\n                { \"fileFormat\", \"qcow2\" },\n                { \"size\", %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(20) (example.pp:67,19-21)) },\n            },\n        },\n        NetworkDevice = new[]\n        {\n            \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/v8/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\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 = proxmoxve.NewVm(ctx, \"example\", \u0026proxmoxve.VmArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tVmId:     100,\n\t\t\tCdrom: proxmoxve.VmCdromMap{\n\t\t\t\t\u0026proxmoxve.VmCdromArgs{\n\t\t\t\t\tFileId: pulumi.String(ubuntuIso.Id),\n\t\t\t\t},\n\t\t\t},\n\t\t\tCpu: \u0026proxmoxve.VmCpuArgs{\n\t\t\t\tCores: pulumi.Int(2),\n\t\t\t},\n\t\t\tMemory: []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"dedicated\": 2048,\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisk: []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"datastoreId\": \"local-lvm\",\n\t\t\t\t\t\"fileFormat\":  \"qcow2\",\n\t\t\t\t\t\"size\":        20,\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkDevice: []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"bridge\": \"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;\nimport io.muehlbachler.pulumi.proxmoxve.VmArgs;\nimport com.pulumi.proxmoxve.inputs.VmCpuArgs;\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 Vm(\"example\", VmArgs.builder()\n            .nodeName(\"pve\")\n            .vmId(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:53,14-17)))\n            .cdrom(VmCdromArgs.builder()\n                .fileId(ubuntuIso.id())\n                .build())\n            .cpu(VmCpuArgs.builder()\n                .cores(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2) (example.pp:59,13-14)))\n                .build())\n            .memory(List.of(Map.of(\"dedicated\", %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2048) (example.pp:62,17-21)))))\n            .disk(List.of(Map.ofEntries(\n                Map.entry(\"datastoreId\", \"local-lvm\"),\n                Map.entry(\"fileFormat\", \"qcow2\"),\n                Map.entry(\"size\", %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(20) (example.pp:67,19-21)))\n            )))\n            .networkDevice(List.of(Map.of(\"bridge\", \"vmbr0\")))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:Vm\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      disk:\n        - datastoreId: local-lvm\n          fileFormat: qcow2\n          size: 20\n      networkDevice:\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/getFileLegacy:getFileLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.getFile`\" pulumi-lang-dotnet=\"`proxmoxve.getFile`\" pulumi-lang-go=\"`getFile`\" pulumi-lang-python=\"`get_file`\" pulumi-lang-yaml=\"`proxmoxve.getFile`\" pulumi-lang-java=\"`proxmoxve.getFile`\"\u003e`proxmoxve.getFile`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieves 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.getFileLegacy({\n    nodeName: \"pve\",\n    datastoreId: \"local\",\n    contentType: \"iso\",\n    fileName: \"ubuntu-22.04.3-live-server-amd64.iso\",\n});\nconst ubuntuContainerTemplate = proxmoxve.getFileLegacy({\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.getFileLegacy({\n    nodeName: \"pve\",\n    datastoreId: \"local\",\n    contentType: \"snippets\",\n    fileName: \"cloud-init-config.yaml\",\n});\nconst importedFile = proxmoxve.getFileLegacy({\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.VmLegacy(\"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_legacy(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_legacy(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_legacy(node_name=\"pve\",\n    datastore_id=\"local\",\n    content_type=\"snippets\",\n    file_name=\"cloud-init-config.yaml\")\nimported_file = proxmoxve.get_file_legacy(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.VmLegacy(\"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.Index.GetFileLegacy.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.Index.GetFileLegacy.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.Index.GetFileLegacy.Invoke(new()\n    {\n        NodeName = \"pve\",\n        DatastoreId = \"local\",\n        ContentType = \"snippets\",\n        FileName = \"cloud-init-config.yaml\",\n    });\n\n    var importedFile = ProxmoxVE.Index.GetFileLegacy.Invoke(new()\n    {\n        NodeName = \"pve\",\n        DatastoreId = \"local\",\n        ContentType = \"import\",\n        FileName = \"imported-config.yaml\",\n    });\n\n    var example = new ProxmoxVE.Index.VmLegacy(\"example\", new()\n    {\n        NodeName = \"pve\",\n        VmId = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:53,14-17)),\n        Cdrom = new ProxmoxVE.Inputs.VmLegacyCdromArgs\n        {\n            FileId = ubuntuIso.Apply(getFileLegacyResult =\u003e getFileLegacyResult.Id),\n        },\n        Cpu = new ProxmoxVE.Inputs.VmLegacyCpuArgs\n        {\n            Cores = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2) (example.pp:59,13-14)),\n        },\n        Memory = new ProxmoxVE.Inputs.VmLegacyMemoryArgs\n        {\n            Dedicated = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2048) (example.pp:62,17-21)),\n        },\n        Disks = new[]\n        {\n            new ProxmoxVE.Inputs.VmLegacyDiskArgs\n            {\n                DatastoreId = \"local-lvm\",\n                FileFormat = \"qcow2\",\n                Size = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(20) (example.pp:67,19-21)),\n            },\n        },\n        NetworkDevices = new[]\n        {\n            new ProxmoxVE.Inputs.VmLegacyNetworkDeviceArgs\n            {\n                Bridge = \"vmbr0\",\n            },\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"ubuntuIsoId\"] = ubuntuIso.Apply(getFileLegacyResult =\u003e getFileLegacyResult.Id),\n        [\"ubuntuIsoSize\"] = ubuntuIso.Apply(getFileLegacyResult =\u003e getFileLegacyResult.FileSize),\n        [\"containerTemplateFormat\"] = ubuntuContainerTemplate.Apply(getFileLegacyResult =\u003e getFileLegacyResult.FileFormat),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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\tubuntuIso, err := proxmoxve.GetFileLegacy(ctx, \u0026proxmoxve.LookupFileLegacyArgs{\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.GetFileLegacy(ctx, \u0026proxmoxve.LookupFileLegacyArgs{\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.GetFileLegacy(ctx, \u0026proxmoxve.LookupFileLegacyArgs{\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.GetFileLegacy(ctx, \u0026proxmoxve.LookupFileLegacyArgs{\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 = proxmoxve.NewVmLegacy(ctx, \"example\", \u0026proxmoxve.VmLegacyArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tVmId:     pulumi.Int(100),\n\t\t\tCdrom: \u0026proxmoxve.VmLegacyCdromArgs{\n\t\t\t\tFileId: pulumi.String(ubuntuIso.Id),\n\t\t\t},\n\t\t\tCpu: \u0026proxmoxve.VmLegacyCpuArgs{\n\t\t\t\tCores: pulumi.Int(2),\n\t\t\t},\n\t\t\tMemory: \u0026proxmoxve.VmLegacyMemoryArgs{\n\t\t\t\tDedicated: pulumi.Int(2048),\n\t\t\t},\n\t\t\tDisks: proxmoxve.VmLegacyDiskArray{\n\t\t\t\t\u0026proxmoxve.VmLegacyDiskArgs{\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: proxmoxve.VmLegacyNetworkDeviceArray{\n\t\t\t\t\u0026proxmoxve.VmLegacyNetworkDeviceArgs{\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.GetFileLegacyArgs;\nimport io.muehlbachler.pulumi.proxmoxve.VmLegacy;\nimport io.muehlbachler.pulumi.proxmoxve.VmLegacyArgs;\nimport com.pulumi.proxmoxve.inputs.VmLegacyCdromArgs;\nimport com.pulumi.proxmoxve.inputs.VmLegacyCpuArgs;\nimport com.pulumi.proxmoxve.inputs.VmLegacyMemoryArgs;\nimport com.pulumi.proxmoxve.inputs.VmLegacyDiskArgs;\nimport com.pulumi.proxmoxve.inputs.VmLegacyNetworkDeviceArgs;\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.getFileLegacy(GetFileLegacyArgs.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.getFileLegacy(GetFileLegacyArgs.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.getFileLegacy(GetFileLegacyArgs.builder()\n            .nodeName(\"pve\")\n            .datastoreId(\"local\")\n            .contentType(\"snippets\")\n            .fileName(\"cloud-init-config.yaml\")\n            .build());\n\n        final var importedFile = ProxmoxveFunctions.getFileLegacy(GetFileLegacyArgs.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 VmLegacy(\"example\", VmLegacyArgs.builder()\n            .nodeName(\"pve\")\n            .vmId(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:53,14-17)))\n            .cdrom(VmLegacyCdromArgs.builder()\n                .fileId(ubuntuIso.id())\n                .build())\n            .cpu(VmLegacyCpuArgs.builder()\n                .cores(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2) (example.pp:59,13-14)))\n                .build())\n            .memory(VmLegacyMemoryArgs.builder()\n                .dedicated(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(2048) (example.pp:62,17-21)))\n                .build())\n            .disks(VmLegacyDiskArgs.builder()\n                .datastoreId(\"local-lvm\")\n                .fileFormat(\"qcow2\")\n                .size(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(20) (example.pp:67,19-21)))\n                .build())\n            .networkDevices(VmLegacyNetworkDeviceArgs.builder()\n                .bridge(\"vmbr0\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: proxmoxve:VmLegacy\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:getFileLegacy\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:getFileLegacy\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:getFileLegacy\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:getFileLegacy\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 getFileLegacy.\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 getFileLegacy.\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/getFiles:getFiles": {
            "description": "Retrieves a list of files available in a datastore on 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\";\nimport * as std from \"@pulumi/std\";\n\nexport = async () =\u003e {\n    const isoFiles = await proxmoxve.getFiles({\n        nodeName: \"pve\",\n        datastoreId: \"local\",\n        contentType: \"iso\",\n    });\n    const imageExists = (await std.anytrue({\n        input: .map(f =\u003e (f.fileName == \"noble-server-cloudimg-amd64.img\")),\n    })).result;\n    // Only download if the image doesn't already exist\n    const ubuntuNoble: proxmoxve.download.FileLegacy[] = [];\n    for (const range = {value: 0}; range.value \u003c (imageExists ? 0 : 1); range.value++) {\n        ubuntuNoble.push(new proxmoxve.download.FileLegacy(`ubuntu_noble-${range.value}`, {\n            datastoreId: \"local\",\n            nodeName: \"pve\",\n            contentType: \"iso\",\n            url: \"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\",\n        }));\n    }\n    // List all files without filtering\n    const allFiles = await proxmoxve.getFiles({\n        nodeName: \"pve\",\n        datastoreId: \"local\",\n    });\n    return {\n        isoFileCount: isoFiles.files.length,\n        allFileNames: .map(f =\u003e (f.fileName)),\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\nimport pulumi_std as std\n\niso_files = proxmoxve.get_files(node_name=\"pve\",\n    datastore_id=\"local\",\n    content_type=\"iso\")\nimage_exists = std.anytrue(input=[f.file_name == \"noble-server-cloudimg-amd64.img\" for f in iso_files.files]).result\n# Only download if the image doesn't already exist\nubuntu_noble = []\nfor range in [{\"value\": i} for i in range(0, 0 if image_exists else 1)]:\n    ubuntu_noble.append(proxmoxve.download.FileLegacy(f\"ubuntu_noble-{range['value']}\",\n        datastore_id=\"local\",\n        node_name=\"pve\",\n        content_type=\"iso\",\n        url=\"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\"))\n# List all files without filtering\nall_files = proxmoxve.get_files(node_name=\"pve\",\n    datastore_id=\"local\")\npulumi.export(\"isoFileCount\", len(iso_files.files))\npulumi.export(\"allFileNames\", [f.file_name for f in all_files.files])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(async() =\u003e \n{\n    var isoFiles = await ProxmoxVE.Index.GetFiles.InvokeAsync(new()\n    {\n        NodeName = \"pve\",\n        DatastoreId = \"local\",\n        ContentType = \"iso\",\n    });\n\n    var imageExists = (await Std.Index.Anytrue.InvokeAsync(new()\n    {\n        Input = ,\n    })).Result;\n\n    // Only download if the image doesn't already exist\n    var ubuntuNoble = new List\u003cProxmoxVE.Download.FileLegacy\u003e();\n    for (var rangeIndex = 0; rangeIndex \u003c imageExists ? %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(0) (example.pp:14,27-28)) : %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(1) (example.pp:14,31-32)); rangeIndex++)\n    {\n        var range = new { Value = rangeIndex };\n        ubuntuNoble.Add(new ProxmoxVE.Download.FileLegacy($\"ubuntu_noble-{range.Value}\", new()\n        {\n            DatastoreId = \"local\",\n            NodeName = \"pve\",\n            ContentType = \"iso\",\n            Url = \"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\",\n        }));\n    }\n    // List all files without filtering\n    var allFiles = await ProxmoxVE.Index.GetFiles.InvokeAsync(new()\n    {\n        NodeName = \"pve\",\n        DatastoreId = \"local\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"isoFileCount\"] = isoFiles.Files.Length,\n        [\"allFileNames\"] = ,\n    };\n});\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getFiles.\n",
                "properties": {
                    "contentType": {
                        "type": "string",
                        "description": "The content type to filter by. When set, only files of this type are returned. Valid values are \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, \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, \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, \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, \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, \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, \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"
                    },
                    "datastoreId": {
                        "type": "string",
                        "description": "The identifier of the datastore.\n"
                    },
                    "fileNameRegex": {
                        "type": "string",
                        "description": "A regular expression to filter files by name. When set, only files whose name matches the expression are returned.\n"
                    },
                    "nodeName": {
                        "type": "string",
                        "description": "The name of the node.\n"
                    }
                },
                "type": "object",
                "required": [
                    "datastoreId",
                    "nodeName"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getFiles.\n",
                "properties": {
                    "contentType": {
                        "description": "The content type to filter by. When set, only files of this type are returned. Valid values are \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, \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, \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, \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, \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, \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, \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",
                        "type": "string"
                    },
                    "datastoreId": {
                        "description": "The identifier of the datastore.\n",
                        "type": "string"
                    },
                    "fileNameRegex": {
                        "description": "A regular expression to filter files by name. When set, only files whose name matches the expression are returned.\n",
                        "type": "string"
                    },
                    "files": {
                        "description": "The list of files in the datastore.\n",
                        "items": {
                            "$ref": "#/types/proxmoxve:index/getFilesFile:getFilesFile"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "nodeName": {
                        "description": "The name of the node.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "datastoreId",
                    "files",
                    "nodeName",
                    "id"
                ],
                "type": "object"
            }
        },
        "proxmoxve:index/getGroupLegacy:getGroupLegacy": {
            "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.getGroupLegacy({\n    groupId: \"operations-team\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_team = proxmoxve.get_group_legacy(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.Index.GetGroupLegacy.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/v8/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.GetGroupLegacy(ctx, \u0026proxmoxve.LookupGroupLegacyArgs{\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.ProxmoxveFunctions;\nimport com.pulumi.proxmoxve.inputs.GetGroupLegacyArgs;\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 = ProxmoxveFunctions.getGroupLegacy(GetGroupLegacyArgs.builder()\n            .groupId(\"operations-team\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  operationsTeam:\n    fn::invoke:\n      function: proxmoxve:getGroupLegacy\n      arguments:\n        groupId: operations-team\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getGroupLegacy.\n",
                "properties": {
                    "groupId": {
                        "type": "string",
                        "description": "The group identifier.\n"
                    }
                },
                "type": "object",
                "required": [
                    "groupId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getGroupLegacy.\n",
                "properties": {
                    "acls": {
                        "description": "The access control list.\n",
                        "items": {
                            "$ref": "#/types/proxmoxve:index/getGroupLegacyAcl:getGroupLegacyAcl"
                        },
                        "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:index/getGroupsLegacy:getGroupsLegacy": {
            "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.getGroupsLegacy({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\navailable_groups = proxmoxve.get_groups_legacy()\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.Index.GetGroupsLegacy.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.GetGroupsLegacy(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.ProxmoxveFunctions;\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 = ProxmoxveFunctions.getGroupsLegacy(%!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:getGroupsLegacy\n      arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "outputs": {
                "description": "A collection of values returned by getGroupsLegacy.\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:index/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.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.getHagroup({\n    group: __value,\n}) }), {}));\nexport const proxmoxHagroupsFull = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# This will fetch the set of HA group identifiers...\nall = proxmoxve.get_hagroups()\n# ...which we will go through in order to fetch the whole data on each group.\nexample = {__key: proxmoxve.get_hagroup(group=__value) for __key, __value in enumerate(all.group_ids)}\npulumi.export(\"proxmoxHagroupsFull\", 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.Index.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        [\"proxmoxHagroupsFull\"] = 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:index/getHagroupLegacy:getHagroupLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.Hagroup`\" pulumi-lang-dotnet=\"`proxmoxve.Hagroup`\" pulumi-lang-go=\"`Hagroup`\" pulumi-lang-python=\"`Hagroup`\" pulumi-lang-yaml=\"`proxmoxve.Hagroup`\" pulumi-lang-java=\"`proxmoxve.Hagroup`\"\u003e`proxmoxve.Hagroup`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieves 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.getHagroupsLegacy({});\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.getHagroupLegacy({\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.get_hagroups_legacy()\n# ...which we will go through in order to fetch the whole data on each group.\nexample = {__key: proxmoxve.get_hagroup_legacy(group=__value) for __key, __value in enumerate(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.Index.GetHagroupsLegacy.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 getHagroupLegacy.\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 getHagroupLegacy.\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:index/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.getHagroups({});\nexport const dataProxmoxHagroups = example.then(example =\u003e example.groupIds);\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.get_hagroups()\npulumi.export(\"dataProxmoxHagroups\", 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.Index.GetHagroups.Invoke();\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxHagroups\"] = example.Apply(getHagroupsResult =\u003e getHagroupsResult.GroupIds),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.GetHagroups(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxHagroups\", 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.ProxmoxveFunctions;\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.getHagroups(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);\n\n        ctx.export(\"dataProxmoxHagroups\", example.groupIds());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: proxmoxve:getHagroups\n      arguments: {}\noutputs:\n  dataProxmoxHagroups: ${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:index/getHagroupsLegacy:getHagroupsLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.getHagroups`\" pulumi-lang-dotnet=\"`proxmoxve.getHagroups`\" pulumi-lang-go=\"`getHagroups`\" pulumi-lang-python=\"`get_hagroups`\" pulumi-lang-yaml=\"`proxmoxve.getHagroups`\" pulumi-lang-java=\"`proxmoxve.getHagroups`\"\u003e`proxmoxve.getHagroups`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieves 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.getHagroupsLegacy({});\nexport const dataProxmoxVirtualEnvironmentHagroups = example.then(example =\u003e example.groupIds);\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.get_hagroups_legacy()\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.Index.GetHagroupsLegacy.Invoke();\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentHagroups\"] = example.Apply(getHagroupsLegacyResult =\u003e getHagroupsLegacyResult.GroupIds),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.GetHagroupsLegacy(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.ProxmoxveFunctions;\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.getHagroupsLegacy(%!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:getHagroupsLegacy\n      arguments: {}\noutputs:\n  dataProxmoxVirtualEnvironmentHagroups: ${example.groupIds}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "outputs": {
                "description": "A collection of values returned by getHagroupsLegacy.\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:index/getHaresource:getHaresource": {
            "description": "Retrieves information about a specific High Availability resource.\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.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.getHaresource({\n    resourceId: __value,\n}) }), {}));\nexport const proxmoxHaresourcesFull = 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.get_haresources()\n# ...which we will go through in order to fetch the whole record for each resource.\nexample = {__key: proxmoxve.get_haresource(resource_id=__value) for __key, __value in enumerate(all.resource_ids)}\npulumi.export(\"proxmoxHaresourcesFull\", 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.Index.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        [\"proxmoxHaresourcesFull\"] = 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:index/getHaresourceLegacy:getHaresourceLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.Haresource`\" pulumi-lang-dotnet=\"`proxmoxve.Haresource`\" pulumi-lang-go=\"`Haresource`\" pulumi-lang-python=\"`Haresource`\" pulumi-lang-yaml=\"`proxmoxve.Haresource`\" pulumi-lang-java=\"`proxmoxve.Haresource`\"\u003e`proxmoxve.Haresource`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieves information about a specific High Availability resource.\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.getHaresourcesLegacy({});\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.getHaresourceLegacy({\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.get_haresources_legacy()\n# ...which we will go through in order to fetch the whole record for each resource.\nexample = {__key: proxmoxve.get_haresource_legacy(resource_id=__value) for __key, __value in enumerate(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.Index.GetHaresourcesLegacy.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 getHaresourceLegacy.\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 getHaresourceLegacy.\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:index/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.getHaresources({});\n// This will fetch the set of HA resource identifiers that correspond to virtual machines.\nconst exampleVm = proxmoxve.getHaresources({\n    type: \"vm\",\n});\nexport const dataProxmoxHaresources = {\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.get_haresources()\n# This will fetch the set of HA resource identifiers that correspond to virtual machines.\nexample_vm = proxmoxve.get_haresources(type=\"vm\")\npulumi.export(\"dataProxmoxHaresources\", {\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.Index.GetHaresources.Invoke();\n\n    // This will fetch the set of HA resource identifiers that correspond to virtual machines.\n    var exampleVm = ProxmoxVE.Index.GetHaresources.Invoke(new()\n    {\n        Type = \"vm\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxHaresources\"] = \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/v8/go/proxmoxve\"\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 := proxmoxve.GetHaresources(ctx, \u0026proxmoxve.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 := proxmoxve.GetHaresources(ctx, \u0026proxmoxve.GetHaresourcesArgs{\nType: pulumi.StringRef(\"vm\"),\n}, nil);\nif err != nil {\nreturn err\n}\nctx.Export(\"dataProxmoxHaresources\", 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.ProxmoxveFunctions;\nimport com.pulumi.proxmoxve.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 = ProxmoxveFunctions.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 = ProxmoxveFunctions.getHaresources(GetHaresourcesArgs.builder()\n            .type(\"vm\")\n            .build());\n\n        ctx.export(\"dataProxmoxHaresources\", 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: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:getHaresources\n      arguments:\n        type: vm\noutputs:\n  dataProxmoxHaresources:\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:index/getHaresourcesLegacy:getHaresourcesLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.getHaresources`\" pulumi-lang-dotnet=\"`proxmoxve.getHaresources`\" pulumi-lang-go=\"`getHaresources`\" pulumi-lang-python=\"`get_haresources`\" pulumi-lang-yaml=\"`proxmoxve.getHaresources`\" pulumi-lang-java=\"`proxmoxve.getHaresources`\"\u003e`proxmoxve.getHaresources`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieves 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.getHaresourcesLegacy({});\n// This will fetch the set of HA resource identifiers that correspond to virtual machines.\nconst exampleVm = proxmoxve.getHaresourcesLegacy({\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.get_haresources_legacy()\n# This will fetch the set of HA resource identifiers that correspond to virtual machines.\nexample_vm = proxmoxve.get_haresources_legacy(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.Index.GetHaresourcesLegacy.Invoke();\n\n    // This will fetch the set of HA resource identifiers that correspond to virtual machines.\n    var exampleVm = ProxmoxVE.Index.GetHaresourcesLegacy.Invoke(new()\n    {\n        Type = \"vm\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentHaresources\"] = \n        {\n            { \"all\", exampleAll.Apply(getHaresourcesLegacyResult =\u003e getHaresourcesLegacyResult.ResourceIds) },\n            { \"vms\", exampleVm.Apply(getHaresourcesLegacyResult =\u003e getHaresourcesLegacyResult.ResourceIds) },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/go/proxmoxve\"\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 := proxmoxve.GetHaresourcesLegacy(ctx, \u0026proxmoxve.GetHaresourcesLegacyArgs{\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 := proxmoxve.GetHaresourcesLegacy(ctx, \u0026proxmoxve.GetHaresourcesLegacyArgs{\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.ProxmoxveFunctions;\nimport com.pulumi.proxmoxve.inputs.GetHaresourcesLegacyArgs;\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 = ProxmoxveFunctions.getHaresourcesLegacy(GetHaresourcesLegacyArgs.builder()\n            .build());\n\n        // This will fetch the set of HA resource identifiers that correspond to virtual machines.\n        final var exampleVm = ProxmoxveFunctions.getHaresourcesLegacy(GetHaresourcesLegacyArgs.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:getHaresourcesLegacy\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:getHaresourcesLegacy\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 getHaresourcesLegacy.\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 getHaresourcesLegacy.\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:index/getHostsLegacy:getHostsLegacy": {
            "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.getHostsLegacy({\n    nodeName: \"first-node\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfirst_node_host_entries = proxmoxve.get_hosts_legacy(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.Index.GetHostsLegacy.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/v8/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.GetHostsLegacy(ctx, \u0026proxmoxve.LookupHostsLegacyArgs{\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.ProxmoxveFunctions;\nimport com.pulumi.proxmoxve.inputs.GetHostsLegacyArgs;\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 = ProxmoxveFunctions.getHostsLegacy(GetHostsLegacyArgs.builder()\n            .nodeName(\"first-node\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  firstNodeHostEntries:\n    fn::invoke:\n      function: proxmoxve:getHostsLegacy\n      arguments:\n        nodeName: first-node\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getHostsLegacy.\n",
                "properties": {
                    "nodeName": {
                        "type": "string",
                        "description": "A node name.\n"
                    }
                },
                "type": "object",
                "required": [
                    "nodeName"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getHostsLegacy.\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:index/getHostsLegacyEntry:getHostsLegacyEntry"
                        },
                        "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:index/getNodeLegacy:getNodeLegacy": {
            "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.getNodeLegacy({\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_legacy(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.Index.GetNodeLegacy.Invoke(new()\n    {\n        NodeName = \"pve\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentNode\"] = \n        {\n            { \"cpuCores\", example.Apply(getNodeLegacyResult =\u003e getNodeLegacyResult.CpuCores) },\n            { \"cpuCount\", example.Apply(getNodeLegacyResult =\u003e getNodeLegacyResult.CpuCount) },\n            { \"cpuSockets\", example.Apply(getNodeLegacyResult =\u003e getNodeLegacyResult.CpuSockets) },\n            { \"cpuModel\", example.Apply(getNodeLegacyResult =\u003e getNodeLegacyResult.CpuModel) },\n            { \"memoryTotal\", example.Apply(getNodeLegacyResult =\u003e getNodeLegacyResult.MemoryTotal) },\n            { \"uptime\", example.Apply(getNodeLegacyResult =\u003e getNodeLegacyResult.Uptime) },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.GetNodeLegacy(ctx, \u0026proxmoxve.GetNodeLegacyArgs{\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.GetNodeLegacyArgs;\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.getNodeLegacy(GetNodeLegacyArgs.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:getNodeLegacy\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 getNodeLegacy.\n",
                "properties": {
                    "nodeName": {
                        "type": "string",
                        "description": "The node name\n"
                    }
                },
                "type": "object",
                "required": [
                    "nodeName"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getNodeLegacy.\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"
                    },
                    "cpuUtilization": {
                        "description": "The CPU utilization on the node (a value between `0.0` and `1.0`)\n",
                        "type": "number"
                    },
                    "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",
                    "cpuUtilization",
                    "memoryAvailable",
                    "memoryTotal",
                    "memoryUsed",
                    "nodeName",
                    "uptime",
                    "id"
                ],
                "type": "object"
            }
        },
        "proxmoxve:index/getNodesLegacy:getNodesLegacy": {
            "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.getNodesLegacy({});\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.get_nodes_legacy()\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.Index.GetNodesLegacy.Invoke();\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentNodes\"] = \n        {\n            { \"names\", example.Apply(getNodesLegacyResult =\u003e getNodesLegacyResult.Names) },\n            { \"cpuCount\", example.Apply(getNodesLegacyResult =\u003e getNodesLegacyResult.CpuCounts) },\n            { \"online\", example.Apply(getNodesLegacyResult =\u003e getNodesLegacyResult.Onlines) },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/go/proxmoxve\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\nexample, err := proxmoxve.GetNodesLegacy(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.ProxmoxveFunctions;\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.getNodesLegacy(%!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:getNodesLegacy\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 getNodesLegacy.\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 (values between `0.0` and `1.0`)\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:index/getPoolLegacy:getPoolLegacy": {
            "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.getPoolLegacy({\n    poolId: \"operations\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_pool = proxmoxve.get_pool_legacy(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.Index.GetPoolLegacy.Invoke(new()\n    {\n        PoolId = \"operations\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.GetPoolLegacy(ctx, \u0026proxmoxve.LookupPoolLegacyArgs{\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.ProxmoxveFunctions;\nimport com.pulumi.proxmoxve.inputs.GetPoolLegacyArgs;\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 = ProxmoxveFunctions.getPoolLegacy(GetPoolLegacyArgs.builder()\n            .poolId(\"operations\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  operationsPool:\n    fn::invoke:\n      function: proxmoxve:getPoolLegacy\n      arguments:\n        poolId: operations\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getPoolLegacy.\n",
                "properties": {
                    "poolId": {
                        "type": "string",
                        "description": "The pool identifier.\n"
                    }
                },
                "type": "object",
                "required": [
                    "poolId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getPoolLegacy.\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:index/getPoolLegacyMember:getPoolLegacyMember"
                        },
                        "type": "array"
                    },
                    "poolId": {
                        "type": "string"
                    }
                },
                "required": [
                    "comment",
                    "members",
                    "poolId",
                    "id"
                ],
                "type": "object"
            }
        },
        "proxmoxve:index/getPoolsLegacy:getPoolsLegacy": {
            "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.getPoolsLegacy({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\navailable_pools = proxmoxve.get_pools_legacy()\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.Index.GetPoolsLegacy.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.GetPoolsLegacy(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.ProxmoxveFunctions;\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 = ProxmoxveFunctions.getPoolsLegacy(%!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:getPoolsLegacy\n      arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "outputs": {
                "description": "A collection of values returned by getPoolsLegacy.\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:index/getReplication:getReplication": {
            "description": "Retrieves information about an existing Replication.\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.getReplication({\n    id: \"100-0\",\n});\nexport const dataProxmoxReplication = {\n    id: example.then(example =\u003e example.id),\n    target: example.then(example =\u003e example.target),\n    type: example.then(example =\u003e example.type),\n    jobnum: example.then(example =\u003e example.jobnum),\n    guest: example.then(example =\u003e example.guest),\n};\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.get_replication(id=\"100-0\")\npulumi.export(\"dataProxmoxReplication\", {\n    \"id\": example.id,\n    \"target\": example.target,\n    \"type\": example.type,\n    \"jobnum\": example.jobnum,\n    \"guest\": example.guest,\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.Index.GetReplication.Invoke(new()\n    {\n        Id = \"100-0\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxReplication\"] = \n        {\n            { \"id\", example.Apply(getReplicationResult =\u003e getReplicationResult.Id) },\n            { \"target\", example.Apply(getReplicationResult =\u003e getReplicationResult.Target) },\n            { \"type\", example.Apply(getReplicationResult =\u003e getReplicationResult.Type) },\n            { \"jobnum\", example.Apply(getReplicationResult =\u003e getReplicationResult.Jobnum) },\n            { \"guest\", example.Apply(getReplicationResult =\u003e getReplicationResult.Guest) },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.GetReplication(ctx, \u0026proxmoxve.LookupReplicationArgs{\n\t\t\tId: \"100-0\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxReplication\", pulumi.Map{\n\t\t\t\"id\":     example.Id,\n\t\t\t\"target\": example.Target,\n\t\t\t\"type\":   example.Type,\n\t\t\t\"jobnum\": example.Jobnum,\n\t\t\t\"guest\":  example.Guest,\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.GetReplicationArgs;\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.getReplication(GetReplicationArgs.builder()\n            .id(\"100-0\")\n            .build());\n\n        ctx.export(\"dataProxmoxReplication\", Map.ofEntries(\n            Map.entry(\"id\", example.id()),\n            Map.entry(\"target\", example.target()),\n            Map.entry(\"type\", example.type()),\n            Map.entry(\"jobnum\", example.jobnum()),\n            Map.entry(\"guest\", example.guest())\n        ));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: proxmoxve:getReplication\n      arguments:\n        id: 100-0\noutputs:\n  dataProxmoxReplication:\n    id: ${example.id}\n    target: ${example.target}\n    type: ${example.type}\n    jobnum: ${example.jobnum}\n    guest: ${example.guest}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getReplication.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '\\n\\n-\\n\\n'.\n"
                    }
                },
                "type": "object",
                "required": [
                    "id"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getReplication.\n",
                "properties": {
                    "comment": {
                        "description": "Description.\n",
                        "type": "string"
                    },
                    "disable": {
                        "description": "Flag to disable/deactivate this replication.\n",
                        "type": "boolean"
                    },
                    "guest": {
                        "description": "Guest ID.\n",
                        "type": "integer"
                    },
                    "id": {
                        "description": "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '\\n\\n-\\n\\n'.\n",
                        "type": "string"
                    },
                    "jobnum": {
                        "description": "Unique, sequential ID assigned to each job.\n",
                        "type": "integer"
                    },
                    "rate": {
                        "description": "Rate limit in mbps (megabytes per second) as floating point number.\n",
                        "type": "number"
                    },
                    "schedule": {
                        "description": "Storage replication schedule. The format is a subset of \u003cspan pulumi-lang-nodejs=\"`systemd`\" pulumi-lang-dotnet=\"`Systemd`\" pulumi-lang-go=\"`systemd`\" pulumi-lang-python=\"`systemd`\" pulumi-lang-yaml=\"`systemd`\" pulumi-lang-java=\"`systemd`\"\u003e`systemd`\u003c/span\u003e calendar events. Defaults to */15\n",
                        "type": "string"
                    },
                    "source": {
                        "description": "For internal use, to detect if the guest was stolen.\n",
                        "type": "string"
                    },
                    "target": {
                        "description": "Target node.\n",
                        "type": "string"
                    },
                    "type": {
                        "description": "Section type.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "comment",
                    "disable",
                    "guest",
                    "id",
                    "jobnum",
                    "rate",
                    "schedule",
                    "source",
                    "target",
                    "type"
                ],
                "type": "object"
            }
        },
        "proxmoxve:index/getReplicationLegacy:getReplicationLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.Replication`\" pulumi-lang-dotnet=\"`proxmoxve.Replication`\" pulumi-lang-go=\"`Replication`\" pulumi-lang-python=\"`Replication`\" pulumi-lang-yaml=\"`proxmoxve.Replication`\" pulumi-lang-java=\"`proxmoxve.Replication`\"\u003e`proxmoxve.Replication`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieves information about an existing Replication.\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.getReplicationLegacy({\n    id: \"100-0\",\n});\nexport const dataProxmoxVirtualEnvironmentReplication = {\n    id: example.then(example =\u003e example.id),\n    target: example.then(example =\u003e example.target),\n    type: example.then(example =\u003e example.type),\n    jobnum: example.then(example =\u003e example.jobnum),\n    guest: example.then(example =\u003e example.guest),\n};\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.get_replication_legacy(id=\"100-0\")\npulumi.export(\"dataProxmoxVirtualEnvironmentReplication\", {\n    \"id\": example.id,\n    \"target\": example.target,\n    \"type\": example.type,\n    \"jobnum\": example.jobnum,\n    \"guest\": example.guest,\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.Index.GetReplicationLegacy.Invoke(new()\n    {\n        Id = \"100-0\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentReplication\"] = \n        {\n            { \"id\", example.Apply(getReplicationLegacyResult =\u003e getReplicationLegacyResult.Id) },\n            { \"target\", example.Apply(getReplicationLegacyResult =\u003e getReplicationLegacyResult.Target) },\n            { \"type\", example.Apply(getReplicationLegacyResult =\u003e getReplicationLegacyResult.Type) },\n            { \"jobnum\", example.Apply(getReplicationLegacyResult =\u003e getReplicationLegacyResult.Jobnum) },\n            { \"guest\", example.Apply(getReplicationLegacyResult =\u003e getReplicationLegacyResult.Guest) },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.GetReplicationLegacy(ctx, \u0026proxmoxve.LookupReplicationLegacyArgs{\n\t\t\tId: \"100-0\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentReplication\", pulumi.Map{\n\t\t\t\"id\":     example.Id,\n\t\t\t\"target\": example.Target,\n\t\t\t\"type\":   example.Type,\n\t\t\t\"jobnum\": example.Jobnum,\n\t\t\t\"guest\":  example.Guest,\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.GetReplicationLegacyArgs;\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.getReplicationLegacy(GetReplicationLegacyArgs.builder()\n            .id(\"100-0\")\n            .build());\n\n        ctx.export(\"dataProxmoxVirtualEnvironmentReplication\", Map.ofEntries(\n            Map.entry(\"id\", example.id()),\n            Map.entry(\"target\", example.target()),\n            Map.entry(\"type\", example.type()),\n            Map.entry(\"jobnum\", example.jobnum()),\n            Map.entry(\"guest\", example.guest())\n        ));\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: proxmoxve:getReplicationLegacy\n      arguments:\n        id: 100-0\noutputs:\n  dataProxmoxVirtualEnvironmentReplication:\n    id: ${example.id}\n    target: ${example.target}\n    type: ${example.type}\n    jobnum: ${example.jobnum}\n    guest: ${example.guest}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getReplicationLegacy.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '\\n\\n-\\n\\n'.\n"
                    }
                },
                "type": "object",
                "required": [
                    "id"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getReplicationLegacy.\n",
                "properties": {
                    "comment": {
                        "description": "Description.\n",
                        "type": "string"
                    },
                    "disable": {
                        "description": "Flag to disable/deactivate this replication.\n",
                        "type": "boolean"
                    },
                    "guest": {
                        "description": "Guest ID.\n",
                        "type": "integer"
                    },
                    "id": {
                        "description": "Replication Job ID. The ID is composed of a Guest ID and a job number, separated by a hyphen, i.e. '\\n\\n-\\n\\n'.\n",
                        "type": "string"
                    },
                    "jobnum": {
                        "description": "Unique, sequential ID assigned to each job.\n",
                        "type": "integer"
                    },
                    "rate": {
                        "description": "Rate limit in mbps (megabytes per second) as floating point number.\n",
                        "type": "number"
                    },
                    "schedule": {
                        "description": "Storage replication schedule. The format is a subset of \u003cspan pulumi-lang-nodejs=\"`systemd`\" pulumi-lang-dotnet=\"`Systemd`\" pulumi-lang-go=\"`systemd`\" pulumi-lang-python=\"`systemd`\" pulumi-lang-yaml=\"`systemd`\" pulumi-lang-java=\"`systemd`\"\u003e`systemd`\u003c/span\u003e calendar events. Defaults to */15\n",
                        "type": "string"
                    },
                    "source": {
                        "description": "For internal use, to detect if the guest was stolen.\n",
                        "type": "string"
                    },
                    "target": {
                        "description": "Target node.\n",
                        "type": "string"
                    },
                    "type": {
                        "description": "Section type.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "comment",
                    "disable",
                    "guest",
                    "id",
                    "jobnum",
                    "rate",
                    "schedule",
                    "source",
                    "target",
                    "type"
                ],
                "type": "object"
            }
        },
        "proxmoxve:index/getReplications:getReplications": {
            "description": "Retrieves information about all Replications in Proxmox.\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 Replications\nconst all = proxmoxve.getReplications({});\nexport const dataProxmoxReplicationsAll = {\n    replications: all.then(all =\u003e all.replications),\n};\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# List all Replications\nall = proxmoxve.get_replications()\npulumi.export(\"dataProxmoxReplicationsAll\", {\n    \"replications\": all.replications,\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 Replications\n    var all = ProxmoxVE.Index.GetReplications.Invoke();\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxReplicationsAll\"] = \n        {\n            { \"replications\", all.Apply(getReplicationsResult =\u003e getReplicationsResult.Replications) },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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// List all Replications\n\t\tall, err := proxmoxve.GetReplications(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxReplicationsAll\", []proxmoxve.GetReplicationsReplicationMap{\n\t\t\t\"replications\": all.Replications,\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 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 Replications\n        final var all = ProxmoxveFunctions.getReplications(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);\n\n        ctx.export(\"dataProxmoxReplicationsAll\", Map.of(\"replications\", all.replications()));\n    }\n}\n```\n```yaml\nvariables:\n  # List all Replications\n  all:\n    fn::invoke:\n      function: proxmoxve:getReplications\n      arguments: {}\noutputs:\n  dataProxmoxReplicationsAll:\n    replications: ${all.replications}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "outputs": {
                "description": "A collection of values returned by getReplications.\n",
                "properties": {
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "replications": {
                        "description": "List of Replications.\n",
                        "items": {
                            "$ref": "#/types/proxmoxve:index/getReplicationsReplication:getReplicationsReplication"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "replications",
                    "id"
                ],
                "type": "object"
            }
        },
        "proxmoxve:index/getReplicationsLegacy:getReplicationsLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.getReplications`\" pulumi-lang-dotnet=\"`proxmoxve.getReplications`\" pulumi-lang-go=\"`getReplications`\" pulumi-lang-python=\"`get_replications`\" pulumi-lang-yaml=\"`proxmoxve.getReplications`\" pulumi-lang-java=\"`proxmoxve.getReplications`\"\u003e`proxmoxve.getReplications`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieves information about all Replications in Proxmox.\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 Replications\nconst all = proxmoxve.getReplicationsLegacy({});\nexport const dataProxmoxVirtualEnvironmentReplicationsAll = {\n    replications: all.then(all =\u003e all.replications),\n};\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# List all Replications\nall = proxmoxve.get_replications_legacy()\npulumi.export(\"dataProxmoxVirtualEnvironmentReplicationsAll\", {\n    \"replications\": all.replications,\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 Replications\n    var all = ProxmoxVE.Index.GetReplicationsLegacy.Invoke();\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentReplicationsAll\"] = \n        {\n            { \"replications\", all.Apply(getReplicationsLegacyResult =\u003e getReplicationsLegacyResult.Replications) },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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// List all Replications\n\t\tall, err := proxmoxve.GetReplicationsLegacy(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentReplicationsAll\", []proxmoxve.GetReplicationsLegacyReplicationMap{\n\t\t\t\"replications\": all.Replications,\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 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 Replications\n        final var all = ProxmoxveFunctions.getReplicationsLegacy(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);\n\n        ctx.export(\"dataProxmoxVirtualEnvironmentReplicationsAll\", Map.of(\"replications\", all.replications()));\n    }\n}\n```\n```yaml\nvariables:\n  # List all Replications\n  all:\n    fn::invoke:\n      function: proxmoxve:getReplicationsLegacy\n      arguments: {}\noutputs:\n  dataProxmoxVirtualEnvironmentReplicationsAll:\n    replications: ${all.replications}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "outputs": {
                "description": "A collection of values returned by getReplicationsLegacy.\n",
                "properties": {
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "replications": {
                        "description": "List of Replications.\n",
                        "items": {
                            "$ref": "#/types/proxmoxve:index/getReplicationsLegacyReplication:getReplicationsLegacyReplication"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "replications",
                    "id"
                ],
                "type": "object"
            }
        },
        "proxmoxve:index/getRoleLegacy:getRoleLegacy": {
            "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.getRoleLegacy({\n    roleId: \"operations\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_role = proxmoxve.get_role_legacy(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.Index.GetRoleLegacy.Invoke(new()\n    {\n        RoleId = \"operations\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.GetRoleLegacy(ctx, \u0026proxmoxve.LookupRoleLegacyArgs{\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.ProxmoxveFunctions;\nimport com.pulumi.proxmoxve.inputs.GetRoleLegacyArgs;\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 = ProxmoxveFunctions.getRoleLegacy(GetRoleLegacyArgs.builder()\n            .roleId(\"operations\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  operationsRole:\n    fn::invoke:\n      function: proxmoxve:getRoleLegacy\n      arguments:\n        roleId: operations\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getRoleLegacy.\n",
                "properties": {
                    "roleId": {
                        "type": "string",
                        "description": "The role identifier.\n"
                    }
                },
                "type": "object",
                "required": [
                    "roleId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getRoleLegacy.\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:index/getRolesLegacy:getRolesLegacy": {
            "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.getRolesLegacy({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\navailable_roles = proxmoxve.get_roles_legacy()\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.Index.GetRolesLegacy.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.GetRolesLegacy(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.ProxmoxveFunctions;\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 = ProxmoxveFunctions.getRolesLegacy(%!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:getRolesLegacy\n      arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "outputs": {
                "description": "A collection of values returned by getRolesLegacy.\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:index/getTimeLegacy:getTimeLegacy": {
            "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.getTimeLegacy({\n    nodeName: \"first-node\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfirst_node_time = proxmoxve.get_time_legacy(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.Index.GetTimeLegacy.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/v8/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.GetTimeLegacy(ctx, \u0026proxmoxve.LookupTimeLegacyArgs{\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.ProxmoxveFunctions;\nimport com.pulumi.proxmoxve.inputs.GetTimeLegacyArgs;\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 = ProxmoxveFunctions.getTimeLegacy(GetTimeLegacyArgs.builder()\n            .nodeName(\"first-node\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  firstNodeTime:\n    fn::invoke:\n      function: proxmoxve:getTimeLegacy\n      arguments:\n        nodeName: first-node\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getTimeLegacy.\n",
                "properties": {
                    "nodeName": {
                        "type": "string",
                        "description": "A node name.\n"
                    }
                },
                "type": "object",
                "required": [
                    "nodeName"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getTimeLegacy.\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:index/getUserLegacy:getUserLegacy": {
            "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.getUserLegacy({\n    userId: \"operation@pam\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_user = proxmoxve.get_user_legacy(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.Index.GetUserLegacy.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/v8/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.GetUserLegacy(ctx, \u0026proxmoxve.LookupUserLegacyArgs{\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.ProxmoxveFunctions;\nimport com.pulumi.proxmoxve.inputs.GetUserLegacyArgs;\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 = ProxmoxveFunctions.getUserLegacy(GetUserLegacyArgs.builder()\n            .userId(\"operation@pam\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  operationsUser:\n    fn::invoke:\n      function: proxmoxve:getUserLegacy\n      arguments:\n        userId: operation@pam\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getUserLegacy.\n",
                "properties": {
                    "userId": {
                        "type": "string",
                        "description": "The user identifier.\n"
                    }
                },
                "type": "object",
                "required": [
                    "userId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getUserLegacy.\n",
                "properties": {
                    "acls": {
                        "description": "The access control list.\n",
                        "items": {
                            "$ref": "#/types/proxmoxve:index/getUserLegacyAcl:getUserLegacyAcl"
                        },
                        "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:index/getUsersLegacy:getUsersLegacy": {
            "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.getUsersLegacy({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\navailable_users = proxmoxve.get_users_legacy()\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.Index.GetUsersLegacy.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.GetUsersLegacy(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.ProxmoxveFunctions;\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 = ProxmoxveFunctions.getUsersLegacy(%!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:getUsersLegacy\n      arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "outputs": {
                "description": "A collection of values returned by getUsersLegacy.\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:index/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.getVersion({});\nexport const dataProxmoxVersion = {\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.get_version()\npulumi.export(\"dataProxmoxVersion\", {\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.Index.GetVersion.Invoke();\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVersion\"] = \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/v8/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.GetVersion(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVersion\", 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.ProxmoxveFunctions;\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.getVersion(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);\n\n        ctx.export(\"dataProxmoxVersion\", 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:getVersion\n      arguments: {}\noutputs:\n  dataProxmoxVersion:\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:index/getVersionLegacy:getVersionLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.getVersion`\" pulumi-lang-dotnet=\"`proxmoxve.getVersion`\" pulumi-lang-go=\"`getVersion`\" pulumi-lang-python=\"`get_version`\" pulumi-lang-yaml=\"`proxmoxve.getVersion`\" pulumi-lang-java=\"`proxmoxve.getVersion`\"\u003e`proxmoxve.getVersion`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieves 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.getVersionLegacy({});\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.get_version_legacy()\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.Index.GetVersionLegacy.Invoke();\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentVersion\"] = \n        {\n            { \"release\", example.Apply(getVersionLegacyResult =\u003e getVersionLegacyResult.Release) },\n            { \"repositoryId\", example.Apply(getVersionLegacyResult =\u003e getVersionLegacyResult.RepositoryId) },\n            { \"version\", example.Apply(getVersionLegacyResult =\u003e getVersionLegacyResult.Version) },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.GetVersionLegacy(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.ProxmoxveFunctions;\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.getVersionLegacy(%!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:getVersionLegacy\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 getVersionLegacy.\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:index/getVm2Legacy:getVm2Legacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.Vm`\" pulumi-lang-dotnet=\"`proxmoxve.Vm`\" pulumi-lang-go=\"`Vm`\" pulumi-lang-python=\"`Vm`\" pulumi-lang-yaml=\"`proxmoxve.Vm`\" pulumi-lang-java=\"`proxmoxve.Vm`\"\u003e`proxmoxve.Vm`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieves information about a specific VM.\n",
            "inputs": {
                "description": "A collection of arguments for invoking getVm2Legacy.\n",
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "The unique identifier of the VM in the Proxmox cluster.\n"
                    },
                    "nodeName": {
                        "type": "string",
                        "description": "The name of the node where the VM is provisioned.\n"
                    },
                    "timeouts": {
                        "$ref": "#/types/proxmoxve:index/getVm2LegacyTimeouts:getVm2LegacyTimeouts"
                    }
                },
                "type": "object",
                "required": [
                    "id",
                    "nodeName"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getVm2Legacy.\n",
                "properties": {
                    "cdrom": {
                        "additionalProperties": {
                            "$ref": "#/types/proxmoxve:index/getVm2LegacyCdrom:getVm2LegacyCdrom"
                        },
                        "description": "The CD-ROM configuration.\n",
                        "type": "object"
                    },
                    "cpu": {
                        "$ref": "#/types/proxmoxve:index/getVm2LegacyCpu:getVm2LegacyCpu",
                        "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/getVm2LegacyRng:getVm2LegacyRng",
                        "description": "The RNG (Random Number Generator) configuration.\n"
                    },
                    "status": {
                        "description": "The status of the VM (e.g., \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e).\n",
                        "type": "string"
                    },
                    "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/getVm2LegacyTimeouts:getVm2LegacyTimeouts"
                    },
                    "vga": {
                        "$ref": "#/types/proxmoxve:index/getVm2LegacyVga:getVm2LegacyVga",
                        "description": "The VGA configuration.\n"
                    }
                },
                "required": [
                    "cdrom",
                    "cpu",
                    "description",
                    "id",
                    "name",
                    "nodeName",
                    "rng",
                    "status",
                    "tags",
                    "template",
                    "vga"
                ],
                "type": "object"
            }
        },
        "proxmoxve:index/getVm:getVm": {
            "description": "Retrieves information about a specific VM.\n",
            "inputs": {
                "description": "A collection of arguments for invoking getVm.\n",
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "The unique identifier of the VM in the Proxmox cluster.\n"
                    },
                    "nodeName": {
                        "type": "string",
                        "description": "The name of the node where the VM is provisioned.\n"
                    },
                    "timeouts": {
                        "$ref": "#/types/proxmoxve:index/getVmTimeouts:getVmTimeouts"
                    }
                },
                "type": "object",
                "required": [
                    "id",
                    "nodeName"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getVm.\n",
                "properties": {
                    "cdrom": {
                        "additionalProperties": {
                            "$ref": "#/types/proxmoxve:index/getVmCdrom:getVmCdrom"
                        },
                        "description": "The CD-ROM configuration.\n",
                        "type": "object"
                    },
                    "cpu": {
                        "$ref": "#/types/proxmoxve:index/getVmCpu:getVmCpu",
                        "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/getVmRng:getVmRng",
                        "description": "The RNG (Random Number Generator) configuration.\n"
                    },
                    "status": {
                        "description": "The status of the VM (e.g., \u003cspan pulumi-lang-nodejs=\"`running`\" pulumi-lang-dotnet=\"`Running`\" pulumi-lang-go=\"`running`\" pulumi-lang-python=\"`running`\" pulumi-lang-yaml=\"`running`\" pulumi-lang-java=\"`running`\"\u003e`running`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e).\n",
                        "type": "string"
                    },
                    "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/getVmTimeouts:getVmTimeouts"
                    },
                    "vga": {
                        "$ref": "#/types/proxmoxve:index/getVmVga:getVmVga",
                        "description": "The VGA configuration.\n"
                    }
                },
                "required": [
                    "cdrom",
                    "cpu",
                    "description",
                    "id",
                    "name",
                    "nodeName",
                    "rng",
                    "status",
                    "tags",
                    "template",
                    "vga"
                ],
                "type": "object"
            }
        },
        "proxmoxve:index/getVmLegacy:getVmLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.Vm`\" pulumi-lang-dotnet=\"`proxmoxve.Vm`\" pulumi-lang-go=\"`Vm`\" pulumi-lang-python=\"`Vm`\" pulumi-lang-yaml=\"`proxmoxve.Vm`\" pulumi-lang-java=\"`proxmoxve.Vm`\"\u003e`proxmoxve.Vm`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieves 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.getVmLegacy({\n    nodeName: \"test\",\n    vmId: 100,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\ntest_vm = proxmoxve.get_vm_legacy(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.Index.GetVmLegacy.Invoke(new()\n    {\n        NodeName = \"test\",\n        VmId = %!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:2,14-17)),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.GetVmLegacy(ctx, \u0026proxmoxve.LookupVmLegacyArgs{\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.GetVmLegacyArgs;\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 = ProxmoxveFunctions.getVmLegacy(GetVmLegacyArgs.builder()\n            .nodeName(\"test\")\n            .vmId(%!v(PANIC=Format method: fatal: A failure has occurred: unexpected literal type in GenLiteralValueExpression: cty.NumberIntVal(100) (example.pp:2,14-17)))\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  testVm:\n    fn::invoke:\n      function: proxmoxve:getVmLegacy\n      arguments:\n        nodeName: test\n        vmId: 100\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getVmLegacy.\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 getVmLegacy.\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:index/getVmsLegacy:getVmsLegacy": {
            "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.getVmsLegacy({\n    tags: [\"ubuntu\"],\n});\nconst ubuntuTemplates = proxmoxve.getVmsLegacy({\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.get_vms_legacy(tags=[\"ubuntu\"])\nubuntu_templates = proxmoxve.get_vms_legacy(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.Index.GetVmsLegacy.Invoke(new()\n    {\n        Tags = new[]\n        {\n            \"ubuntu\",\n        },\n    });\n\n    var ubuntuTemplates = ProxmoxVE.Index.GetVmsLegacy.Invoke(new()\n    {\n        Tags = new[]\n        {\n            \"template\",\n            \"latest\",\n        },\n        Filters = new[]\n        {\n            new ProxmoxVE.Inputs.GetVmsLegacyFilterInputArgs\n            {\n                Name = \"template\",\n                Values = new[]\n                {\n                    \"true\",\n                },\n            },\n            new ProxmoxVE.Inputs.GetVmsLegacyFilterInputArgs\n            {\n                Name = \"status\",\n                Values = new[]\n                {\n                    \"stopped\",\n                },\n            },\n            new ProxmoxVE.Inputs.GetVmsLegacyFilterInputArgs\n            {\n                Name = \"name\",\n                Regex = true,\n                Values = new[]\n                {\n                    \"^ubuntu-20.*$\",\n                },\n            },\n            new ProxmoxVE.Inputs.GetVmsLegacyFilterInputArgs\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/v8/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.GetVmsLegacy(ctx, \u0026proxmoxve.GetVmsLegacyArgs{\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.GetVmsLegacy(ctx, \u0026proxmoxve.GetVmsLegacyArgs{\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.GetVmsLegacyFilter{\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.GetVmsLegacyArgs;\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 = ProxmoxveFunctions.getVmsLegacy(GetVmsLegacyArgs.builder()\n            .tags(\"ubuntu\")\n            .build());\n\n        final var ubuntuTemplates = ProxmoxveFunctions.getVmsLegacy(GetVmsLegacyArgs.builder()\n            .tags(            \n                \"template\",\n                \"latest\")\n            .filters(            \n                GetVmsLegacyFilterArgs.builder()\n                    .name(\"template\")\n                    .values(\"true\")\n                    .build(),\n                GetVmsLegacyFilterArgs.builder()\n                    .name(\"status\")\n                    .values(\"stopped\")\n                    .build(),\n                GetVmsLegacyFilterArgs.builder()\n                    .name(\"name\")\n                    .regex(true)\n                    .values(\"^ubuntu-20.*$\")\n                    .build(),\n                GetVmsLegacyFilterArgs.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:getVmsLegacy\n      arguments:\n        tags:\n          - ubuntu\n  ubuntuTemplates:\n    fn::invoke:\n      function: proxmoxve:getVmsLegacy\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 getVmsLegacy.\n",
                "properties": {
                    "filters": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/proxmoxve:index/getVmsLegacyFilter:getVmsLegacyFilter"
                        },
                        "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 getVmsLegacy.\n",
                "properties": {
                    "filters": {
                        "items": {
                            "$ref": "#/types/proxmoxve:index/getVmsLegacyFilter:getVmsLegacyFilter"
                        },
                        "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:index/getVmsLegacyVm:getVmsLegacyVm"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "vms",
                    "id"
                ],
                "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 dataProxmoxMetricsServer = {\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(\"dataProxmoxMetricsServer\", {\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        [\"dataProxmoxMetricsServer\"] = \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/v8/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.LookupServer(ctx, \u0026metrics.LookupServerArgs{\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(\"dataProxmoxMetricsServer\", 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(\"dataProxmoxMetricsServer\", 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  dataProxmoxMetricsServer:\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"
                    },
                    "opentelemetryCompression": {
                        "description": "OpenTelemetry compression algorithm for requests.\n",
                        "type": "string"
                    },
                    "opentelemetryHeaders": {
                        "description": "OpenTelemetry custom HTTP headers as JSON, base64 encoded.\n",
                        "secret": true,
                        "type": "string"
                    },
                    "opentelemetryMaxBodySize": {
                        "description": "OpenTelemetry maximum request body size in bytes.\n",
                        "type": "integer"
                    },
                    "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"
                    },
                    "opentelemetryResourceAttributes": {
                        "description": "OpenTelemetry additional resource attributes as JSON, base64 encoded.\n",
                        "type": "string"
                    },
                    "opentelemetryTimeout": {
                        "description": "OpenTelemetry HTTP request timeout in seconds.\n",
                        "type": "integer"
                    },
                    "opentelemetryVerifySsl": {
                        "description": "OpenTelemetry verify SSL certificates.\n",
                        "type": "boolean"
                    },
                    "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",
                    "opentelemetryCompression",
                    "opentelemetryHeaders",
                    "opentelemetryMaxBodySize",
                    "opentelemetryPath",
                    "opentelemetryProto",
                    "opentelemetryResourceAttributes",
                    "opentelemetryTimeout",
                    "opentelemetryVerifySsl",
                    "port",
                    "server",
                    "type"
                ],
                "type": "object"
            }
        },
        "proxmoxve:metrics/getServerLegacy:getServerLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.metrics.Server`\" pulumi-lang-dotnet=\"`proxmoxve.metrics.Server`\" pulumi-lang-go=\"`metrics.Server`\" pulumi-lang-python=\"`metrics.Server`\" pulumi-lang-yaml=\"`proxmoxve.metrics.Server`\" pulumi-lang-java=\"`proxmoxve.metrics.Server`\"\u003e`proxmoxve.metrics.Server`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieves 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.getServerLegacy({\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_legacy(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.GetServerLegacy.Invoke(new()\n    {\n        Name = \"example_influxdb\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentMetricsServer\"] = \n        {\n            { \"server\", example.Apply(getServerLegacyResult =\u003e getServerLegacyResult.Server) },\n            { \"port\", example.Apply(getServerLegacyResult =\u003e getServerLegacyResult.Port) },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.LookupServerLegacy(ctx, \u0026metrics.LookupServerLegacyArgs{\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.GetServerLegacyArgs;\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.getServerLegacy(GetServerLegacyArgs.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:getServerLegacy\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 getServerLegacy.\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 getServerLegacy.\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"
                    },
                    "opentelemetryCompression": {
                        "description": "OpenTelemetry compression algorithm for requests.\n",
                        "type": "string"
                    },
                    "opentelemetryHeaders": {
                        "description": "OpenTelemetry custom HTTP headers as JSON, base64 encoded.\n",
                        "secret": true,
                        "type": "string"
                    },
                    "opentelemetryMaxBodySize": {
                        "description": "OpenTelemetry maximum request body size in bytes.\n",
                        "type": "integer"
                    },
                    "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"
                    },
                    "opentelemetryResourceAttributes": {
                        "description": "OpenTelemetry additional resource attributes as JSON, base64 encoded.\n",
                        "type": "string"
                    },
                    "opentelemetryTimeout": {
                        "description": "OpenTelemetry HTTP request timeout in seconds.\n",
                        "type": "integer"
                    },
                    "opentelemetryVerifySsl": {
                        "description": "OpenTelemetry verify SSL certificates.\n",
                        "type": "boolean"
                    },
                    "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",
                    "opentelemetryCompression",
                    "opentelemetryHeaders",
                    "opentelemetryMaxBodySize",
                    "opentelemetryPath",
                    "opentelemetryProto",
                    "opentelemetryResourceAttributes",
                    "opentelemetryTimeout",
                    "opentelemetryVerifySsl",
                    "port",
                    "server",
                    "type"
                ],
                "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",
            "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 csnpInterval \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 helloInterval \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/getOpenfabricLegacy:getOpenfabricLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.sdn/fabric.Openfabric`\" pulumi-lang-dotnet=\"`proxmoxve.sdn/fabric.Openfabric`\" pulumi-lang-go=\"`sdn/fabric.Openfabric`\" pulumi-lang-python=\"`sdn/fabric.Openfabric`\" pulumi-lang-yaml=\"`proxmoxve.sdn/fabric.Openfabric`\" pulumi-lang-java=\"`proxmoxve.sdn/fabric.Openfabric`\"\u003e`proxmoxve.sdn/fabric.Openfabric`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nOpenFabric Fabric in Proxmox SDN. Fabrics in Proxmox VE SDN provide automated routing between nodes in a cluster.\n",
            "inputs": {
                "description": "A collection of arguments for invoking getOpenfabricLegacy.\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 getOpenfabricLegacy.\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 csnpInterval \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 helloInterval \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",
            "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/getOspfLegacy:getOspfLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.sdn/fabric.Ospf`\" pulumi-lang-dotnet=\"`proxmoxve.sdn/fabric.Ospf`\" pulumi-lang-go=\"`sdn/fabric.Ospf`\" pulumi-lang-python=\"`sdn/fabric.Ospf`\" pulumi-lang-yaml=\"`proxmoxve.sdn/fabric.Ospf`\" pulumi-lang-java=\"`proxmoxve.sdn/fabric.Ospf`\"\u003e`proxmoxve.sdn/fabric.Ospf`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nOSPF Fabric in Proxmox SDN. Fabrics in Proxmox VE SDN provide automated routing between nodes in a cluster.\n",
            "inputs": {
                "description": "A collection of arguments for invoking getOspfLegacy.\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 getOspfLegacy.\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",
            "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": {
                        "description": "The unique identifier of the SDN fabric node, in the format \\n\\n/\\n\\n.\n",
                        "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/getOpenfabricLegacy:getOpenfabricLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.sdn/fabric/node.Openfabric`\" pulumi-lang-dotnet=\"`proxmoxve.sdn/fabric/node.Openfabric`\" pulumi-lang-go=\"`sdn/fabric/node.Openfabric`\" pulumi-lang-python=\"`sdn/fabric/node.Openfabric`\" pulumi-lang-yaml=\"`proxmoxve.sdn/fabric/node.Openfabric`\" pulumi-lang-java=\"`proxmoxve.sdn/fabric/node.Openfabric`\"\u003e`proxmoxve.sdn/fabric/node.Openfabric`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nOpenFabric Fabric Node in Proxmox SDN. Fabrics in Proxmox VE SDN provide automated routing between nodes in a cluster.\n",
            "inputs": {
                "description": "A collection of arguments for invoking getOpenfabricLegacy.\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 getOpenfabricLegacy.\n",
                "properties": {
                    "fabricId": {
                        "description": "The unique identifier of the SDN fabric.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The unique identifier of the SDN fabric node, in the format \\n\\n/\\n\\n.\n",
                        "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",
            "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": {
                        "description": "The unique identifier of the SDN fabric node, in the format \\n\\n/\\n\\n.\n",
                        "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/fabric/node/getOspfLegacy:getOspfLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.sdn/fabric/node.Ospf`\" pulumi-lang-dotnet=\"`proxmoxve.sdn/fabric/node.Ospf`\" pulumi-lang-go=\"`sdn/fabric/node.Ospf`\" pulumi-lang-python=\"`sdn/fabric/node.Ospf`\" pulumi-lang-yaml=\"`proxmoxve.sdn/fabric/node.Ospf`\" pulumi-lang-java=\"`proxmoxve.sdn/fabric/node.Ospf`\"\u003e`proxmoxve.sdn/fabric/node.Ospf`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nOSPF Fabric Node in Proxmox SDN. Fabrics in Proxmox VE SDN provide automated routing between nodes in a cluster.\n",
            "inputs": {
                "description": "A collection of arguments for invoking getOspfLegacy.\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 getOspfLegacy.\n",
                "properties": {
                    "fabricId": {
                        "description": "The unique identifier of the SDN fabric.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The unique identifier of the SDN fabric node, in the format \\n\\n/\\n\\n.\n",
                        "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/getSubnetLegacy:getSubnetLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.sdn.Subnet`\" pulumi-lang-dotnet=\"`proxmoxve.sdn.Subnet`\" pulumi-lang-go=\"`sdn.Subnet`\" pulumi-lang-python=\"`sdn.Subnet`\" pulumi-lang-yaml=\"`proxmoxve.sdn.Subnet`\" pulumi-lang-java=\"`proxmoxve.sdn.Subnet`\"\u003e`proxmoxve.sdn.Subnet`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieve details about a specific SDN Subnet in Proxmox VE.\n",
            "inputs": {
                "description": "A collection of arguments for invoking getSubnetLegacy.\n",
                "properties": {
                    "cidr": {
                        "type": "string",
                        "description": "A CIDR network address, for example 10.0.0.0/8\n"
                    },
                    "dhcpRange": {
                        "$ref": "#/types/proxmoxve:sdn/getSubnetLegacyDhcpRange:getSubnetLegacyDhcpRange",
                        "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 getSubnetLegacy.\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/getSubnetLegacyDhcpRange:getSubnetLegacyDhcpRange",
                        "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 dataProxmoxSdnVnet = {\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(\"dataProxmoxSdnVnet\", {\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        [\"dataProxmoxSdnVnet\"] = \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/v8/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.LookupVnet(ctx, \u0026sdn.LookupVnetArgs{\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(\"dataProxmoxSdnVnet\", 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(\"dataProxmoxSdnVnet\", 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  dataProxmoxSdnVnet:\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/getVnetLegacy:getVnetLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.sdn.Vnet`\" pulumi-lang-dotnet=\"`proxmoxve.sdn.Vnet`\" pulumi-lang-go=\"`sdn.Vnet`\" pulumi-lang-python=\"`sdn.Vnet`\" pulumi-lang-yaml=\"`proxmoxve.sdn.Vnet`\" pulumi-lang-java=\"`proxmoxve.sdn.Vnet`\"\u003e`proxmoxve.sdn.Vnet`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieves 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.getVnetLegacy({\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_legacy(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.GetVnetLegacy.Invoke(new()\n    {\n        Id = \"vnet1\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentSdnVnet\"] = \n        {\n            { \"id\", example.Apply(getVnetLegacyResult =\u003e getVnetLegacyResult.Id) },\n            { \"zone\", example.Apply(getVnetLegacyResult =\u003e getVnetLegacyResult.Zone) },\n            { \"alias\", example.Apply(getVnetLegacyResult =\u003e getVnetLegacyResult.Alias) },\n            { \"isolatePorts\", example.Apply(getVnetLegacyResult =\u003e getVnetLegacyResult.IsolatePorts) },\n            { \"tag\", example.Apply(getVnetLegacyResult =\u003e getVnetLegacyResult.Tag) },\n            { \"vlanAware\", example.Apply(getVnetLegacyResult =\u003e getVnetLegacyResult.VlanAware) },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.LookupVnetLegacy(ctx, \u0026sdn.LookupVnetLegacyArgs{\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.GetVnetLegacyArgs;\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.getVnetLegacy(GetVnetLegacyArgs.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:getVnetLegacy\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 getVnetLegacy.\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 getVnetLegacy.\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 dataProxmoxSdnVnetsAll = {\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(\"dataProxmoxSdnVnetsAll\", {\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        [\"dataProxmoxSdnVnetsAll\"] = \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/v8/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(\"dataProxmoxSdnVnetsAll\", []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(\"dataProxmoxSdnVnetsAll\", 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  dataProxmoxSdnVnetsAll:\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/getVnetsLegacy:getVnetsLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.sdn.getVnets`\" pulumi-lang-dotnet=\"`proxmoxve.sdn.getVnets`\" pulumi-lang-go=\"`sdn.getVnets`\" pulumi-lang-python=\"`sdn_get_vnets`\" pulumi-lang-yaml=\"`proxmoxve.sdn.getVnets`\" pulumi-lang-java=\"`proxmoxve.sdn.getVnets`\"\u003e`proxmoxve.sdn.getVnets`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieves 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.getVnetsLegacy({});\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_legacy()\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.GetVnetsLegacy.Invoke();\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentSdnVnetsAll\"] = \n        {\n            { \"vnets\", all.Apply(getVnetsLegacyResult =\u003e getVnetsLegacyResult.Vnets) },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.GetVnetsLegacy(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentSdnVnetsAll\", []sdn.GetVnetsLegacyVnetMap{\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.getVnetsLegacy(%!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:getVnetsLegacy\n      arguments: {}\noutputs:\n  dataProxmoxVirtualEnvironmentSdnVnetsAll:\n    vnets: ${all.vnets}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "outputs": {
                "description": "A collection of values returned by getVnetsLegacy.\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/getVnetsLegacyVnet:getVnetsLegacyVnet"
                        },
                        "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 dataProxmoxSdnZonesAll = {\n    zones: all.then(all =\u003e all.zones),\n};\nexport const dataProxmoxSdnZonesFiltered = {\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(\"dataProxmoxSdnZonesAll\", {\n    \"zones\": all.zones,\n})\npulumi.export(\"dataProxmoxSdnZonesFiltered\", {\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        [\"dataProxmoxSdnZonesAll\"] = \n        {\n            { \"zones\", all.Apply(getZonesResult =\u003e getZonesResult.Zones) },\n        },\n        [\"dataProxmoxSdnZonesFiltered\"] = \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/v8/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(\"dataProxmoxSdnZonesAll\", []sdn.GetZonesZoneMap{\n\t\t\t\"zones\": all.Zones,\n\t\t})\n\t\tctx.Export(\"dataProxmoxSdnZonesFiltered\", []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(\"dataProxmoxSdnZonesAll\", Map.of(\"zones\", all.zones()));\n        ctx.export(\"dataProxmoxSdnZonesFiltered\", 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  dataProxmoxSdnZonesAll:\n    zones: ${all.zones}\n  dataProxmoxSdnZonesFiltered:\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:sdn/getZonesLegacy:getZonesLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.sdn.getZones`\" pulumi-lang-dotnet=\"`proxmoxve.sdn.getZones`\" pulumi-lang-go=\"`sdn.getZones`\" pulumi-lang-python=\"`sdn_get_zones`\" pulumi-lang-yaml=\"`proxmoxve.sdn.getZones`\" pulumi-lang-java=\"`proxmoxve.sdn.getZones`\"\u003e`proxmoxve.sdn.getZones`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieves 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.getZonesLegacy({});\n// List only EVPN zones\nconst evpnOnly = proxmoxve.sdn.getZonesLegacy({\n    type: \"evpn\",\n});\n// List only Simple zones  \nconst simpleOnly = proxmoxve.sdn.getZonesLegacy({\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_legacy()\n# List only EVPN zones\nevpn_only = proxmoxve.sdn.get_zones_legacy(type=\"evpn\")\n# List only Simple zones  \nsimple_only = proxmoxve.sdn.get_zones_legacy(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.GetZonesLegacy.Invoke();\n\n    // List only EVPN zones\n    var evpnOnly = ProxmoxVE.Sdn.GetZonesLegacy.Invoke(new()\n    {\n        Type = \"evpn\",\n    });\n\n    // List only Simple zones  \n    var simpleOnly = ProxmoxVE.Sdn.GetZonesLegacy.Invoke(new()\n    {\n        Type = \"simple\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentSdnZonesAll\"] = \n        {\n            { \"zones\", all.Apply(getZonesLegacyResult =\u003e getZonesLegacyResult.Zones) },\n        },\n        [\"dataProxmoxVirtualEnvironmentSdnZonesFiltered\"] = \n        {\n            { \"evpnZones\", evpnOnly.Apply(getZonesLegacyResult =\u003e getZonesLegacyResult.Zones) },\n            { \"simpleZones\", simpleOnly.Apply(getZonesLegacyResult =\u003e getZonesLegacyResult.Zones) },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.GetZonesLegacy(ctx, \u0026sdn.GetZonesLegacyArgs{}, 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.GetZonesLegacy(ctx, \u0026sdn.GetZonesLegacyArgs{\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.GetZonesLegacy(ctx, \u0026sdn.GetZonesLegacyArgs{\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.GetZonesLegacyZoneMap{\n\t\t\t\"zones\": all.Zones,\n\t\t})\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentSdnZonesFiltered\", []sdn.GetZonesLegacyZoneMap{\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.GetZonesLegacyArgs;\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.getZonesLegacy(GetZonesLegacyArgs.builder()\n            .build());\n\n        // List only EVPN zones\n        final var evpnOnly = SdnFunctions.getZonesLegacy(GetZonesLegacyArgs.builder()\n            .type(\"evpn\")\n            .build());\n\n        // List only Simple zones  \n        final var simpleOnly = SdnFunctions.getZonesLegacy(GetZonesLegacyArgs.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:getZonesLegacy\n      arguments: {}\n  # List only EVPN zones\n  evpnOnly:\n    fn::invoke:\n      function: proxmoxve:sdn:getZonesLegacy\n      arguments:\n        type: evpn\n  # List only Simple zones\n  simpleOnly:\n    fn::invoke:\n      function: proxmoxve:sdn:getZonesLegacy\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 getZonesLegacy.\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 getZonesLegacy.\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/getZonesLegacyZone:getZonesLegacyZone"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "zones",
                    "id"
                ],
                "type": "object"
            }
        },
        "proxmoxve:sdn/zone/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.sdn.zone.getEvpn({\n    id: \"evpn1\",\n});\nexport const dataProxmoxSdnZoneEvpn = {\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.sdn.zone.get_evpn(id=\"evpn1\")\npulumi.export(\"dataProxmoxSdnZoneEvpn\", {\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.Sdn.Zone.GetEvpn.Invoke(new()\n    {\n        Id = \"evpn1\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxSdnZoneEvpn\"] = \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/v8/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.GetEvpn(ctx, \u0026zone.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(\"dataProxmoxSdnZoneEvpn\", 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.sdn_zone.Sdn_zoneFunctions;\nimport com.pulumi.proxmoxve.sdn.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 = Sdn_zoneFunctions.getEvpn(GetEvpnArgs.builder()\n            .id(\"evpn1\")\n            .build());\n\n        ctx.export(\"dataProxmoxSdnZoneEvpn\", 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:sdn/zone:getEvpn\n      arguments:\n        id: evpn1\noutputs:\n  dataProxmoxSdnZoneEvpn:\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:sdn/zone/getEvpnLegacy:getEvpnLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.sdn/zone.Evpn`\" pulumi-lang-dotnet=\"`proxmoxve.sdn/zone.Evpn`\" pulumi-lang-go=\"`sdn/zone.Evpn`\" pulumi-lang-python=\"`sdn/zone.Evpn`\" pulumi-lang-yaml=\"`proxmoxve.sdn/zone.Evpn`\" pulumi-lang-java=\"`proxmoxve.sdn/zone.Evpn`\"\u003e`proxmoxve.sdn/zone.Evpn`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieves 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.sdn.zone.getEvpnLegacy({\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.sdn.zone.get_evpn_legacy(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.Sdn.Zone.GetEvpnLegacy.Invoke(new()\n    {\n        Id = \"evpn1\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentSdnZoneEvpn\"] = \n        {\n            { \"id\", example.Apply(getEvpnLegacyResult =\u003e getEvpnLegacyResult.Id) },\n            { \"nodes\", example.Apply(getEvpnLegacyResult =\u003e getEvpnLegacyResult.Nodes) },\n            { \"controller\", example.Apply(getEvpnLegacyResult =\u003e getEvpnLegacyResult.Controller) },\n            { \"vrfVxlan\", example.Apply(getEvpnLegacyResult =\u003e getEvpnLegacyResult.VrfVxlan) },\n            { \"advertiseSubnets\", example.Apply(getEvpnLegacyResult =\u003e getEvpnLegacyResult.AdvertiseSubnets) },\n            { \"disableArpNdSuppression\", example.Apply(getEvpnLegacyResult =\u003e getEvpnLegacyResult.DisableArpNdSuppression) },\n            { \"exitNodes\", example.Apply(getEvpnLegacyResult =\u003e getEvpnLegacyResult.ExitNodes) },\n            { \"exitNodesLocalRouting\", example.Apply(getEvpnLegacyResult =\u003e getEvpnLegacyResult.ExitNodesLocalRouting) },\n            { \"primaryExitNode\", example.Apply(getEvpnLegacyResult =\u003e getEvpnLegacyResult.PrimaryExitNode) },\n            { \"rtImport\", example.Apply(getEvpnLegacyResult =\u003e getEvpnLegacyResult.RtImport) },\n            { \"mtu\", example.Apply(getEvpnLegacyResult =\u003e getEvpnLegacyResult.Mtu) },\n            { \"dns\", example.Apply(getEvpnLegacyResult =\u003e getEvpnLegacyResult.Dns) },\n            { \"dnsZone\", example.Apply(getEvpnLegacyResult =\u003e getEvpnLegacyResult.DnsZone) },\n            { \"ipam\", example.Apply(getEvpnLegacyResult =\u003e getEvpnLegacyResult.Ipam) },\n            { \"reverseDns\", example.Apply(getEvpnLegacyResult =\u003e getEvpnLegacyResult.ReverseDns) },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.GetEvpnLegacy(ctx, \u0026zone.GetEvpnLegacyArgs{\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.sdn_zone.Sdn_zoneFunctions;\nimport com.pulumi.proxmoxve.sdn.inputs.GetEvpnLegacyArgs;\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 = Sdn_zoneFunctions.getEvpnLegacy(GetEvpnLegacyArgs.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:sdn/zone:getEvpnLegacy\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 getEvpnLegacy.\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 getEvpnLegacy.\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:sdn/zone/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.sdn.zone.getQinq({\n    id: \"qinq1\",\n});\nexport const dataProxmoxSdnZoneQinq = {\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.sdn.zone.get_qinq(id=\"qinq1\")\npulumi.export(\"dataProxmoxSdnZoneQinq\", {\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.Sdn.Zone.GetQinq.Invoke(new()\n    {\n        Id = \"qinq1\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxSdnZoneQinq\"] = \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/v8/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.GetQinq(ctx, \u0026zone.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(\"dataProxmoxSdnZoneQinq\", 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.sdn_zone.Sdn_zoneFunctions;\nimport com.pulumi.proxmoxve.sdn.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 = Sdn_zoneFunctions.getQinq(GetQinqArgs.builder()\n            .id(\"qinq1\")\n            .build());\n\n        ctx.export(\"dataProxmoxSdnZoneQinq\", 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:sdn/zone:getQinq\n      arguments:\n        id: qinq1\noutputs:\n  dataProxmoxSdnZoneQinq:\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:sdn/zone/getQinqLegacy:getQinqLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.sdn/zone.Qinq`\" pulumi-lang-dotnet=\"`proxmoxve.sdn/zone.Qinq`\" pulumi-lang-go=\"`sdn/zone.Qinq`\" pulumi-lang-python=\"`sdn/zone.Qinq`\" pulumi-lang-yaml=\"`proxmoxve.sdn/zone.Qinq`\" pulumi-lang-java=\"`proxmoxve.sdn/zone.Qinq`\"\u003e`proxmoxve.sdn/zone.Qinq`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieves 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.sdn.zone.getQinqLegacy({\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.sdn.zone.get_qinq_legacy(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.Sdn.Zone.GetQinqLegacy.Invoke(new()\n    {\n        Id = \"qinq1\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentSdnZoneQinq\"] = \n        {\n            { \"id\", example.Apply(getQinqLegacyResult =\u003e getQinqLegacyResult.Id) },\n            { \"nodes\", example.Apply(getQinqLegacyResult =\u003e getQinqLegacyResult.Nodes) },\n            { \"bridge\", example.Apply(getQinqLegacyResult =\u003e getQinqLegacyResult.Bridge) },\n            { \"serviceVlan\", example.Apply(getQinqLegacyResult =\u003e getQinqLegacyResult.ServiceVlan) },\n            { \"serviceVlanProtocol\", example.Apply(getQinqLegacyResult =\u003e getQinqLegacyResult.ServiceVlanProtocol) },\n            { \"mtu\", example.Apply(getQinqLegacyResult =\u003e getQinqLegacyResult.Mtu) },\n            { \"dns\", example.Apply(getQinqLegacyResult =\u003e getQinqLegacyResult.Dns) },\n            { \"dnsZone\", example.Apply(getQinqLegacyResult =\u003e getQinqLegacyResult.DnsZone) },\n            { \"ipam\", example.Apply(getQinqLegacyResult =\u003e getQinqLegacyResult.Ipam) },\n            { \"reverseDns\", example.Apply(getQinqLegacyResult =\u003e getQinqLegacyResult.ReverseDns) },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.GetQinqLegacy(ctx, \u0026zone.GetQinqLegacyArgs{\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.sdn_zone.Sdn_zoneFunctions;\nimport com.pulumi.proxmoxve.sdn.inputs.GetQinqLegacyArgs;\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 = Sdn_zoneFunctions.getQinqLegacy(GetQinqLegacyArgs.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:sdn/zone:getQinqLegacy\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 getQinqLegacy.\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 getQinqLegacy.\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:sdn/zone/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.sdn.zone.getSimple({\n    id: \"simple1\",\n});\nexport const dataProxmoxSdnZoneSimple = {\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.sdn.zone.get_simple(id=\"simple1\")\npulumi.export(\"dataProxmoxSdnZoneSimple\", {\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.Sdn.Zone.GetSimple.Invoke(new()\n    {\n        Id = \"simple1\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxSdnZoneSimple\"] = \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/v8/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.GetSimple(ctx, \u0026zone.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(\"dataProxmoxSdnZoneSimple\", 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.sdn_zone.Sdn_zoneFunctions;\nimport com.pulumi.proxmoxve.sdn.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 = Sdn_zoneFunctions.getSimple(GetSimpleArgs.builder()\n            .id(\"simple1\")\n            .build());\n\n        ctx.export(\"dataProxmoxSdnZoneSimple\", 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:sdn/zone:getSimple\n      arguments:\n        id: simple1\noutputs:\n  dataProxmoxSdnZoneSimple:\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:sdn/zone/getSimpleLegacy:getSimpleLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.sdn/zone.Simple`\" pulumi-lang-dotnet=\"`proxmoxve.sdn/zone.Simple`\" pulumi-lang-go=\"`sdn/zone.Simple`\" pulumi-lang-python=\"`sdn/zone.Simple`\" pulumi-lang-yaml=\"`proxmoxve.sdn/zone.Simple`\" pulumi-lang-java=\"`proxmoxve.sdn/zone.Simple`\"\u003e`proxmoxve.sdn/zone.Simple`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieves 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.sdn.zone.getSimpleLegacy({\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.sdn.zone.get_simple_legacy(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.Sdn.Zone.GetSimpleLegacy.Invoke(new()\n    {\n        Id = \"simple1\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentSdnZoneSimple\"] = \n        {\n            { \"id\", example.Apply(getSimpleLegacyResult =\u003e getSimpleLegacyResult.Id) },\n            { \"nodes\", example.Apply(getSimpleLegacyResult =\u003e getSimpleLegacyResult.Nodes) },\n            { \"mtu\", example.Apply(getSimpleLegacyResult =\u003e getSimpleLegacyResult.Mtu) },\n            { \"dns\", example.Apply(getSimpleLegacyResult =\u003e getSimpleLegacyResult.Dns) },\n            { \"dnsZone\", example.Apply(getSimpleLegacyResult =\u003e getSimpleLegacyResult.DnsZone) },\n            { \"ipam\", example.Apply(getSimpleLegacyResult =\u003e getSimpleLegacyResult.Ipam) },\n            { \"reverseDns\", example.Apply(getSimpleLegacyResult =\u003e getSimpleLegacyResult.ReverseDns) },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.GetSimpleLegacy(ctx, \u0026zone.GetSimpleLegacyArgs{\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.sdn_zone.Sdn_zoneFunctions;\nimport com.pulumi.proxmoxve.sdn.inputs.GetSimpleLegacyArgs;\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 = Sdn_zoneFunctions.getSimpleLegacy(GetSimpleLegacyArgs.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:sdn/zone:getSimpleLegacy\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 getSimpleLegacy.\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 getSimpleLegacy.\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:sdn/zone/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.sdn.zone.getVlan({\n    id: \"vlan1\",\n});\nexport const dataProxmoxSdnZoneVlan = {\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.sdn.zone.get_vlan(id=\"vlan1\")\npulumi.export(\"dataProxmoxSdnZoneVlan\", {\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.Sdn.Zone.GetVlan.Invoke(new()\n    {\n        Id = \"vlan1\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxSdnZoneVlan\"] = \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/v8/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.GetVlan(ctx, \u0026zone.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(\"dataProxmoxSdnZoneVlan\", 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.sdn_zone.Sdn_zoneFunctions;\nimport com.pulumi.proxmoxve.sdn.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 = Sdn_zoneFunctions.getVlan(GetVlanArgs.builder()\n            .id(\"vlan1\")\n            .build());\n\n        ctx.export(\"dataProxmoxSdnZoneVlan\", 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:sdn/zone:getVlan\n      arguments:\n        id: vlan1\noutputs:\n  dataProxmoxSdnZoneVlan:\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:sdn/zone/getVlanLegacy:getVlanLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.sdn/zone.Vlan`\" pulumi-lang-dotnet=\"`proxmoxve.sdn/zone.Vlan`\" pulumi-lang-go=\"`sdn/zone.Vlan`\" pulumi-lang-python=\"`sdn/zone.Vlan`\" pulumi-lang-yaml=\"`proxmoxve.sdn/zone.Vlan`\" pulumi-lang-java=\"`proxmoxve.sdn/zone.Vlan`\"\u003e`proxmoxve.sdn/zone.Vlan`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieves 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.sdn.zone.getVlanLegacy({\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.sdn.zone.get_vlan_legacy(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.Sdn.Zone.GetVlanLegacy.Invoke(new()\n    {\n        Id = \"vlan1\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentSdnZoneVlan\"] = \n        {\n            { \"id\", example.Apply(getVlanLegacyResult =\u003e getVlanLegacyResult.Id) },\n            { \"nodes\", example.Apply(getVlanLegacyResult =\u003e getVlanLegacyResult.Nodes) },\n            { \"bridge\", example.Apply(getVlanLegacyResult =\u003e getVlanLegacyResult.Bridge) },\n            { \"mtu\", example.Apply(getVlanLegacyResult =\u003e getVlanLegacyResult.Mtu) },\n            { \"dns\", example.Apply(getVlanLegacyResult =\u003e getVlanLegacyResult.Dns) },\n            { \"dnsZone\", example.Apply(getVlanLegacyResult =\u003e getVlanLegacyResult.DnsZone) },\n            { \"ipam\", example.Apply(getVlanLegacyResult =\u003e getVlanLegacyResult.Ipam) },\n            { \"reverseDns\", example.Apply(getVlanLegacyResult =\u003e getVlanLegacyResult.ReverseDns) },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.GetVlanLegacy(ctx, \u0026zone.GetVlanLegacyArgs{\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.sdn_zone.Sdn_zoneFunctions;\nimport com.pulumi.proxmoxve.sdn.inputs.GetVlanLegacyArgs;\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 = Sdn_zoneFunctions.getVlanLegacy(GetVlanLegacyArgs.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:sdn/zone:getVlanLegacy\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 getVlanLegacy.\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 getVlanLegacy.\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:sdn/zone/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.sdn.zone.getVxlan({\n    id: \"vxlan1\",\n});\nexport const dataProxmoxSdnZoneVxlan = {\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.sdn.zone.get_vxlan(id=\"vxlan1\")\npulumi.export(\"dataProxmoxSdnZoneVxlan\", {\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.Sdn.Zone.GetVxlan.Invoke(new()\n    {\n        Id = \"vxlan1\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxSdnZoneVxlan\"] = \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/v8/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.GetVxlan(ctx, \u0026zone.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(\"dataProxmoxSdnZoneVxlan\", 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.sdn_zone.Sdn_zoneFunctions;\nimport com.pulumi.proxmoxve.sdn.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 = Sdn_zoneFunctions.getVxlan(GetVxlanArgs.builder()\n            .id(\"vxlan1\")\n            .build());\n\n        ctx.export(\"dataProxmoxSdnZoneVxlan\", 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:sdn/zone:getVxlan\n      arguments:\n        id: vxlan1\noutputs:\n  dataProxmoxSdnZoneVxlan:\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/zone/getVxlanLegacy:getVxlanLegacy": {
            "description": "\u003e **Deprecated:** Use \u003cspan pulumi-lang-nodejs=\"`proxmoxve.sdn/zone.Vxlan`\" pulumi-lang-dotnet=\"`proxmoxve.sdn/zone.Vxlan`\" pulumi-lang-go=\"`sdn/zone.Vxlan`\" pulumi-lang-python=\"`sdn/zone.Vxlan`\" pulumi-lang-yaml=\"`proxmoxve.sdn/zone.Vxlan`\" pulumi-lang-java=\"`proxmoxve.sdn/zone.Vxlan`\"\u003e`proxmoxve.sdn/zone.Vxlan`\u003c/span\u003e instead. This data source will be removed in v1.0.\n\nRetrieves 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.sdn.zone.getVxlanLegacy({\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.sdn.zone.get_vxlan_legacy(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.Sdn.Zone.GetVxlanLegacy.Invoke(new()\n    {\n        Id = \"vxlan1\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dataProxmoxVirtualEnvironmentSdnZoneVxlan\"] = \n        {\n            { \"id\", example.Apply(getVxlanLegacyResult =\u003e getVxlanLegacyResult.Id) },\n            { \"nodes\", example.Apply(getVxlanLegacyResult =\u003e getVxlanLegacyResult.Nodes) },\n            { \"peers\", example.Apply(getVxlanLegacyResult =\u003e getVxlanLegacyResult.Peers) },\n            { \"mtu\", example.Apply(getVxlanLegacyResult =\u003e getVxlanLegacyResult.Mtu) },\n            { \"dns\", example.Apply(getVxlanLegacyResult =\u003e getVxlanLegacyResult.Dns) },\n            { \"dnsZone\", example.Apply(getVxlanLegacyResult =\u003e getVxlanLegacyResult.DnsZone) },\n            { \"ipam\", example.Apply(getVxlanLegacyResult =\u003e getVxlanLegacyResult.Ipam) },\n            { \"reverseDns\", example.Apply(getVxlanLegacyResult =\u003e getVxlanLegacyResult.ReverseDns) },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v8/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.GetVxlanLegacy(ctx, \u0026zone.GetVxlanLegacyArgs{\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.sdn_zone.Sdn_zoneFunctions;\nimport com.pulumi.proxmoxve.sdn.inputs.GetVxlanLegacyArgs;\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 = Sdn_zoneFunctions.getVxlanLegacy(GetVxlanLegacyArgs.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:sdn/zone:getVxlanLegacy\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 getVxlanLegacy.\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 getVxlanLegacy.\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"
            }
        },
        "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"
            }
        }
    }
}