From 45ca9ba887c5c14cfb98d5ec025b881f26c5fe11 Mon Sep 17 00:00:00 2001 From: Daniel Muehlbachler-Pietrzykowski Date: Thu, 21 Nov 2024 14:10:48 +0100 Subject: [PATCH] feat: prepare for upstream release v0.67.1 --- .../schema-embed.json | 2 +- .../cmd/pulumi-resource-proxmoxve/schema.json | 8 +- provider/go.mod | 47 ---- provider/go.sum | 108 +-------- sdk/dotnet/Cluster/Options.cs | 6 +- sdk/dotnet/Storage/File.cs | 4 +- sdk/go/proxmoxve/cluster/options.go | 12 +- sdk/go/proxmoxve/storage/file.go | 4 +- .../pulumi/proxmoxve/cluster/Options.java | 4 +- .../pulumi/proxmoxve/cluster/OptionsArgs.java | 8 +- .../cluster/inputs/OptionsState.java | 8 +- .../pulumi/proxmoxve/storage/File.java | 4 +- sdk/nodejs/.pnp.cjs | 205 +++++++++--------- sdk/nodejs/.yarn/install-state.gz | Bin 222757 -> 227109 bytes sdk/nodejs/cluster/options.ts | 6 +- sdk/nodejs/storage/file.ts | 4 +- .../pulumi_proxmoxve/cluster/options.py | 14 +- sdk/python/pulumi_proxmoxve/storage/file.py | 8 +- 18 files changed, 170 insertions(+), 282 deletions(-) diff --git a/provider/cmd/pulumi-resource-proxmoxve/schema-embed.json b/provider/cmd/pulumi-resource-proxmoxve/schema-embed.json index 50bd341a..9392a85e 100644 --- a/provider/cmd/pulumi-resource-proxmoxve/schema-embed.json +++ b/provider/cmd/pulumi-resource-proxmoxve/schema-embed.json @@ -1 +1 @@ -{"name":"proxmoxve","displayName":"Proxmox Virtual Environment (Proxmox VE)","version":"6.16.0-alpha.1731320972+d771c9ad.dirty","description":"A Pulumi package for creating and managing Proxmox Virtual Environment cloud resources.","keywords":["pulumi","proxmox","proxmoxve"],"homepage":"https://github.com/muhlba91/pulumi-proxmoxve","license":"Apache-2.0","attribution":"This Pulumi package is based on the [`proxmox` Terraform Provider](https://github.com/bpg/terraform-provider-proxmox).","repository":"https://github.com/muhlba91/pulumi-proxmoxve","logoUrl":"https://raw.githubusercontent.com/muhlba91/pulumi-proxmoxve/main/assets/proxmox-logo.png","pluginDownloadURL":"github://api.github.com/muhlba91/pulumi-proxmoxve","publisher":"Daniel Muehlbachler-Pietrzykowski","meta":{"moduleFormat":"(.*)(?:/[^/]*)"},"language":{"csharp":{"packageReferences":{"Pulumi":"3.*"},"namespaces":{"proxmoxve":"ProxmoxVE"},"compatibility":"tfbridge20"},"go":{"importBasePath":"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve","generateResourceContainerTypes":true,"generateExtraInputTypes":true},"java":{"basePackage":"io.muehlbachler.pulumi","buildFiles":"","gradleNexusPublishPluginVersion":"","gradleTest":""},"nodejs":{"packageName":"@muhlba91/pulumi-proxmoxve","packageDescription":"A Pulumi package for creating and managing Proxmox Virtual Environment cloud resources.","readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/bpg/terraform-provider-proxmox)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-proxmoxve` repo](https://github.com/muhlba91/pulumi-proxmoxve/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-proxmox` repo](https://github.com/bpg/terraform-provider-proxmox/issues).","dependencies":{"@pulumi/pulumi":"^3.0.0"},"devDependencies":{"@types/mime":"^2.0.0","@types/node":"^10.0.0"},"compatibility":"tfbridge20","disableUnionOutputTypes":true},"python":{"packageName":"pulumi_proxmoxve","requires":{"pulumi":"\u003e=3.0.0,\u003c4.0.0"},"readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/bpg/terraform-provider-proxmox)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-proxmoxve` repo](https://github.com/muhlba91/pulumi-proxmoxve/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-proxmox` repo](https://github.com/bpg/terraform-provider-proxmox/issues).","compatibility":"tfbridge20","pyproject":{}}},"config":{"variables":{"apiToken":{"type":"string","description":"The API token for the Proxmox VE API.\n","secret":true},"authTicket":{"type":"string","description":"The pre-authenticated Ticket for the Proxmox VE API.\n","secret":true},"csrfPreventionToken":{"type":"string","description":"The pre-authenticated CSRF Prevention Token for the Proxmox VE API.\n","secret":true},"endpoint":{"type":"string","description":"The endpoint for the Proxmox VE API.\n"},"insecure":{"type":"boolean","description":"Whether to skip the TLS verification step.\n"},"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`.\n"},"otp":{"type":"string","description":"The one-time password for the Proxmox VE API.\n","deprecationMessage":"The `otp` attribute is deprecated and will be removed in a future release. Please use the `api_token` attribute instead."},"password":{"type":"string","description":"The password for the Proxmox VE API.\n","secret":true},"randomVmIdEnd":{"type":"integer","description":"The ending number for random VM / Container IDs.\n"},"randomVmIdStart":{"type":"integer","description":"The starting number for random VM / Container IDs.\n"},"randomVmIds":{"type":"boolean","description":"Whether to generate random VM / Container IDs.\n"},"ssh":{"$ref":"#/types/proxmoxve:config/ssh:ssh","description":"The SSH configuration for the Proxmox nodes.\n"},"tmpDir":{"type":"string","description":"The alternative temporary directory.\n"},"username":{"type":"string","description":"The username for the Proxmox VE API.\n"}}},"types":{"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 `valid`, `deactivated` or `revoked`.\n"}},"type":"object","required":["contacts","createdAt","status"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Acme/getPluginsPlugin:getPluginsPlugin":{"properties":{"api":{"type":"string","description":"API plugin name.\n"},"data":{"type":"object","additionalProperties":{"type":"string"},"description":"DNS plugin data.\n"},"digest":{"type":"string","description":"Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.\n"},"plugin":{"type":"string","description":"ACME Plugin ID name.\n"},"type":{"type":"string","description":"ACME challenge type (dns, standalone).\n"},"validationDelay":{"type":"integer","description":"Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records (0 - 172800).\n"}},"type":"object","required":["api","data","digest","plugin","type","validationDelay"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:CT/ContainerClone:ContainerClone":{"properties":{"datastoreId":{"type":"string","description":"The identifier for the target datastore.\n","willReplaceOnChanges":true},"nodeName":{"type":"string","description":"The name of the source node (leave blank, if\nequal to the `node_name` argument).\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"The identifier for the source container.\n","willReplaceOnChanges":true}},"type":"object","required":["vmId"]},"proxmoxve:CT/ContainerConsole:ContainerConsole":{"properties":{"enabled":{"type":"boolean","description":"Whether to enable the console device (defaults\nto `true`).\n"},"ttyCount":{"type":"integer","description":"The number of available TTY (defaults to `2`).\n"},"type":{"type":"string","description":"The console mode (defaults to `tty`).\n"}},"type":"object"},"proxmoxve:CT/ContainerCpu:ContainerCpu":{"properties":{"architecture":{"type":"string","description":"The CPU architecture (defaults to `amd64`).\n"},"cores":{"type":"integer","description":"The number of CPU cores (defaults to `1`).\n"},"units":{"type":"integer","description":"The CPU units (defaults to `1024`).\n"}},"type":"object"},"proxmoxve:CT/ContainerDisk:ContainerDisk":{"properties":{"datastoreId":{"type":"string","description":"The identifier for the datastore to create the\ndisk in (defaults to `local`).\n","willReplaceOnChanges":true},"size":{"type":"integer","description":"The size of the root filesystem in gigabytes (defaults\nto `4`). Requires `datastore_id` to be set.\n","willReplaceOnChanges":true}},"type":"object"},"proxmoxve:CT/ContainerFeatures:ContainerFeatures":{"properties":{"fuse":{"type":"boolean","description":"Whether the container supports FUSE mounts (defaults\nto `false`)\n"},"keyctl":{"type":"boolean","description":"Whether the container supports `keyctl()` system\ncall (defaults to `false`)\n"},"mounts":{"type":"array","items":{"type":"string"},"description":"List of allowed mount types (`cifs` or `nfs`)\n"},"nesting":{"type":"boolean","description":"Whether the container is nested (defaults\nto `false`)\n"}},"type":"object"},"proxmoxve:CT/ContainerInitialization:ContainerInitialization":{"properties":{"dns":{"$ref":"#/types/proxmoxve:CT/ContainerInitializationDns:ContainerInitializationDns","description":"The DNS configuration.\n"},"hostname":{"type":"string","description":"The hostname.\n"},"ipConfigs":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerInitializationIpConfig:ContainerInitializationIpConfig"},"description":"The IP configuration (one block per network\ndevice).\n"},"userAccount":{"$ref":"#/types/proxmoxve:CT/ContainerInitializationUserAccount:ContainerInitializationUserAccount","description":"The user account configuration.\n","willReplaceOnChanges":true}},"type":"object"},"proxmoxve:CT/ContainerInitializationDns:ContainerInitializationDns":{"properties":{"domain":{"type":"string","description":"The DNS search domain.\n"},"server":{"type":"string","description":"The DNS server. The `server` attribute is\ndeprecated and will be removed in a future release. Please use\nthe `servers` attribute instead.\n","deprecationMessage":"The `server` attribute is deprecated and will be removed in a future release. Please use the `servers` attribute instead."},"servers":{"type":"array","items":{"type":"string"},"description":"The list of DNS servers.\n"}},"type":"object"},"proxmoxve:CT/ContainerInitializationIpConfig:ContainerInitializationIpConfig":{"properties":{"ipv4":{"$ref":"#/types/proxmoxve:CT/ContainerInitializationIpConfigIpv4:ContainerInitializationIpConfigIpv4","description":"The IPv4 configuration.\n"},"ipv6":{"$ref":"#/types/proxmoxve:CT/ContainerInitializationIpConfigIpv6:ContainerInitializationIpConfigIpv6","description":"The IPv4 configuration.\n"}},"type":"object"},"proxmoxve:CT/ContainerInitializationIpConfigIpv4:ContainerInitializationIpConfigIpv4":{"properties":{"address":{"type":"string","description":"The IPv4 address (use `dhcp` for auto-discovery).\n"},"gateway":{"type":"string","description":"The IPv4 gateway (must be omitted\nwhen `dhcp` is used as the address).\n"}},"type":"object"},"proxmoxve:CT/ContainerInitializationIpConfigIpv6:ContainerInitializationIpConfigIpv6":{"properties":{"address":{"type":"string","description":"The IPv6 address (use `dhcp` for auto-discovery).\n"},"gateway":{"type":"string","description":"The IPv6 gateway (must be omitted\nwhen `dhcp` is used as the address).\n"}},"type":"object"},"proxmoxve:CT/ContainerInitializationUserAccount:ContainerInitializationUserAccount":{"properties":{"keys":{"type":"array","items":{"type":"string"},"description":"The SSH keys for the root account.\n","willReplaceOnChanges":true},"password":{"type":"string","description":"The password for the root account.\n","secret":true,"willReplaceOnChanges":true}},"type":"object"},"proxmoxve:CT/ContainerMemory:ContainerMemory":{"properties":{"dedicated":{"type":"integer","description":"The dedicated memory in megabytes (defaults\nto `512`).\n"},"swap":{"type":"integer","description":"The swap size in megabytes (defaults to `0`).\n"}},"type":"object"},"proxmoxve:CT/ContainerMountPoint:ContainerMountPoint":{"properties":{"acl":{"type":"boolean","description":"Explicitly enable or disable ACL support.\n"},"backup":{"type":"boolean","description":"Whether to include the mount point in backups (only\nused for volume mount points, defaults to `false`).\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"},"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"},"volume":{"type":"string","description":"Volume, device or directory to mount into the\ncontainer.\n"}},"type":"object","required":["path","volume"]},"proxmoxve:CT/ContainerNetworkInterface:ContainerNetworkInterface":{"properties":{"bridge":{"type":"string","description":"The name of the network bridge (defaults\nto `vmbr0`).\n"},"enabled":{"type":"boolean","description":"Whether to enable the network device (defaults\nto `true`).\n"},"firewall":{"type":"boolean","description":"Whether this interface's firewall rules should be\nused (defaults to `false`).\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"]},"proxmoxve:CT/ContainerOperatingSystem:ContainerOperatingSystem":{"properties":{"templateFileId":{"type":"string","description":"The identifier for an OS template file.\nThe ID format is `\u003cdatastore_id\u003e:\u003ccontent_type\u003e/\u003cfile_name\u003e`, for example `local:iso/jammy-server-cloudimg-amd64.tar.gz`.\nCan be also taken from `proxmoxve.Download.File` resource, or from the output of `pvesm list \u003cstorage\u003e`.\n","willReplaceOnChanges":true},"type":{"type":"string","description":"The type (defaults to `unmanaged`).\n"}},"type":"object","required":["templateFileId"]},"proxmoxve:CT/ContainerStartup:ContainerStartup":{"properties":{"downDelay":{"type":"integer","description":"A non-negative number defining the delay in\nseconds before the next container is shut down.\n"},"order":{"type":"integer","description":"A non-negative number defining the general startup\norder.\n"},"upDelay":{"type":"integer","description":"A non-negative number defining the delay in\nseconds before the next container is started.\n"}},"type":"object"},"proxmoxve: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 `always` | `never`.\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 `auto` | `always` | `never`.\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 `always` | `never`.\n"},"replicationTarget":{"type":"string","description":"Cluster-wide notification settings for the replication target.\n"}},"type":"object"},"proxmoxve:Hardware/getMappingsCheck:getMappingsCheck":{"properties":{"mappingId":{"type":"string","description":"The corresponding hardware mapping ID of the node check diagnostic entry.\n"},"message":{"type":"string","description":"The message of the node check diagnostic entry.\n"},"severity":{"type":"string","description":"The severity of the node check diagnostic entry.\n"}},"type":"object","required":["mappingId","message","severity"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Hardware/mapping/PciMap:PciMap":{"properties":{"comment":{"type":"string","description":"The comment of the mapped PCI device.\n"},"id":{"type":"string","description":"The ID of the map.\n"},"iommuGroup":{"type":"integer","description":"The IOMMU group of the map. Not mandatory for the Proxmox VE API call, but causes a PCI hardware mapping to be incomplete when not set\n"},"node":{"type":"string","description":"The node name of the map.\n"},"path":{"type":"string","description":"The path of the map.\n"},"subsystemId":{"type":"string","description":"The subsystem ID group of the map. Not mandatory for the Proxmox VE API call, but causes a PCI hardware mapping to be incomplete when not set\n"}},"type":"object","required":["id","node","path"]},"proxmoxve:Hardware/mapping/UsbMap:UsbMap":{"properties":{"comment":{"type":"string","description":"The comment of the mapped USB device.\n"},"id":{"type":"string","description":"The ID of the map.\n"},"node":{"type":"string","description":"The node name of the map.\n"},"path":{"type":"string","description":"The path of the map. For hardware mappings of type USB the path is optional and indicates that the device is mapped through the device ID instead of ports.\n"}},"type":"object","required":["id","node"]},"proxmoxve:Hardware/mapping/getPciMap:getPciMap":{"properties":{"comment":{"type":"string","description":"The comment of the mapped PCI device.\n"},"id":{"type":"string","description":"The ID attribute of the map.\n"},"iommuGroup":{"type":"integer","description":"The IOMMU group attribute of the map.\n"},"node":{"type":"string","description":"The node name attribute of the map.\n"},"path":{"type":"string","description":"The path attribute of the map.\n"},"subsystemId":{"type":"string","description":"The subsystem ID attribute of the map.Not mandatory for the Proxmox VE API call, but causes a PCI hardware mapping to be incomplete when not set.\n"}},"type":"object","required":["comment","id","iommuGroup","node","path","subsystemId"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Hardware/mapping/getUsbMap:getUsbMap":{"properties":{"comment":{"type":"string","description":"The comment of the mapped USB device.\n"},"id":{"type":"string","description":"The ID attribute of the map.\n"},"node":{"type":"string","description":"The node name attribute of the map.\n"},"path":{"type":"string","description":"The path attribute of the map.\n"}},"type":"object","required":["comment","id","node","path"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Network/FirewallIPSetCidr:FirewallIPSetCidr":{"properties":{"comment":{"type":"string","description":"Arbitrary string annotation.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"Network/IP specification in CIDR format.\n","willReplaceOnChanges":true},"nomatch":{"type":"boolean","description":"Entries marked as `nomatch` are skipped as if those\nwere not added to the set.\n","willReplaceOnChanges":true}},"type":"object","required":["name"]},"proxmoxve:Network/FirewallLogRatelimit:FirewallLogRatelimit":{"properties":{"burst":{"type":"integer","description":"Initial burst of packages which will always get\nlogged before the rate is applied (defaults to `5`).\n"},"enabled":{"type":"boolean","description":"Enable or disable the log rate limit.\n"},"rate":{"type":"string","description":"Frequency with which the burst bucket gets refilled\n(defaults to `1/second`).\n"}},"type":"object"},"proxmoxve:Network/FirewallRulesRule:FirewallRulesRule":{"properties":{"action":{"type":"string","description":"Rule action (`ACCEPT`, `DROP`, `REJECT`).\n"},"comment":{"type":"string","description":"Rule comment.\n"},"dest":{"type":"string","description":"Restrict packet destination address. This can\nrefer to a single IP address, an IP set ('+ipsetname') or an IP\nalias definition. You can also specify an address range\nlike `20.34.101.207-201.3.9.99`, or a list of IP addresses and\nnetworks (entries are separated by comma). Please do not mix IPv4\nand IPv6 addresses inside such lists.\n"},"dport":{"type":"string","description":"Restrict TCP/UDP destination port. You can use\nservice names or simple numbers (0-65535), as defined\nin `/etc/services`. Port ranges can be specified with '\\d+:\\d+', for\nexample `80:85`, and you can use comma separated list to match\nseveral ports or ranges.\n"},"enabled":{"type":"boolean","description":"Enable this rule. Defaults to `true`.\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 (`emerg`, `alert`, `crit`,\n`err`, `warning`, `notice`, `info`, `debug`, `nolog`).\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","willReplaceOnChanges":true},"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 (`in`, `out`).\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["pos"]}}},"proxmoxve:Network/FirewallSecurityGroupRule:FirewallSecurityGroupRule":{"properties":{"action":{"type":"string","description":"Rule action (`ACCEPT`, `DROP`, `REJECT`).\n"},"comment":{"type":"string","description":"Rule comment.\n"},"dest":{"type":"string","description":"Restrict packet destination address. This can refer to\na single IP address, an IP set ('+ipsetname') or an IP alias\ndefinition. You can also specify an address range like\n`20.34.101.207-201.3.9.99`, or a list of IP addresses and networks\n(entries are separated by comma). Please do not mix IPv4 and IPv6\naddresses inside such lists.\n"},"dport":{"type":"string","description":"Restrict TCP/UDP destination port. You can use\nservice names or simple numbers (0-65535), as defined in '/etc/\nservices'. Port ranges can be specified with '\\d+:\\d+', for example\n`80:85`, and you can use comma separated list to match several ports or\nranges.\n"},"enabled":{"type":"boolean","description":"Enable rule\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 (`emerg`, `alert`, `crit`,\n`err`, `warning`, `notice`, `info`, `debug`, `nolog`).\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","willReplaceOnChanges":true},"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 (`in`, `out`).\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["pos"]}}},"proxmoxve:Network/getHostsEntry:getHostsEntry":{"properties":{"address":{"type":"string","description":"The address\n"},"hostnames":{"type":"array","items":{"type":"string"},"description":"The hostnames associated with each of the IP addresses.\n"}},"type":"object","required":["address","hostnames"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Permission/GroupAcl:GroupAcl":{"properties":{"path":{"type":"string","description":"The path.\n"},"propagate":{"type":"boolean","description":"Whether to propagate to child paths.\n"},"roleId":{"type":"string","description":"The role identifier.\n"}},"type":"object","required":["path","roleId"]},"proxmoxve:Permission/PoolMember:PoolMember":{"properties":{"datastoreId":{"type":"string","description":"The datastore identifier.\n"},"id":{"type":"string","description":"The member identifier.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"type":{"type":"string","description":"The member type.\n"},"vmId":{"type":"integer","description":"The virtual machine identifier.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["datastoreId","id","nodeName","type","vmId"]}}},"proxmoxve:Permission/UserAcl:UserAcl":{"properties":{"path":{"type":"string","description":"The path.\n"},"propagate":{"type":"boolean","description":"Whether to propagate to child paths.\n"},"roleId":{"type":"string","description":"The role identifier.\n"}},"type":"object","required":["path","roleId"]},"proxmoxve:Permission/getGroupAcl:getGroupAcl":{"properties":{"path":{"type":"string","description":"The path.\n"},"propagate":{"type":"boolean","description":"Whether to propagate to child paths.\n"},"roleId":{"type":"string","description":"The role identifier.\n"}},"type":"object","required":["path","propagate","roleId"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Permission/getPoolMember:getPoolMember":{"properties":{"datastoreId":{"type":"string","description":"The datastore identifier.\n"},"id":{"type":"string","description":"The member identifier.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"type":{"type":"string","description":"The member type.\n"},"vmId":{"type":"integer","description":"The virtual machine identifier.\n"}},"type":"object","required":["datastoreId","id","nodeName","type","vmId"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Permission/getUserAcl:getUserAcl":{"properties":{"path":{"type":"string","description":"The path.\n"},"propagate":{"type":"boolean","description":"Whether to propagate to child paths.\n"},"roleId":{"type":"string","description":"The role identifier.\n"}},"type":"object","required":["path","propagate","roleId"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Storage/FileSourceFile:FileSourceFile":{"properties":{"changed":{"type":"boolean","description":"Whether the source file has changed since the last run\n","willReplaceOnChanges":true},"checksum":{"type":"string","description":"The SHA256 checksum of the source file.\n","willReplaceOnChanges":true},"fileName":{"type":"string","description":"The file name to use instead of the source file\nname. Useful when the source file does not have a valid file extension,\nfor example when the source file is a URL referencing a `.qcow2` image.\n","willReplaceOnChanges":true},"insecure":{"type":"boolean","description":"Whether to skip the TLS verification step for\nHTTPS sources (defaults to `false`).\n","willReplaceOnChanges":true},"minTls":{"type":"string","description":"The minimum required TLS version for HTTPS\nsources. \"Supported values: `1.0|1.1|1.2|1.3` (defaults to `1.3`).\n","willReplaceOnChanges":true},"path":{"type":"string","description":"A path to a local file or a URL.\n","willReplaceOnChanges":true}},"type":"object","required":["path"]},"proxmoxve:Storage/FileSourceRaw:FileSourceRaw":{"properties":{"data":{"type":"string","description":"The raw data.\n","willReplaceOnChanges":true},"fileName":{"type":"string","description":"The file name.\n","willReplaceOnChanges":true},"resize":{"type":"integer","description":"The number of bytes to resize the file to.\n","willReplaceOnChanges":true}},"type":"object","required":["data","fileName"]},"proxmoxve:VM/VirtualMachine2Cdrom:VirtualMachine2Cdrom":{"properties":{"fileId":{"type":"string","description":"The file ID of the CD-ROM, or `cdrom|none`. Defaults to `none` to leave the CD-ROM empty. Use `cdrom` to connect to the physical drive.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["fileId"]}}},"proxmoxve:VM/VirtualMachine2Clone:VirtualMachine2Clone":{"properties":{"id":{"type":"integer","description":"The ID of the VM to clone.\n"},"retries":{"type":"integer","description":"The number of retries to perform when cloning the VM (default: 3).\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredOutputs":["id","retries"]}}},"proxmoxve:VM/VirtualMachine2Cpu:VirtualMachine2Cpu":{"properties":{"affinity":{"type":"string","description":"The CPU cores that are used to run the VM’s vCPU. The value is a list of CPU IDs, separated by commas. The CPU IDs are zero-based. For example, `0,1,2,3` (which also can be shortened to `0-3`) means that the VM’s vCPUs are run on the first four CPU cores. Setting `affinity` 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 `affinity` is only allowed for `root@pam` authenticated user.\n"},"cores":{"type":"integer","description":"The number of CPU cores per socket (defaults to `1`).\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: `pcid`, `spec-ctrl`, `ibpb`, `ssbd`, `virt-ssbd`, `amd-ssbd`, `amd-no-ssb`, `pdpe1gb`, `md-clear`, `hv-tlbflush`, `hv-evmcs`, `aes`.\n"},"hotplugged":{"type":"integer","description":"The number of hotplugged vCPUs (defaults to `0`).\n"},"limit":{"type":"integer","description":"Limit of CPU usage (defaults to `0` which means no limit).\n"},"numa":{"type":"boolean","description":"Enable NUMA (defaults to `false`).\n"},"sockets":{"type":"integer","description":"The number of CPU sockets (defaults to `1`).\n"},"type":{"type":"string","description":"Emulated CPU type, it's recommended to use `x86-64-v2-AES` or higher (defaults to `kvm64`). See https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm*virtual*machines_settings for more information.\n"},"units":{"type":"integer","description":"CPU weight for a VM. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this VM gets. Number is relative to weights of all the other running VMs.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["affinity","architecture","cores","flags","hotplugged","limit","numa","sockets","type","units"]}}},"proxmoxve:VM/VirtualMachine2Timeouts:VirtualMachine2Timeouts":{"properties":{"create":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"},"delete":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"},"read":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"},"update":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachine2Vga:VirtualMachine2Vga":{"properties":{"clipboard":{"type":"string","description":"Enable a specific clipboard. If not set, depending on the display type the SPICE one will be added. Currently only `vnc` 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 `std`).\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["clipboard","memory","type"]}}},"proxmoxve:VM/VirtualMachineAgent:VirtualMachineAgent":{"properties":{"enabled":{"type":"boolean","description":"Whether to enable the QEMU agent (defaults\nto `false`).\n"},"timeout":{"type":"string","description":"The maximum amount of time to wait for data from\nthe QEMU agent to become available ( defaults to `15m`).\n"},"trim":{"type":"boolean","description":"Whether to enable the FSTRIM feature in the QEMU agent\n(defaults to `false`).\n"},"type":{"type":"string","description":"The QEMU agent interface type (defaults to `virtio`).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineAudioDevice:VirtualMachineAudioDevice":{"properties":{"device":{"type":"string","description":"The device (defaults to `intel-hda`).\n- `AC97` - Intel 82801AA AC97 Audio.\n- `ich9-intel-hda` - Intel HD Audio Controller (ich9).\n- `intel-hda` - Intel HD Audio.\n"},"driver":{"type":"string","description":"The driver (defaults to `spice`).\n"},"enabled":{"type":"boolean","description":"Whether to enable the audio device (defaults\nto `true`).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineCdrom:VirtualMachineCdrom":{"properties":{"enabled":{"type":"boolean","description":"Whether to enable the CDROM drive (defaults\nto `false`).\n"},"fileId":{"type":"string","description":"A file ID for an ISO file (defaults to `cdrom` as\nin the physical drive). Use `none` to leave the CDROM drive empty.\n"},"interface":{"type":"string","description":"A hardware interface to connect CDROM drive to,\nmust be `ideN` (defaults to `ide3`). Note that `q35` machine type only\nsupports `ide0` and `ide2`.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineClone:VirtualMachineClone":{"properties":{"datastoreId":{"type":"string","description":"The identifier for the target datastore.\n","willReplaceOnChanges":true},"full":{"type":"boolean","description":"Full or linked clone (defaults to `true`).\n","willReplaceOnChanges":true},"nodeName":{"type":"string","description":"The name of the source node (leave blank, if\nequal to the `node_name` argument).\n","willReplaceOnChanges":true},"retries":{"type":"integer","description":"Number of retries in Proxmox for clone vm.\nSometimes Proxmox errors with timeout when creating multiple clones at\nonce.\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"The identifier for the source VM.\n","willReplaceOnChanges":true}},"type":"object","required":["vmId"]},"proxmoxve:VM/VirtualMachineCpu:VirtualMachineCpu":{"properties":{"affinity":{"type":"string","description":"The CPU cores that are used to run the VM’s vCPU. The\nvalue is a list of CPU IDs, separated by commas. The CPU IDs are zero-based.\nFor example, `0,1,2,3` (which also can be shortened to `0-3`) means that the VM’s vCPUs are run on the first four\nCPU cores. Setting `affinity` is only allowed for `root@pam` authenticated user.\n"},"architecture":{"type":"string","description":"The CPU architecture (defaults to `x86_64`).\n"},"cores":{"type":"integer","description":"The number of CPU cores (defaults to `1`).\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 `0`).\n"},"limit":{"type":"integer","description":"Limit of CPU usage, `0...128`. (defaults to `0` -- no limit).\n"},"numa":{"type":"boolean","description":"Enable/disable NUMA. (default to `false`)\n"},"sockets":{"type":"integer","description":"The number of CPU sockets (defaults to `1`).\n"},"type":{"type":"string","description":"The emulated CPU type, it's recommended to\nuse `x86-64-v2-AES` (defaults to `qemu64`).\n"},"units":{"type":"integer","description":"The CPU units (defaults to `1024`).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineDisk:VirtualMachineDisk":{"properties":{"aio":{"type":"string","description":"The disk AIO mode (defaults to `io_uring`).\n"},"backup":{"type":"boolean","description":"Whether the drive should be included when making backups (defaults to `true`).\n"},"cache":{"type":"string","description":"The cache type (defaults to `none`).\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 `on`/`ignore` (defaults\nto `ignore`).\n"},"fileFormat":{"type":"string","description":"The file format (defaults to `qcow2`).\n"},"fileId":{"type":"string","description":"The file ID for a disk image. 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`proxmoxve.Download.File` resource.\n","willReplaceOnChanges":true},"interface":{"type":"string","description":"The disk interface for Proxmox, currently `scsi`,\n`sata` and `virtio` interfaces are supported. Append the disk index at\nthe end, for example, `virtio0` for the first virtio disk, `virtio1` for\nthe second, etc.\n"},"iothread":{"type":"boolean","description":"Whether to use iothreads for this disk (defaults\nto `false`).\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 (`datastore_id` empty string).\nSee \"*Example: Attached disks*\".\n"},"replicate":{"type":"boolean","description":"Whether the drive should be considered for replication jobs (defaults to `true`).\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 `8`).\n"},"speed":{"$ref":"#/types/proxmoxve:VM/VirtualMachineDiskSpeed:VirtualMachineDiskSpeed","description":"The speed limits.\n"},"ssd":{"type":"boolean","description":"Whether to use an SSD emulation option for this disk (\ndefaults to `false`). Note that SSD emulation is not supported on VirtIO\nBlock drives.\n"}},"type":"object","required":["interface"],"language":{"nodejs":{"requiredOutputs":["fileFormat","interface","pathInDatastore"]}}},"proxmoxve:VM/VirtualMachineDiskSpeed:VirtualMachineDiskSpeed":{"properties":{"iopsRead":{"type":"integer","description":"The maximum read I/O in operations per second.\n"},"iopsReadBurstable":{"type":"integer","description":"The maximum unthrottled read I/O pool in operations per second.\n"},"iopsWrite":{"type":"integer","description":"The maximum write I/O in operations per second.\n"},"iopsWriteBurstable":{"type":"integer","description":"The maximum unthrottled write I/O pool in operations per second.\n"},"read":{"type":"integer","description":"The maximum read speed in megabytes per second.\n"},"readBurstable":{"type":"integer","description":"The maximum burstable read speed in\nmegabytes per second.\n"},"write":{"type":"integer","description":"The maximum write speed in megabytes per second.\n"},"writeBurstable":{"type":"integer","description":"The maximum burstable write speed in\nmegabytes per second.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineEfiDisk:VirtualMachineEfiDisk":{"properties":{"datastoreId":{"type":"string","description":"The identifier for the datastore to create\nthe disk in (defaults to `local-lvm`).\n"},"fileFormat":{"type":"string","description":"The file format (defaults to `raw`).\n","willReplaceOnChanges":true},"preEnrolledKeys":{"type":"boolean","description":"Use am EFI vars template with\ndistribution-specific and Microsoft Standard keys enrolled, if used with\nEFI type=`4m`. Ignored for VMs with cpu.architecture=`aarch64` (defaults\nto `false`).\n","willReplaceOnChanges":true},"type":{"type":"string","description":"Size and type of the OVMF EFI disk. `4m` is newer and\nrecommended, and required for Secure Boot. For backwards compatibility\nuse `2m`. Ignored for VMs with cpu.architecture=`aarch64` (defaults\nto `2m`).\n","willReplaceOnChanges":true}},"type":"object","language":{"nodejs":{"requiredOutputs":["fileFormat"]}}},"proxmoxve:VM/VirtualMachineHostpci:VirtualMachineHostpci":{"properties":{"device":{"type":"string","description":"The PCI device name for Proxmox, in form\nof `hostpciX` where `X` is a sequential number from 0 to 15.\n"},"id":{"type":"string","description":"The PCI device ID. This parameter is not compatible\nwith `api_token` and requires the root `username` and `password`\nconfigured in the proxmox provider. Use either this or `mapping`.\n"},"mapping":{"type":"string","description":"The resource mapping name of the device, for\nexample gpu. Use either this or `id`.\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 `true`).\n"},"xvga":{"type":"boolean","description":"Marks the PCI(e) device as the primary GPU of the VM.\nWith this enabled the `vga` configuration argument will be ignored.\n"}},"type":"object","required":["device"]},"proxmoxve:VM/VirtualMachineInitialization:VirtualMachineInitialization":{"properties":{"datastoreId":{"type":"string","description":"The identifier for the datastore to create the\ncloud-init disk in (defaults to `local-lvm`).\n"},"dns":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitializationDns:VirtualMachineInitializationDns","description":"The DNS configuration.\n"},"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 `ide2`.\n"},"ipConfigs":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitializationIpConfig:VirtualMachineInitializationIpConfig"},"description":"The IP configuration (one block per network\ndevice).\n"},"metaDataFileId":{"type":"string","description":"The identifier for a file containing\nall meta data passed to the VM via cloud-init.\n","willReplaceOnChanges":true},"networkDataFileId":{"type":"string","description":"The identifier for a file containing\nnetwork configuration data passed to the VM via cloud-init (conflicts\nwith `ip_config`).\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 the first boot\n","deprecationMessage":"The `upgrade` attribute is deprecated and will be removed in a future release."},"userAccount":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitializationUserAccount:VirtualMachineInitializationUserAccount","description":"The user account configuration (conflicts\nwith `user_data_file_id`).\n","willReplaceOnChanges":true},"userDataFileId":{"type":"string","description":"The identifier for a file containing\ncustom user data (conflicts with `user_account`).\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":["upgrade"]}}},"proxmoxve:VM/VirtualMachineInitializationDns:VirtualMachineInitializationDns":{"properties":{"domain":{"type":"string","description":"The DNS search domain.\n"},"server":{"type":"string","description":"The DNS server. The `server` attribute is\ndeprecated and will be removed in a future release. Please use the\n`servers` attribute instead.\n","deprecationMessage":"The `server` attribute is deprecated and will be removed in a future release. Please use the `servers` attribute instead."},"servers":{"type":"array","items":{"type":"string"},"description":"The list of DNS servers.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineInitializationIpConfig:VirtualMachineInitializationIpConfig":{"properties":{"ipv4":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitializationIpConfigIpv4:VirtualMachineInitializationIpConfigIpv4","description":"The IPv4 configuration.\n"},"ipv6":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitializationIpConfigIpv6:VirtualMachineInitializationIpConfigIpv6","description":"The IPv6 configuration.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineInitializationIpConfigIpv4:VirtualMachineInitializationIpConfigIpv4":{"properties":{"address":{"type":"string","description":"The IPv4 address in CIDR notation\n(e.g. 192.168.2.2/24). Alternatively, set this to `dhcp` for\nautodiscovery.\n"},"gateway":{"type":"string","description":"The IPv4 gateway (must be omitted\nwhen `dhcp` is used as the address).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineInitializationIpConfigIpv6:VirtualMachineInitializationIpConfigIpv6":{"properties":{"address":{"type":"string","description":"The IPv6 address in CIDR notation\n(e.g. fd1c:000:0000::0000:000:7334/64). Alternatively, set this\nto `dhcp` for autodiscovery.\n"},"gateway":{"type":"string","description":"The IPv6 gateway (must be omitted\nwhen `dhcp` is used as the address).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineInitializationUserAccount:VirtualMachineInitializationUserAccount":{"properties":{"keys":{"type":"array","items":{"type":"string"},"description":"The SSH keys.\n","willReplaceOnChanges":true},"password":{"type":"string","description":"The SSH password.\n","secret":true,"willReplaceOnChanges":true},"username":{"type":"string","description":"The SSH username.\n","willReplaceOnChanges":true}},"type":"object"},"proxmoxve:VM/VirtualMachineMemory:VirtualMachineMemory":{"properties":{"dedicated":{"type":"integer","description":"The dedicated memory in megabytes (defaults to `512`).\n"},"floating":{"type":"integer","description":"The floating memory in megabytes. The default is `0`, which disables \"ballooning device\" for the VM.\nPlease note that Proxmox has ballooning enabled by default. To enable it, set `floating` to the same value as `dedicated`.\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 `false`).\n\nSettings `hugepages` and `keep_hugepages` 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 `0`).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineNetworkDevice:VirtualMachineNetworkDevice":{"properties":{"bridge":{"type":"string","description":"The name of the network bridge (defaults to `vmbr0`).\n"},"disconnected":{"type":"boolean","description":"Whether to disconnect the network device from the network (defaults to `false`).\n"},"enabled":{"type":"boolean","description":"Whether to enable the network device (defaults to `true`).\n"},"firewall":{"type":"boolean","description":"Whether this interface's firewall rules should be used (defaults to `false`).\n"},"macAddress":{"type":"string","description":"The MAC address.\n"},"model":{"type":"string","description":"The network device model (defaults to `virtio`).\n"},"mtu":{"type":"integer","description":"Force MTU, for VirtIO only. Set to 1 to use the bridge MTU. Cannot be larger than the bridge MTU.\n"},"queues":{"type":"integer","description":"The number of queues for VirtIO (1..64).\n"},"rateLimit":{"type":"number","description":"The rate limit in megabytes per second.\n"},"trunks":{"type":"string","description":"String containing a `;` separated list of VLAN trunks\n(\"10;20;30\"). Note that the VLAN-aware feature need to be enabled on the PVE\nLinux Bridge to use trunks.\n"},"vlanId":{"type":"integer","description":"The VLAN identifier.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["macAddress"]}}},"proxmoxve:VM/VirtualMachineNuma:VirtualMachineNuma":{"properties":{"cpus":{"type":"string","description":"The CPU cores to assign to the NUMA node (format is `0-7;16-31`).\n"},"device":{"type":"string","description":"The NUMA device name for Proxmox, in form\nof `numaX` where `X` is a sequential number from 0 to 7.\n"},"hostnodes":{"type":"string","description":"The NUMA host nodes.\n"},"memory":{"type":"integer","description":"The memory in megabytes to assign to the NUMA node.\n"},"policy":{"type":"string","description":"The NUMA policy (defaults to `preferred`).\n"}},"type":"object","required":["cpus","device","memory"]},"proxmoxve:VM/VirtualMachineOperatingSystem:VirtualMachineOperatingSystem":{"properties":{"type":{"type":"string","description":"The type (defaults to `other`).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineSerialDevice:VirtualMachineSerialDevice":{"properties":{"device":{"type":"string","description":"The device (defaults to `socket`).\n- `/dev/*` - A host serial device.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineSmbios:VirtualMachineSmbios":{"properties":{"family":{"type":"string","description":"The family string.\n"},"manufacturer":{"type":"string","description":"The manufacturer.\n"},"product":{"type":"string","description":"The product ID.\n"},"serial":{"type":"string","description":"The serial number.\n"},"sku":{"type":"string","description":"The SKU number.\n"},"uuid":{"type":"string","description":"The UUID (defaults to randomly generated UUID).\n"},"version":{"type":"string","description":"The version.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["uuid"]}}},"proxmoxve:VM/VirtualMachineStartup:VirtualMachineStartup":{"properties":{"downDelay":{"type":"integer","description":"A non-negative number defining the delay in\nseconds before the next VM is shut down.\n"},"order":{"type":"integer","description":"A non-negative number defining the general startup\norder.\n"},"upDelay":{"type":"integer","description":"A non-negative number defining the delay in\nseconds before the next VM is started.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineTpmState:VirtualMachineTpmState":{"properties":{"datastoreId":{"type":"string","description":"The identifier for the datastore to create\nthe disk in (defaults to `local-lvm`).\n"},"version":{"type":"string","description":"TPM state device version. Can be `v1.2` or `v2.0`.\n(defaults to `v2.0`).\n","willReplaceOnChanges":true}},"type":"object"},"proxmoxve:VM/VirtualMachineUsb:VirtualMachineUsb":{"properties":{"host":{"type":"string","description":"The Host USB device or port or the value `spice`. Use either this or `mapping`.\n"},"mapping":{"type":"string","description":"The cluster-wide resource mapping name of the device, for example \"usbdevice\". Use either this or `host`.\n"},"usb3":{"type":"boolean","description":"Makes the USB device a USB3 device for the VM\n(defaults to `false`).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineVga:VirtualMachineVga":{"properties":{"clipboard":{"type":"string","description":"Enable VNC clipboard by setting to `vnc`. 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 `16`).\n"},"type":{"type":"string","description":"The VGA type (defaults to `std`).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineWatchdog:VirtualMachineWatchdog":{"properties":{"action":{"type":"string","description":"The action to perform if after activation the guest fails to poll the watchdog in time (defaults to `none`).\n"},"enabled":{"type":"boolean","description":"Whether the watchdog is enabled (defaults to `false`).\n"},"model":{"type":"string","description":"The watchdog type to emulate (defaults to `i6300esb`).\n"}},"type":"object"},"proxmoxve:VM/getVirtualMachinesFilter:getVirtualMachinesFilter":{"properties":{"name":{"type":"string","description":"Name of the VM attribute to filter on. One of [`name`, `template`, `status`, `node_name`]\n"},"regex":{"type":"boolean","description":"Treat values as regex patterns\n"},"values":{"type":"array","items":{"type":"string"},"description":"List of values to pass the filter. VM's attribute should match at least one value in the list.\n"}},"type":"object","required":["name","values"]},"proxmoxve:VM/getVirtualMachinesVm:getVirtualMachinesVm":{"properties":{"name":{"type":"string","description":"The virtual machine name.\n"},"nodeName":{"type":"string","description":"The node name. All cluster nodes will be queried in case this is omitted\n"},"status":{"type":"string","description":"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":"Is VM a template (true) or a regular VM (false)\n"},"vmId":{"type":"integer","description":"The VM identifier.\n"}},"type":"object","required":["name","nodeName","tags","vmId"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:config/ssh:ssh":{"properties":{"agent":{"type":"boolean","description":"Whether to use the SSH agent for authentication. Takes precedence over the `private_key` and `password` fields. Defaults to the value of the `PROXMOX_VE_SSH_AGENT` environment variable, or `false` if not set.\n"},"agentSocket":{"type":"string","description":"The path to the SSH agent socket. Defaults to the value of the `SSH_AUTH_SOCK` environment variable.\n"},"nodes":{"type":"array","items":{"$ref":"#/types/proxmoxve:config/sshNode:sshNode"},"description":"Overrides for SSH connection configuration for a Proxmox VE node.\n"},"password":{"type":"string","description":"The password used for the SSH connection. Defaults to the value of the `password` field of the `provider` block.\n","secret":true},"privateKey":{"type":"string","description":"The unencrypted private key (in PEM format) used for the SSH connection. Defaults to the value of the `PROXMOX_VE_SSH_PRIVATE_KEY` environment variable.\n","secret":true},"socks5Password":{"type":"string","description":"The password for the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_PASSWORD` environment variable.\n","secret":true},"socks5Server":{"type":"string","description":"The address:port of the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_SERVER` environment variable.\n"},"socks5Username":{"type":"string","description":"The username for the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_USERNAME` environment variable.\n"},"username":{"type":"string","description":"The username used for the SSH connection. Defaults to the value of the `username` field of the `provider` block.\n"}},"type":"object"},"proxmoxve:config/sshNode:sshNode":{"properties":{"address":{"type":"string","description":"The address of the Proxmox VE node.\n"},"name":{"type":"string","description":"The name of the Proxmox VE node.\n"},"port":{"type":"integer","description":"The port of the Proxmox VE node.\n"}},"type":"object","required":["address","name"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:index/HostsEntry:HostsEntry":{"properties":{"address":{"type":"string","description":"The IP address.\n"},"hostnames":{"type":"array","items":{"type":"string"},"description":"The hostnames.\n"}},"type":"object","required":["address","hostnames"]},"proxmoxve:index/ProviderSsh:ProviderSsh":{"properties":{"agent":{"type":"boolean","description":"Whether to use the SSH agent for authentication. Takes precedence over the `private_key` and `password` fields. Defaults to the value of the `PROXMOX_VE_SSH_AGENT` environment variable, or `false` if not set.\n"},"agentSocket":{"type":"string","description":"The path to the SSH agent socket. Defaults to the value of the `SSH_AUTH_SOCK` environment variable.\n"},"nodes":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/ProviderSshNode:ProviderSshNode"},"description":"Overrides for SSH connection configuration for a Proxmox VE node.\n"},"password":{"type":"string","description":"The password used for the SSH connection. Defaults to the value of the `password` field of the `provider` block.\n","secret":true},"privateKey":{"type":"string","description":"The unencrypted private key (in PEM format) used for the SSH connection. Defaults to the value of the `PROXMOX_VE_SSH_PRIVATE_KEY` environment variable.\n","secret":true},"socks5Password":{"type":"string","description":"The password for the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_PASSWORD` environment variable.\n","secret":true},"socks5Server":{"type":"string","description":"The address:port of the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_SERVER` environment variable.\n"},"socks5Username":{"type":"string","description":"The username for the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_USERNAME` environment variable.\n"},"username":{"type":"string","description":"The username used for the SSH connection. Defaults to the value of the `username` field of the `provider` 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/Vm2Cdrom:Vm2Cdrom":{"properties":{"fileId":{"type":"string","description":"The file ID of the CD-ROM, or `cdrom|none`. Defaults to `none` to leave the CD-ROM empty. Use `cdrom` to connect to the physical drive.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["fileId"]}}},"proxmoxve:index/Vm2Clone:Vm2Clone":{"properties":{"id":{"type":"integer","description":"The ID of the VM to clone.\n"},"retries":{"type":"integer","description":"The number of retries to perform when cloning the VM (default: 3).\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredOutputs":["id","retries"]}}},"proxmoxve:index/Vm2Cpu:Vm2Cpu":{"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 `affinity` 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 `affinity` is only allowed for `root@pam` authenticated user.\n"},"cores":{"type":"integer","description":"The number of CPU cores per socket (defaults to `1`).\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: `pcid`, `spec-ctrl`, `ibpb`, `ssbd`, `virt-ssbd`, `amd-ssbd`, `amd-no-ssb`, `pdpe1gb`, `md-clear`, `hv-tlbflush`, `hv-evmcs`, `aes`.\n"},"hotplugged":{"type":"integer","description":"The number of hotplugged vCPUs (defaults to `0`).\n"},"limit":{"type":"integer","description":"Limit of CPU usage (defaults to `0` which means no limit).\n"},"numa":{"type":"boolean","description":"Enable NUMA (defaults to `false`).\n"},"sockets":{"type":"integer","description":"The number of CPU sockets (defaults to `1`).\n"},"type":{"type":"string","description":"Emulated CPU type, it's recommended to use `x86-64-v2-AES` or higher (defaults to `kvm64`). See https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm*virtual*machines_settings for more information.\n"},"units":{"type":"integer","description":"CPU weight for a VM. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this VM gets. Number is relative to weights of all the other running VMs.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["affinity","architecture","cores","flags","hotplugged","limit","numa","sockets","type","units"]}}},"proxmoxve:index/Vm2Timeouts:Vm2Timeouts":{"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/Vm2Vga:Vm2Vga":{"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 `vnc` 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 `std`).\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["clipboard","memory","type"]}}},"proxmoxve:index/getVm2Clone:getVm2Clone":{"properties":{"id":{"type":"integer","description":"The ID of the VM to clone.\n"},"retries":{"type":"integer","description":"The number of retries to perform when cloning the VM (default: 3).\n"}},"type":"object","required":["id","retries"],"language":{"nodejs":{"requiredInputs":["id"]}}},"proxmoxve:index/getVm2Cpu:getVm2Cpu":{"properties":{"affinity":{"type":"string","description":"List of host cores used to execute guest processes, for example: '0,5,8-11'\n"},"architecture":{"type":"string","description":"The CPU architecture.\n"},"cores":{"type":"integer","description":"The number of CPU cores per socket.\n"},"flags":{"type":"array","items":{"type":"string"},"description":"Set of additional CPU flags.\n"},"hotplugged":{"type":"integer","description":"The number of hotplugged vCPUs.\n"},"limit":{"type":"integer","description":"Limit of CPU usage.\n"},"numa":{"type":"boolean","description":"Enable NUMA.\n"},"sockets":{"type":"integer","description":"The number of CPU sockets.\n"},"type":{"type":"string","description":"Emulated CPU type.\n"},"units":{"type":"integer","description":"CPU weight for a VM\n"}},"type":"object","required":["affinity","architecture","cores","flags","hotplugged","limit","numa","sockets","type","units"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:index/getVm2Timeouts:getVm2Timeouts":{"properties":{"read":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"}},"type":"object"},"proxmoxve:index/getVm2Vga:getVm2Vga":{"properties":{"clipboard":{"type":"string","description":"Enable a specific clipboard.\n"},"memory":{"type":"integer","description":"The VGA memory in megabytes (4-512 MB). Has no effect with serial display.\n"},"type":{"type":"string","description":"The VGA type.\n"}},"type":"object","required":["clipboard","memory","type"],"language":{"nodejs":{"requiredInputs":[]}}}},"provider":{"description":"The provider type for the proxmox package. By default, resources use package-wide configuration\nsettings, however an explicit `Provider` instance may be created and passed during resource\nconstruction to achieve fine-grained programmatic control over provider settings. See the\n[documentation](https://www.pulumi.com/docs/reference/programming-model/#providers) for more information.\n","properties":{"apiToken":{"type":"string","description":"The API token for the Proxmox VE API.\n","secret":true},"authTicket":{"type":"string","description":"The pre-authenticated Ticket for the Proxmox VE API.\n","secret":true},"csrfPreventionToken":{"type":"string","description":"The pre-authenticated CSRF Prevention Token for the Proxmox VE API.\n","secret":true},"endpoint":{"type":"string","description":"The endpoint for the Proxmox VE API.\n"},"insecure":{"type":"boolean","description":"Whether to skip the TLS verification step.\n"},"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`.\n"},"otp":{"type":"string","description":"The one-time password for the Proxmox VE API.\n","deprecationMessage":"The `otp` attribute is deprecated and will be removed in a future release. Please use the `api_token` attribute instead."},"password":{"type":"string","description":"The password for the Proxmox VE API.\n","secret":true},"randomVmIdEnd":{"type":"integer","description":"The ending number for random VM / Container IDs.\n"},"randomVmIdStart":{"type":"integer","description":"The starting number for random VM / Container IDs.\n"},"randomVmIds":{"type":"boolean","description":"Whether to generate random VM / Container IDs.\n"},"ssh":{"$ref":"#/types/proxmoxve:index/ProviderSsh:ProviderSsh","description":"The SSH configuration for the Proxmox nodes.\n"},"tmpDir":{"type":"string","description":"The alternative temporary directory.\n"},"username":{"type":"string","description":"The username for the Proxmox VE API.\n"}},"inputProperties":{"apiToken":{"type":"string","description":"The API token for the Proxmox VE API.\n","secret":true},"authTicket":{"type":"string","description":"The pre-authenticated Ticket for the Proxmox VE API.\n","secret":true},"csrfPreventionToken":{"type":"string","description":"The pre-authenticated CSRF Prevention Token for the Proxmox VE API.\n","secret":true},"endpoint":{"type":"string","description":"The endpoint for the Proxmox VE API.\n"},"insecure":{"type":"boolean","description":"Whether to skip the TLS verification step.\n"},"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`.\n"},"otp":{"type":"string","description":"The one-time password for the Proxmox VE API.\n","deprecationMessage":"The `otp` attribute is deprecated and will be removed in a future release. Please use the `api_token` attribute instead."},"password":{"type":"string","description":"The password for the Proxmox VE API.\n","secret":true},"randomVmIdEnd":{"type":"integer","description":"The ending number for random VM / Container IDs.\n"},"randomVmIdStart":{"type":"integer","description":"The starting number for random VM / Container IDs.\n"},"randomVmIds":{"type":"boolean","description":"Whether to generate random VM / Container IDs.\n"},"ssh":{"$ref":"#/types/proxmoxve:index/ProviderSsh:ProviderSsh","description":"The SSH configuration for the Proxmox nodes.\n"},"tmpDir":{"type":"string","description":"The alternative temporary directory.\n"},"username":{"type":"string","description":"The username for the Proxmox VE API.\n"}}},"resources":{"proxmoxve:Apt/repository:Repository":{"description":"Manages an APT repository of a Proxmox VE node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.apt.Repository(\"example\", {\n enabled: true,\n filePath: \"/etc/apt/sources.list\",\n index: 0,\n node: \"pve\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.apt.Repository(\"example\",\n enabled=True,\n file_path=\"/etc/apt/sources.list\",\n index=0,\n node=\"pve\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new ProxmoxVE.Apt.Repository(\"example\", new()\n {\n Enabled = true,\n FilePath = \"/etc/apt/sources.list\",\n Index = 0,\n Node = \"pve\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/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 com.pulumi.proxmoxve.Apt.Repository;\nimport com.pulumi.proxmoxve.Apt.RepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Repository(\"example\", RepositoryArgs.builder()\n .enabled(true)\n .filePath(\"/etc/apt/sources.list\")\n .index(0)\n .node(\"pve\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:Apt:Repository\n properties:\n enabled: true\n filePath: /etc/apt/sources.list\n index: 0\n node: pve\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nAn APT repository can be imported using a comma-separated list consisting of the name of the Proxmox VE node,\n\nthe absolute source list file path, and the index in the exact same order, e.g.:\n\n```sh\n$ pulumi import proxmoxve:Apt/repository:Repository example pve,/etc/apt/sources.list,0\n```\n\n","properties":{"comment":{"type":"string","description":"The associated comment.\n"},"components":{"type":"array","items":{"type":"string"},"description":"The list of components.\n"},"enabled":{"type":"boolean","description":"Indicates the activation status.\n"},"filePath":{"type":"string","description":"The absolute path of the source list file that contains this repository.\n"},"fileType":{"type":"string","description":"The format of the defining source list file.\n"},"index":{"type":"integer","description":"The index within the defining source list file.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"},"packageTypes":{"type":"array","items":{"type":"string"},"description":"The list of package types.\n"},"suites":{"type":"array","items":{"type":"string"},"description":"The list of package distributions.\n"},"uris":{"type":"array","items":{"type":"string"},"description":"The list of repository URIs.\n"}},"required":["comment","components","enabled","filePath","fileType","index","node","packageTypes","suites","uris"],"inputProperties":{"enabled":{"type":"boolean","description":"Indicates the activation status.\n"},"filePath":{"type":"string","description":"The absolute path of the source list file that contains this repository.\n"},"index":{"type":"integer","description":"The index within the defining source list file.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"}},"requiredInputs":["filePath","index","node"],"stateInputs":{"description":"Input properties used for looking up and filtering Repository resources.\n","properties":{"comment":{"type":"string","description":"The associated comment.\n"},"components":{"type":"array","items":{"type":"string"},"description":"The list of components.\n"},"enabled":{"type":"boolean","description":"Indicates the activation status.\n"},"filePath":{"type":"string","description":"The absolute path of the source list file that contains this repository.\n"},"fileType":{"type":"string","description":"The format of the defining source list file.\n"},"index":{"type":"integer","description":"The index within the defining source list file.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"},"packageTypes":{"type":"array","items":{"type":"string"},"description":"The list of package types.\n"},"suites":{"type":"array","items":{"type":"string"},"description":"The list of package distributions.\n"},"uris":{"type":"array","items":{"type":"string"},"description":"The list of repository URIs.\n"}},"type":"object"}},"proxmoxve:Apt/standard/repository:Repository":{"description":"Manages an APT standard repository of a Proxmox VE node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst exampleRepository = new proxmoxve.apt.standard.Repository(\"exampleRepository\", {\n handle: \"no-subscription\",\n node: \"pve\",\n});\nconst exampleApt_repositoryRepository = new proxmoxve.apt.Repository(\"exampleApt/repositoryRepository\", {\n enabled: true,\n filePath: exampleRepository.filePath,\n index: exampleRepository.index,\n node: exampleRepository.node,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample_repository = proxmoxve.apt.standard.Repository(\"exampleRepository\",\n handle=\"no-subscription\",\n node=\"pve\")\nexample_apt_repository_repository = proxmoxve.apt.Repository(\"exampleApt/repositoryRepository\",\n enabled=True,\n file_path=example_repository.file_path,\n index=example_repository.index,\n node=example_repository.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 exampleRepository = new ProxmoxVE.Apt.Standard.Repository(\"exampleRepository\", new()\n {\n Handle = \"no-subscription\",\n Node = \"pve\",\n });\n\n var exampleApt_repositoryRepository = new ProxmoxVE.Apt.Repository(\"exampleApt/repositoryRepository\", new()\n {\n Enabled = true,\n FilePath = exampleRepository.FilePath,\n Index = exampleRepository.Index,\n Node = exampleRepository.Node,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/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\texampleRepository, err := Apt.NewRepository(ctx, \"exampleRepository\", \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, \"exampleApt/repositoryRepository\", \u0026Apt.RepositoryArgs{\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tFilePath: exampleRepository.FilePath,\n\t\t\tIndex: exampleRepository.Index,\n\t\t\tNode: exampleRepository.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 com.pulumi.proxmoxve.Apt.Repository;\nimport com.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 exampleRepository = new Repository(\"exampleRepository\", RepositoryArgs.builder()\n .handle(\"no-subscription\")\n .node(\"pve\")\n .build());\n\n var exampleApt_repositoryRepository = new Repository(\"exampleApt/repositoryRepository\", RepositoryArgs.builder()\n .enabled(true)\n .filePath(exampleRepository.filePath())\n .index(exampleRepository.index())\n .node(exampleRepository.node())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleRepository:\n type: proxmoxve:Apt/standard:Repository\n properties:\n handle: no-subscription\n node: pve\n exampleApt/repositoryRepository:\n type: proxmoxve:Apt:Repository\n properties:\n enabled: true\n filePath: ${exampleRepository.filePath}\n index: ${exampleRepository.index}\n node: ${exampleRepository.node}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nAn APT standard repository can be imported using a comma-separated list consisting of the name of the Proxmox VE node,\n\nand the standard repository handle in the exact same order, e.g.:\n\n```sh\n$ pulumi import proxmoxve:Apt/standard/repository:Repository example pve,no-subscription\n```\n\n","properties":{"description":{"type":"string","description":"The description of the APT standard repository.\n"},"filePath":{"type":"string","description":"The absolute path of the source list file that contains this standard repository.\n"},"handle":{"type":"string","description":"The handle of the APT standard repository. Must be `ceph-quincy-enterprise` | `ceph-quincy-no-subscription` | `ceph-quincy-test` | `ceph-reef-enterprise` | `ceph-reef-no-subscription` | `ceph-reef-test` | `enterprise` | `no-subscription` | `test`.\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-quincy-enterprise` | `ceph-quincy-no-subscription` | `ceph-quincy-test` | `ceph-reef-enterprise` | `ceph-reef-no-subscription` | `ceph-reef-test` | `enterprise` | `no-subscription` | `test`.\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-quincy-enterprise` | `ceph-quincy-no-subscription` | `ceph-quincy-test` | `ceph-reef-enterprise` | `ceph-reef-no-subscription` | `ceph-reef-test` | `enterprise` | `no-subscription` | `test`.\n"},"index":{"type":"integer","description":"The index within the defining source list file.\n"},"name":{"type":"string","description":"The name of the APT standard repository.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"},"status":{"type":"integer","description":"Indicates the activation status.\n"}},"type":"object"}},"proxmoxve:CT/container:Container":{"description":"Manages a container.\n\n## Import\n\nInstances can be imported using the `node_name` and the `vm_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:CT/container:Container ubuntu_container first-node/1234\n```\n\n","properties":{"clone":{"$ref":"#/types/proxmoxve:CT/ContainerClone:ContainerClone","description":"The cloning configuration.\n"},"console":{"$ref":"#/types/proxmoxve:CT/ContainerConsole:ContainerConsole","description":"The console configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:CT/ContainerCpu:ContainerCpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description.\n"},"disk":{"$ref":"#/types/proxmoxve:CT/ContainerDisk:ContainerDisk","description":"The disk configuration.\n"},"features":{"$ref":"#/types/proxmoxve:CT/ContainerFeatures:ContainerFeatures","description":"The container feature flags. Changing flags (except nesting) is only allowed for `root@pam` authenticated user.\n"},"hookScriptFileId":{"type":"string","description":"The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).\n"},"initialization":{"$ref":"#/types/proxmoxve:CT/ContainerInitialization:ContainerInitialization","description":"The initialization configuration.\n"},"memory":{"$ref":"#/types/proxmoxve:CT/ContainerMemory:ContainerMemory","description":"The memory configuration.\n"},"mountPoints":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerMountPoint:ContainerMountPoint"},"description":"A mount point\n"},"networkInterfaces":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerNetworkInterface:ContainerNetworkInterface"},"description":"A network interface (multiple blocks\nsupported).\n"},"nodeName":{"type":"string","description":"The name of the node to assign the container to.\n"},"operatingSystem":{"$ref":"#/types/proxmoxve:CT/ContainerOperatingSystem:ContainerOperatingSystem","description":"The Operating System configuration.\n"},"poolId":{"type":"string","description":"The identifier for a pool to assign the container to.\n"},"protection":{"type":"boolean","description":"Whether to set the protection flag of the container (defaults to `false`). 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 `true`).\n"},"started":{"type":"boolean","description":"Whether to start the container (defaults to `true`).\n"},"startup":{"$ref":"#/types/proxmoxve:CT/ContainerStartup:ContainerStartup","description":"Defines startup and shutdown behavior of the container.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags the container tags. This is only meta\ninformation (defaults to `[]`). Note: Proxmox always sorts the container tags.\nIf the list in template is not sorted, then Proxmox will always report a\ndifference on the resource. You may use the `ignore_changes` lifecycle\nmeta-argument to ignore changes to this attribute.\n"},"template":{"type":"boolean","description":"Whether to create a template (defaults to `false`).\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\n","deprecationMessage":"This field is deprecated and will be removed in a future release. An overall operation timeout (`timeout_create` / `timeout_clone`) 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\nthe host (defaults to `false`).\n"},"vmId":{"type":"integer","description":"The container identifier\n"}},"required":["nodeName","vmId"],"inputProperties":{"clone":{"$ref":"#/types/proxmoxve:CT/ContainerClone:ContainerClone","description":"The cloning configuration.\n"},"console":{"$ref":"#/types/proxmoxve:CT/ContainerConsole:ContainerConsole","description":"The console configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:CT/ContainerCpu:ContainerCpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description.\n"},"disk":{"$ref":"#/types/proxmoxve:CT/ContainerDisk:ContainerDisk","description":"The disk configuration.\n","willReplaceOnChanges":true},"features":{"$ref":"#/types/proxmoxve:CT/ContainerFeatures:ContainerFeatures","description":"The container feature flags. Changing flags (except nesting) is only allowed for `root@pam` authenticated user.\n"},"hookScriptFileId":{"type":"string","description":"The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).\n"},"initialization":{"$ref":"#/types/proxmoxve:CT/ContainerInitialization:ContainerInitialization","description":"The initialization configuration.\n"},"memory":{"$ref":"#/types/proxmoxve:CT/ContainerMemory:ContainerMemory","description":"The memory configuration.\n"},"mountPoints":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerMountPoint:ContainerMountPoint"},"description":"A mount point\n"},"networkInterfaces":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerNetworkInterface:ContainerNetworkInterface"},"description":"A network interface (multiple blocks\nsupported).\n"},"nodeName":{"type":"string","description":"The name of the node to assign the container to.\n","willReplaceOnChanges":true},"operatingSystem":{"$ref":"#/types/proxmoxve:CT/ContainerOperatingSystem:ContainerOperatingSystem","description":"The Operating System configuration.\n","willReplaceOnChanges":true},"poolId":{"type":"string","description":"The identifier for a pool to assign the container to.\n","willReplaceOnChanges":true},"protection":{"type":"boolean","description":"Whether to set the protection flag of the container (defaults to `false`). 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 `true`).\n"},"started":{"type":"boolean","description":"Whether to start the container (defaults to `true`).\n"},"startup":{"$ref":"#/types/proxmoxve:CT/ContainerStartup:ContainerStartup","description":"Defines startup and shutdown behavior of the container.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags the container tags. This is only meta\ninformation (defaults to `[]`). Note: Proxmox always sorts the container tags.\nIf the list in template is not sorted, then Proxmox will always report a\ndifference on the resource. You may use the `ignore_changes` lifecycle\nmeta-argument to ignore changes to this attribute.\n"},"template":{"type":"boolean","description":"Whether to create a template (defaults to `false`).\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\n","deprecationMessage":"This field is deprecated and will be removed in a future release. An overall operation timeout (`timeout_create` / `timeout_clone`) 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\nthe host (defaults to `false`).\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"The container identifier\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering Container resources.\n","properties":{"clone":{"$ref":"#/types/proxmoxve:CT/ContainerClone:ContainerClone","description":"The cloning configuration.\n"},"console":{"$ref":"#/types/proxmoxve:CT/ContainerConsole:ContainerConsole","description":"The console configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:CT/ContainerCpu:ContainerCpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description.\n"},"disk":{"$ref":"#/types/proxmoxve:CT/ContainerDisk:ContainerDisk","description":"The disk configuration.\n","willReplaceOnChanges":true},"features":{"$ref":"#/types/proxmoxve:CT/ContainerFeatures:ContainerFeatures","description":"The container feature flags. Changing flags (except nesting) is only allowed for `root@pam` authenticated user.\n"},"hookScriptFileId":{"type":"string","description":"The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).\n"},"initialization":{"$ref":"#/types/proxmoxve:CT/ContainerInitialization:ContainerInitialization","description":"The initialization configuration.\n"},"memory":{"$ref":"#/types/proxmoxve:CT/ContainerMemory:ContainerMemory","description":"The memory configuration.\n"},"mountPoints":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerMountPoint:ContainerMountPoint"},"description":"A mount point\n"},"networkInterfaces":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerNetworkInterface:ContainerNetworkInterface"},"description":"A network interface (multiple blocks\nsupported).\n"},"nodeName":{"type":"string","description":"The name of the node to assign the container to.\n","willReplaceOnChanges":true},"operatingSystem":{"$ref":"#/types/proxmoxve:CT/ContainerOperatingSystem:ContainerOperatingSystem","description":"The Operating System configuration.\n","willReplaceOnChanges":true},"poolId":{"type":"string","description":"The identifier for a pool to assign the container to.\n","willReplaceOnChanges":true},"protection":{"type":"boolean","description":"Whether to set the protection flag of the container (defaults to `false`). 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 `true`).\n"},"started":{"type":"boolean","description":"Whether to start the container (defaults to `true`).\n"},"startup":{"$ref":"#/types/proxmoxve:CT/ContainerStartup:ContainerStartup","description":"Defines startup and shutdown behavior of the container.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags the container tags. This is only meta\ninformation (defaults to `[]`). Note: Proxmox always sorts the container tags.\nIf the list in template is not sorted, then Proxmox will always report a\ndifference on the resource. You may use the `ignore_changes` lifecycle\nmeta-argument to ignore changes to this attribute.\n"},"template":{"type":"boolean","description":"Whether to create a template (defaults to `false`).\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\n","deprecationMessage":"This field is deprecated and will be removed in a future release. An overall operation timeout (`timeout_create` / `timeout_clone`) 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\nthe host (defaults to `false`).\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"The container identifier\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Cluster.Options;\nimport com.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 .bandwidthLimitDefault(666666)\n .bandwidthLimitMigration(555555)\n .emailFrom(\"ged@gont.earthsea\")\n .keyboard(\"pl\")\n .language(\"en\")\n .maxWorkers(5)\n .migrationCidr(\"10.0.0.0/8\")\n .migrationType(\"secure\")\n .nextId(OptionsNextIdArgs.builder()\n .lower(100)\n .upper(999999999)\n .build())\n .notify(OptionsNotifyArgs.builder()\n .ha_fencing_mode(\"never\")\n .ha_fencing_target(\"default-matcher\")\n .package_replication(\"always\")\n .package_replication_target(\"default-matcher\")\n .package_updates(\"always\")\n .package_updates_target(\"default-matcher\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n options:\n type: proxmoxve:Cluster:Options\n properties:\n bandwidthLimitDefault: 666666\n bandwidthLimitMigration: 555555\n emailFrom: ged@gont.earthsea\n keyboard: pl\n language: en\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 ha_fencing_mode: never\n ha_fencing_target: default-matcher\n package_replication: always\n package_replication_target: default-matcher\n package_updates: always\n package_updates_target: default-matcher\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nCluster options are global and can be imported using e.g.:\n\n```sh\n$ pulumi import proxmoxve:Cluster/options:Options options cluster\n```\n\n","properties":{"bandwidthLimitClone":{"type":"integer","description":"Clone I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitDefault":{"type":"integer","description":"Default I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitMigration":{"type":"integer","description":"Migration I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitMove":{"type":"integer","description":"Move I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitRestore":{"type":"integer","description":"Restore I/O bandwidth limit in KiB/s.\n"},"console":{"type":"string","description":"Select the default Console viewer. Must be `applet` | `vv`| `html5` | `xtermjs`. 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 `static` | `basic` (default is `basic`).\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 `freeze` | `failover` | `migrate` | `conditional` (default is `conditional`).\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 `de` | `de-ch` | `da` | `en-gb` | `en-us` | `es` | `fi` | `fr` | `fr-be` | `fr-ca` | `fr-ch` | `hu` | `is` | `it` | `ja` | `lt` | `mk` | `nl` | `no` | `pl` | `pt` | `pt-br` | `sv` | `sl` | `tr`.\n"},"language":{"type":"string","description":"Default GUI language. Must be `ca` | `da` | `de` | `en` | `es` | `eu` | `fa` | `fr` | `he` | `it` | `ja` | `nb` | `nn` | `pl` | `pt_BR` | `ru` | `sl` | `sv` | `tr` | `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 `secure` | `unsecure` (default is `secure`).\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 `applet` | `vv`| `html5` | `xtermjs`. 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 `static` | `basic` (default is `basic`).\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 `freeze` | `failover` | `migrate` | `conditional` (default is `conditional`).\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 `de` | `de-ch` | `da` | `en-gb` | `en-us` | `es` | `fi` | `fr` | `fr-be` | `fr-ca` | `fr-ch` | `hu` | `is` | `it` | `ja` | `lt` | `mk` | `nl` | `no` | `pl` | `pt` | `pt-br` | `sv` | `sl` | `tr`.\n"},"language":{"type":"string","description":"Default GUI language. Must be `ca` | `da` | `de` | `en` | `es` | `eu` | `fa` | `fr` | `he` | `it` | `ja` | `nb` | `nn` | `pl` | `pt_BR` | `ru` | `sl` | `sv` | `tr` | `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 `secure` | `unsecure` (default is `secure`).\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 `applet` | `vv`| `html5` | `xtermjs`. 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 `static` | `basic` (default is `basic`).\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 `freeze` | `failover` | `migrate` | `conditional` (default is `conditional`).\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 `de` | `de-ch` | `da` | `en-gb` | `en-us` | `es` | `fi` | `fr` | `fr-be` | `fr-ca` | `fr-ch` | `hu` | `is` | `it` | `ja` | `lt` | `mk` | `nl` | `no` | `pl` | `pt` | `pt-br` | `sv` | `sl` | `tr`.\n"},"language":{"type":"string","description":"Default GUI language. Must be `ca` | `da` | `de` | `en` | `es` | `eu` | `fa` | `fr` | `he` | `it` | `ja` | `nb` | `nn` | `pl` | `pt_BR` | `ru` | `sl` | `sv` | `tr` | `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 `secure` | `unsecure` (default is `secure`).\n"},"nextId":{"$ref":"#/types/proxmoxve:Cluster/OptionsNextId:OptionsNextId","description":"The ranges for the next free VM ID auto-selection pool.\n"},"notify":{"$ref":"#/types/proxmoxve:Cluster/OptionsNotify:OptionsNotify","description":"Cluster-wide notification settings.\n"}},"type":"object"}},"proxmoxve:Download/file:File":{"description":"Manages files upload using PVE download-url API. It can be fully compatible and faster replacement for image files created using `proxmoxve.Storage.File`. Supports images for VMs (ISO 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## 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(\"release20231228Debian12BookwormQcow2Img\", {\n checksum: \"d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\",\n checksumAlgorithm: \"sha512\",\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});\nconst latestDebian12BookwormQcow2Img = new proxmoxve.download.File(\"latestDebian12BookwormQcow2Img\", {\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 latestUbuntu22JammyQcow2Img = new proxmoxve.download.File(\"latestUbuntu22JammyQcow2Img\", {\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(\"latestStaticUbuntu24NobleQcow2Img\", {\n contentType: \"iso\",\n datastoreId: \"local\",\n nodeName: \"pve\",\n overwrite: false,\n url: \"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\",\n});\nconst release20231211Ubuntu22JammyLxcImg = new proxmoxve.download.File(\"release20231211Ubuntu22JammyLxcImg\", {\n checksum: \"c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e\",\n checksumAlgorithm: \"sha256\",\n contentType: \"vztmpl\",\n datastoreId: \"local\",\n nodeName: \"pve\",\n uploadTimeout: 4444,\n url: \"https://cloud-images.ubuntu.com/releases/22.04/release-20231211/ubuntu-22.04-server-cloudimg-amd64-root.tar.xz\",\n});\nconst latestUbuntu22JammyLxcImg = new proxmoxve.download.File(\"latestUbuntu22JammyLxcImg\", {\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(\"release20231228Debian12BookwormQcow2Img\",\n checksum=\"d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\",\n checksum_algorithm=\"sha512\",\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\")\nlatest_debian12_bookworm_qcow2_img = proxmoxve.download.File(\"latestDebian12BookwormQcow2Img\",\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_ubuntu22_jammy_qcow2_img = proxmoxve.download.File(\"latestUbuntu22JammyQcow2Img\",\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(\"latestStaticUbuntu24NobleQcow2Img\",\n content_type=\"iso\",\n datastore_id=\"local\",\n node_name=\"pve\",\n overwrite=False,\n url=\"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\")\nrelease20231211_ubuntu22_jammy_lxc_img = proxmoxve.download.File(\"release20231211Ubuntu22JammyLxcImg\",\n checksum=\"c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e\",\n checksum_algorithm=\"sha256\",\n content_type=\"vztmpl\",\n datastore_id=\"local\",\n node_name=\"pve\",\n upload_timeout=4444,\n url=\"https://cloud-images.ubuntu.com/releases/22.04/release-20231211/ubuntu-22.04-server-cloudimg-amd64-root.tar.xz\")\nlatest_ubuntu22_jammy_lxc_img = proxmoxve.download.File(\"latestUbuntu22JammyLxcImg\",\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(\"release20231228Debian12BookwormQcow2Img\", new()\n {\n Checksum = \"d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\",\n ChecksumAlgorithm = \"sha512\",\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 });\n\n var latestDebian12BookwormQcow2Img = new ProxmoxVE.Download.File(\"latestDebian12BookwormQcow2Img\", 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 latestUbuntu22JammyQcow2Img = new ProxmoxVE.Download.File(\"latestUbuntu22JammyQcow2Img\", 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(\"latestStaticUbuntu24NobleQcow2Img\", new()\n {\n ContentType = \"iso\",\n DatastoreId = \"local\",\n NodeName = \"pve\",\n Overwrite = false,\n Url = \"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\",\n });\n\n var release20231211Ubuntu22JammyLxcImg = new ProxmoxVE.Download.File(\"release20231211Ubuntu22JammyLxcImg\", new()\n {\n Checksum = \"c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e\",\n ChecksumAlgorithm = \"sha256\",\n ContentType = \"vztmpl\",\n DatastoreId = \"local\",\n NodeName = \"pve\",\n UploadTimeout = 4444,\n Url = \"https://cloud-images.ubuntu.com/releases/22.04/release-20231211/ubuntu-22.04-server-cloudimg-amd64-root.tar.xz\",\n });\n\n var latestUbuntu22JammyLxcImg = new ProxmoxVE.Download.File(\"latestUbuntu22JammyLxcImg\", 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/v6/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, \"release20231228Debian12BookwormQcow2Img\", \u0026Download.FileArgs{\n\t\t\tChecksum: pulumi.String(\"d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\"),\n\t\t\tChecksumAlgorithm: pulumi.String(\"sha512\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Download.NewFile(ctx, \"latestDebian12BookwormQcow2Img\", \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, \"latestUbuntu22JammyQcow2Img\", \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, \"latestStaticUbuntu24NobleQcow2Img\", \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\tOverwrite: pulumi.Bool(false),\n\t\t\tUrl: pulumi.String(\"https://cloud-images.ubuntu.com/noble/current/noble-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, \"release20231211Ubuntu22JammyLxcImg\", \u0026Download.FileArgs{\n\t\t\tChecksum: pulumi.String(\"c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e\"),\n\t\t\tChecksumAlgorithm: pulumi.String(\"sha256\"),\n\t\t\tContentType: pulumi.String(\"vztmpl\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tUploadTimeout: pulumi.Int(4444),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Download.NewFile(ctx, \"latestUbuntu22JammyLxcImg\", \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 com.pulumi.proxmoxve.Download.File;\nimport com.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 .checksum(\"d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\")\n .checksumAlgorithm(\"sha512\")\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 .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 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 .overwrite(false)\n .url(\"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\")\n .build());\n\n var release20231211Ubuntu22JammyLxcImg = new File(\"release20231211Ubuntu22JammyLxcImg\", FileArgs.builder()\n .checksum(\"c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e\")\n .checksumAlgorithm(\"sha256\")\n .contentType(\"vztmpl\")\n .datastoreId(\"local\")\n .nodeName(\"pve\")\n .uploadTimeout(4444)\n .url(\"https://cloud-images.ubuntu.com/releases/22.04/release-20231211/ubuntu-22.04-server-cloudimg-amd64-root.tar.xz\")\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 properties:\n checksum: d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\n checksumAlgorithm: sha512\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 latestDebian12BookwormQcow2Img:\n type: proxmoxve:Download:File\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 latestUbuntu22JammyQcow2Img:\n type: proxmoxve:Download:File\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 properties:\n contentType: iso\n datastoreId: local\n nodeName: pve\n overwrite: false\n url: https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\n release20231211Ubuntu22JammyLxcImg:\n type: proxmoxve:Download:File\n properties:\n checksum: c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e\n checksumAlgorithm: sha256\n contentType: vztmpl\n datastoreId: local\n nodeName: pve\n uploadTimeout: 4444\n url: https://cloud-images.ubuntu.com/releases/22.04/release-20231211/ubuntu-22.04-server-cloudimg-amd64-root.tar.xz\n latestUbuntu22JammyLxcImg:\n type: proxmoxve:Download:File\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 `md5` | `sha1` | `sha224` | `sha256` | `sha384` | `sha512`.\n"},"contentType":{"type":"string","description":"The file content type. Must be `iso` for VM images or `vztmpl` 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 `gz` | `lzo` | `zst`.\n"},"fileName":{"type":"string","description":"The file name. If not provided, it is calculated using `url`. PVE will raise 'wrong file extension' error for some popular extensions file `.raw` or `.qcow2`. Workaround is to use e.g. `.img` instead.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"overwrite":{"type":"boolean","description":"If `true` and size of uploaded file is different, than size from `url` Content-Length header, file will be downloaded again. If `false`, there will be no checks.\n"},"overwriteUnmanaged":{"type":"boolean","description":"If `true` and a file with the same name already exists in the datastore, it will be deleted and the new file will be downloaded. If `false` and the file already exists, an error will be returned.\n"},"size":{"type":"integer","description":"The file size.\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. Format `https?://.*`.\n"},"verify":{"type":"boolean","description":"By default `true`. If `false`, 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 `md5` | `sha1` | `sha224` | `sha256` | `sha384` | `sha512`.\n"},"contentType":{"type":"string","description":"The file content type. Must be `iso` for VM images or `vztmpl` 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 `gz` | `lzo` | `zst`.\n"},"fileName":{"type":"string","description":"The file name. If not provided, it is calculated using `url`. PVE will raise 'wrong file extension' error for some popular extensions file `.raw` or `.qcow2`. Workaround is to use e.g. `.img` instead.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"overwrite":{"type":"boolean","description":"If `true` and size of uploaded file is different, than size from `url` Content-Length header, file will be downloaded again. If `false`, there will be no checks.\n"},"overwriteUnmanaged":{"type":"boolean","description":"If `true` and a file with the same name already exists in the datastore, it will be deleted and the new file will be downloaded. If `false` 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. Format `https?://.*`.\n"},"verify":{"type":"boolean","description":"By default `true`. If `false`, 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 `md5` | `sha1` | `sha224` | `sha256` | `sha384` | `sha512`.\n"},"contentType":{"type":"string","description":"The file content type. Must be `iso` for VM images or `vztmpl` 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 `gz` | `lzo` | `zst`.\n"},"fileName":{"type":"string","description":"The file name. If not provided, it is calculated using `url`. PVE will raise 'wrong file extension' error for some popular extensions file `.raw` or `.qcow2`. Workaround is to use e.g. `.img` instead.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"overwrite":{"type":"boolean","description":"If `true` and size of uploaded file is different, than size from `url` Content-Length header, file will be downloaded again. If `false`, there will be no checks.\n"},"overwriteUnmanaged":{"type":"boolean","description":"If `true` and a file with the same name already exists in the datastore, it will be deleted and the new file will be downloaded. If `false` and the file already exists, an error will be returned.\n"},"size":{"type":"integer","description":"The file size.\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. Format `https?://.*`.\n"},"verify":{"type":"boolean","description":"By default `true`. If `false`, no SSL/TLS certificates will be verified.\n"}},"type":"object"}},"proxmoxve:HA/hAGroup:HAGroup":{"description":"Manages a High Availability group in a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.ha.HAGroup(\"example\", {\n group: \"example\",\n comment: \"This is a comment.\",\n nodes: {\n node1: undefined,\n node2: 2,\n node3: 1,\n },\n restricted: true,\n noFailback: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.ha.HAGroup(\"example\",\n group=\"example\",\n comment=\"This is a comment.\",\n nodes={\n \"node1\": None,\n \"node2\": 2,\n \"node3\": 1,\n },\n restricted=True,\n no_failback=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new ProxmoxVE.HA.HAGroup(\"example\", new()\n {\n Group = \"example\",\n Comment = \"This is a comment.\",\n Nodes = \n {\n { \"node1\", null },\n { \"node2\", 2 },\n { \"node3\", 1 },\n },\n Restricted = true,\n NoFailback = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/HA\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := HA.NewHAGroup(ctx, \"example\", \u0026HA.HAGroupArgs{\n\t\t\tGroup: pulumi.String(\"example\"),\n\t\t\tComment: pulumi.String(\"This is a comment.\"),\n\t\t\tNodes: pulumi.IntMap{\n\t\t\t\t\"node1\": nil,\n\t\t\t\t\"node2\": pulumi.Int(2),\n\t\t\t\t\"node3\": pulumi.Int(1),\n\t\t\t},\n\t\t\tRestricted: pulumi.Bool(true),\n\t\t\tNoFailback: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.HA.HAGroup;\nimport com.pulumi.proxmoxve.HA.HAGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new HAGroup(\"example\", HAGroupArgs.builder()\n .group(\"example\")\n .comment(\"This is a comment.\")\n .nodes(Map.ofEntries(\n Map.entry(\"node1\", null),\n Map.entry(\"node2\", 2),\n Map.entry(\"node3\", 1)\n ))\n .restricted(true)\n .noFailback(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:HA:HAGroup\n properties:\n group: example\n comment: This is a comment.\n # Member nodes, with or without priority.\n nodes:\n node1: null\n node2: 2\n node3: 1\n restricted: true\n noFailback: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nHA groups can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:HA/hAGroup:HAGroup example example\n```\n\n","properties":{"comment":{"type":"string","description":"The comment associated with this group\n"},"group":{"type":"string","description":"The identifier of the High Availability group to manage.\n"},"noFailback":{"type":"boolean","description":"A flag that indicates that failing back to a higher priority node is disabled for this HA group. Defaults to `false`.\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 `null` 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 `false`.\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 `false`.\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 `null` 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 `false`.\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 `false`.\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 `null` 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 `false`.\n"}},"type":"object"}},"proxmoxve:HA/hAResource:HAResource":{"description":"Manages Proxmox HA resources.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.ha.HAResource(\"example\", {\n resourceId: \"vm:123\",\n state: \"started\",\n group: \"example\",\n comment: \"Managed by Terraform\",\n}, {\n dependsOn: [proxmox_virtual_environment_hagroup.example],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.ha.HAResource(\"example\",\n resource_id=\"vm:123\",\n state=\"started\",\n group=\"example\",\n comment=\"Managed by Terraform\",\n opts = pulumi.ResourceOptions(depends_on=[proxmox_virtual_environment_hagroup[\"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 = new ProxmoxVE.HA.HAResource(\"example\", new()\n {\n ResourceId = \"vm:123\",\n State = \"started\",\n Group = \"example\",\n Comment = \"Managed by Terraform\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxmox_virtual_environment_hagroup.Example,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/HA\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := HA.NewHAResource(ctx, \"example\", \u0026HA.HAResourceArgs{\n\t\t\tResourceId: pulumi.String(\"vm:123\"),\n\t\t\tState: pulumi.String(\"started\"),\n\t\t\tGroup: pulumi.String(\"example\"),\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxmox_virtual_environment_hagroup.Example,\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.HA.HAResource;\nimport com.pulumi.proxmoxve.HA.HAResourceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new HAResource(\"example\", HAResourceArgs.builder()\n .resourceId(\"vm:123\")\n .state(\"started\")\n .group(\"example\")\n .comment(\"Managed by Terraform\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxmox_virtual_environment_hagroup.example())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:HA:HAResource\n properties:\n resourceId: vm:123\n state: started\n group: example\n comment: Managed by Terraform\n options:\n dependson:\n - ${proxmox_virtual_environment_hagroup.example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nHA resources can be imported using their identifiers, e.g.:\n\n```sh\n$ pulumi import proxmoxve:HA/hAResource:HAResource example vm:123\n```\n\n","properties":{"comment":{"type":"string","description":"The comment associated with this resource.\n"},"group":{"type":"string","description":"The identifier of the High Availability group this resource is a member of.\n"},"maxRelocate":{"type":"integer","description":"The maximal number of relocation attempts.\n"},"maxRestart":{"type":"integer","description":"The maximal number of restart attempts.\n"},"resourceId":{"type":"string","description":"The Proxmox HA resource identifier\n"},"state":{"type":"string","description":"The desired state of the resource.\n"},"type":{"type":"string","description":"The type of HA resources to create. If unset, it will be deduced from the `resource_id`.\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 `resource_id`.\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 `resource_id`.\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Hardware.Pci;\nimport com.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 .maps(PciMapArgs.builder()\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 .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 # The actual map of devices.\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 mediatedDevices: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nA PCI hardware mapping can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:Hardware/mapping/pci:Pci example example\n```\n\n","properties":{"comment":{"type":"string","description":"The comment of this PCI hardware mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/PciMap:PciMap"},"description":"The actual map of devices for the PCI hardware mapping.\n"},"mediatedDevices":{"type":"boolean","description":"Indicates whether to enable mediated devices.\n"},"name":{"type":"string","description":"The name of this PCI hardware mapping.\n"}},"required":["maps","mediatedDevices","name"],"inputProperties":{"comment":{"type":"string","description":"The comment of this PCI hardware mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/PciMap:PciMap"},"description":"The actual map of devices for the PCI hardware mapping.\n"},"mediatedDevices":{"type":"boolean","description":"Indicates whether to enable mediated devices.\n"},"name":{"type":"string","description":"The name of this PCI hardware mapping.\n"}},"requiredInputs":["maps"],"stateInputs":{"description":"Input properties used for looking up and filtering Pci resources.\n","properties":{"comment":{"type":"string","description":"The comment of this PCI hardware mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/PciMap:PciMap"},"description":"The actual map of devices for the PCI hardware mapping.\n"},"mediatedDevices":{"type":"boolean","description":"Indicates whether to enable mediated devices.\n"},"name":{"type":"string","description":"The name of this PCI hardware mapping.\n"}},"type":"object"}},"proxmoxve:Hardware/mapping/usb:Usb":{"description":"Manages a USB hardware mapping in a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.hardware.mapping.Usb(\"example\", {\n comment: \"This is a comment\",\n 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 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 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/v6/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\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 com.pulumi.proxmoxve.Hardware.Usb;\nimport com.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 .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 # The actual map of devices.\n maps:\n - comment: This is a device specific comment\n id: 8087:0a2b\n node: pve\n path: 1-8.2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nA USB hardware mapping can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:Hardware/mapping/usb:Usb example example\n```\n\n","properties":{"comment":{"type":"string","description":"The comment of this USB hardware mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/UsbMap:UsbMap"},"description":"The actual map of devices for the hardware mapping.\n"},"name":{"type":"string","description":"The name of this hardware mapping.\n"}},"required":["maps","name"],"inputProperties":{"comment":{"type":"string","description":"The comment of this USB hardware mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/UsbMap:UsbMap"},"description":"The actual map of devices for the hardware mapping.\n"},"name":{"type":"string","description":"The name of this hardware mapping.\n"}},"requiredInputs":["maps"],"stateInputs":{"description":"Input properties used for looking up and filtering Usb resources.\n","properties":{"comment":{"type":"string","description":"The comment of this USB hardware mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/UsbMap:UsbMap"},"description":"The actual map of devices for the hardware mapping.\n"},"name":{"type":"string","description":"The name of this hardware mapping.\n"}},"type":"object"}},"proxmoxve:Network/firewall:Firewall":{"description":"Manages firewall options on the cluster level.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.network.Firewall(\"example\", {\n ebtables: false,\n enabled: false,\n inputPolicy: \"DROP\",\n logRatelimit: {\n burst: 10,\n enabled: false,\n rate: \"5/second\",\n },\n outputPolicy: \"ACCEPT\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.network.Firewall(\"example\",\n ebtables=False,\n enabled=False,\n input_policy=\"DROP\",\n log_ratelimit={\n \"burst\": 10,\n \"enabled\": False,\n \"rate\": \"5/second\",\n },\n output_policy=\"ACCEPT\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new ProxmoxVE.Network.Firewall(\"example\", new()\n {\n Ebtables = false,\n Enabled = false,\n InputPolicy = \"DROP\",\n LogRatelimit = new ProxmoxVE.Network.Inputs.FirewallLogRatelimitArgs\n {\n Burst = 10,\n Enabled = false,\n Rate = \"5/second\",\n },\n OutputPolicy = \"ACCEPT\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.NewFirewall(ctx, \"example\", \u0026Network.FirewallArgs{\n\t\t\tEbtables: pulumi.Bool(false),\n\t\t\tEnabled: pulumi.Bool(false),\n\t\t\tInputPolicy: pulumi.String(\"DROP\"),\n\t\t\tLogRatelimit: \u0026network.FirewallLogRatelimitArgs{\n\t\t\t\tBurst: pulumi.Int(10),\n\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t\tRate: pulumi.String(\"5/second\"),\n\t\t\t},\n\t\t\tOutputPolicy: pulumi.String(\"ACCEPT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.Firewall;\nimport com.pulumi.proxmoxve.Network.FirewallArgs;\nimport com.pulumi.proxmoxve.Network.inputs.FirewallLogRatelimitArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Firewall(\"example\", FirewallArgs.builder()\n .ebtables(false)\n .enabled(false)\n .inputPolicy(\"DROP\")\n .logRatelimit(FirewallLogRatelimitArgs.builder()\n .burst(10)\n .enabled(false)\n .rate(\"5/second\")\n .build())\n .outputPolicy(\"ACCEPT\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:Network:Firewall\n properties:\n ebtables: false\n enabled: false\n inputPolicy: DROP\n logRatelimit:\n burst: 10\n enabled: false\n rate: 5/second\n outputPolicy: ACCEPT\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Important Notes\n\nBe careful not to use this resource multiple times for the same node.\n\n## Import\n\nInstances can be imported without an ID, but you still need to pass one, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Network/firewall:Firewall example example\n```\n\n","properties":{"ebtables":{"type":"boolean","description":"Enable ebtables rules cluster wide.\n"},"enabled":{"type":"boolean","description":"Enable or disable the firewall cluster wide.\n"},"inputPolicy":{"type":"string","description":"The default input policy (`ACCEPT`, `DROP`, `REJECT`).\n"},"logRatelimit":{"$ref":"#/types/proxmoxve:Network/FirewallLogRatelimit:FirewallLogRatelimit","description":"The log rate limit.\n"},"outputPolicy":{"type":"string","description":"The default output policy (`ACCEPT`, `DROP`, `REJECT`).\n"}},"inputProperties":{"ebtables":{"type":"boolean","description":"Enable ebtables rules cluster wide.\n"},"enabled":{"type":"boolean","description":"Enable or disable the firewall cluster wide.\n"},"inputPolicy":{"type":"string","description":"The default input policy (`ACCEPT`, `DROP`, `REJECT`).\n"},"logRatelimit":{"$ref":"#/types/proxmoxve:Network/FirewallLogRatelimit:FirewallLogRatelimit","description":"The log rate limit.\n"},"outputPolicy":{"type":"string","description":"The default output policy (`ACCEPT`, `DROP`, `REJECT`).\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering Firewall resources.\n","properties":{"ebtables":{"type":"boolean","description":"Enable ebtables rules cluster wide.\n"},"enabled":{"type":"boolean","description":"Enable or disable the firewall cluster wide.\n"},"inputPolicy":{"type":"string","description":"The default input policy (`ACCEPT`, `DROP`, `REJECT`).\n"},"logRatelimit":{"$ref":"#/types/proxmoxve:Network/FirewallLogRatelimit:FirewallLogRatelimit","description":"The log rate limit.\n"},"outputPolicy":{"type":"string","description":"The default output policy (`ACCEPT`, `DROP`, `REJECT`).\n"}},"type":"object"}},"proxmoxve:Network/firewallAlias:FirewallAlias":{"description":"Aliases are used to see what devices or group of devices are affected by a rule.\nWe can create aliases to identify an IP address or a network. Aliases can be\ncreated on the cluster level, on VM / Container level.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst localNetwork = new proxmoxve.network.FirewallAlias(\"localNetwork\", {\n nodeName: proxmox_virtual_environment_vm.example.node_name,\n vmId: proxmox_virtual_environment_vm.example.vm_id,\n cidr: \"192.168.0.0/23\",\n comment: \"Managed by Terraform\",\n}, {\n dependsOn: [proxmox_virtual_environment_vm.example],\n});\nconst ubuntuVm = new proxmoxve.network.FirewallAlias(\"ubuntuVm\", {\n cidr: \"192.168.0.1\",\n comment: \"Managed by Terraform\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nlocal_network = proxmoxve.network.FirewallAlias(\"localNetwork\",\n node_name=proxmox_virtual_environment_vm[\"example\"][\"node_name\"],\n vm_id=proxmox_virtual_environment_vm[\"example\"][\"vm_id\"],\n cidr=\"192.168.0.0/23\",\n comment=\"Managed by Terraform\",\n opts = pulumi.ResourceOptions(depends_on=[proxmox_virtual_environment_vm[\"example\"]]))\nubuntu_vm = proxmoxve.network.FirewallAlias(\"ubuntuVm\",\n cidr=\"192.168.0.1\",\n comment=\"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 localNetwork = new ProxmoxVE.Network.FirewallAlias(\"localNetwork\", new()\n {\n NodeName = proxmox_virtual_environment_vm.Example.Node_name,\n VmId = proxmox_virtual_environment_vm.Example.Vm_id,\n Cidr = \"192.168.0.0/23\",\n Comment = \"Managed by Terraform\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxmox_virtual_environment_vm.Example,\n },\n });\n\n var ubuntuVm = new ProxmoxVE.Network.FirewallAlias(\"ubuntuVm\", new()\n {\n Cidr = \"192.168.0.1\",\n Comment = \"Managed by Terraform\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.NewFirewallAlias(ctx, \"localNetwork\", \u0026Network.FirewallAliasArgs{\n\t\t\tNodeName: pulumi.Any(proxmox_virtual_environment_vm.Example.Node_name),\n\t\t\tVmId: pulumi.Any(proxmox_virtual_environment_vm.Example.Vm_id),\n\t\t\tCidr: pulumi.String(\"192.168.0.0/23\"),\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxmox_virtual_environment_vm.Example,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Network.NewFirewallAlias(ctx, \"ubuntuVm\", \u0026Network.FirewallAliasArgs{\n\t\t\tCidr: pulumi.String(\"192.168.0.1\"),\n\t\t\tComment: pulumi.String(\"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 com.pulumi.proxmoxve.Network.FirewallAlias;\nimport com.pulumi.proxmoxve.Network.FirewallAliasArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var localNetwork = new FirewallAlias(\"localNetwork\", FirewallAliasArgs.builder()\n .nodeName(proxmox_virtual_environment_vm.example().node_name())\n .vmId(proxmox_virtual_environment_vm.example().vm_id())\n .cidr(\"192.168.0.0/23\")\n .comment(\"Managed by Terraform\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxmox_virtual_environment_vm.example())\n .build());\n\n var ubuntuVm = new FirewallAlias(\"ubuntuVm\", FirewallAliasArgs.builder()\n .cidr(\"192.168.0.1\")\n .comment(\"Managed by Terraform\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n localNetwork:\n type: proxmoxve:Network:FirewallAlias\n properties:\n nodeName: ${proxmox_virtual_environment_vm.example.node_name}\n vmId: ${proxmox_virtual_environment_vm.example.vm_id}\n cidr: 192.168.0.0/23\n comment: Managed by Terraform\n options:\n dependson:\n - ${proxmox_virtual_environment_vm.example}\n ubuntuVm:\n type: proxmoxve:Network:FirewallAlias\n properties:\n cidr: 192.168.0.1\n comment: Managed by Terraform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"cidr":{"type":"string","description":"Network/IP specification in CIDR format.\n"},"comment":{"type":"string","description":"Alias comment.\n"},"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"name":{"type":"string","description":"Alias name.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level aliases.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level aliases.\n"}},"required":["cidr","name"],"inputProperties":{"cidr":{"type":"string","description":"Network/IP specification in CIDR format.\n"},"comment":{"type":"string","description":"Alias comment.\n"},"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"name":{"type":"string","description":"Alias name.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level aliases.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level aliases.\n"}},"requiredInputs":["cidr"],"stateInputs":{"description":"Input properties used for looking up and filtering FirewallAlias resources.\n","properties":{"cidr":{"type":"string","description":"Network/IP specification in CIDR format.\n"},"comment":{"type":"string","description":"Alias comment.\n"},"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"name":{"type":"string","description":"Alias name.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level aliases.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level aliases.\n"}},"type":"object"}},"proxmoxve:Network/firewallIPSet:FirewallIPSet":{"description":"An IPSet allows us to group multiple IP addresses, IP subnets and aliases. 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 ipset = new proxmoxve.network.FirewallIPSet(\"ipset\", {\n nodeName: proxmox_virtual_environment_vm.example.node_name,\n vmId: proxmox_virtual_environment_vm.example.vm_id,\n comment: \"Managed by Terraform\",\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: [proxmox_virtual_environment_vm.example],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nipset = proxmoxve.network.FirewallIPSet(\"ipset\",\n node_name=proxmox_virtual_environment_vm[\"example\"][\"node_name\"],\n vm_id=proxmox_virtual_environment_vm[\"example\"][\"vm_id\"],\n comment=\"Managed by Terraform\",\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=[proxmox_virtual_environment_vm[\"example\"]]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ipset = new ProxmoxVE.Network.FirewallIPSet(\"ipset\", new()\n {\n NodeName = proxmox_virtual_environment_vm.Example.Node_name,\n VmId = proxmox_virtual_environment_vm.Example.Vm_id,\n Comment = \"Managed by Terraform\",\n Cidrs = new[]\n {\n new ProxmoxVE.Network.Inputs.FirewallIPSetCidrArgs\n {\n Name = \"192.168.0.0/23\",\n Comment = \"Local network 1\",\n },\n new ProxmoxVE.Network.Inputs.FirewallIPSetCidrArgs\n {\n Name = \"192.168.0.1\",\n Comment = \"Server 1\",\n Nomatch = true,\n },\n new ProxmoxVE.Network.Inputs.FirewallIPSetCidrArgs\n {\n Name = \"192.168.2.1\",\n Comment = \"Server 1\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxmox_virtual_environment_vm.Example,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.NewFirewallIPSet(ctx, \"ipset\", \u0026Network.FirewallIPSetArgs{\n\t\t\tNodeName: pulumi.Any(proxmox_virtual_environment_vm.Example.Node_name),\n\t\t\tVmId: pulumi.Any(proxmox_virtual_environment_vm.Example.Vm_id),\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t\tCidrs: network.FirewallIPSetCidrArray{\n\t\t\t\t\u0026network.FirewallIPSetCidrArgs{\n\t\t\t\t\tName: pulumi.String(\"192.168.0.0/23\"),\n\t\t\t\t\tComment: pulumi.String(\"Local network 1\"),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallIPSetCidrArgs{\n\t\t\t\t\tName: pulumi.String(\"192.168.0.1\"),\n\t\t\t\t\tComment: pulumi.String(\"Server 1\"),\n\t\t\t\t\tNomatch: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallIPSetCidrArgs{\n\t\t\t\t\tName: pulumi.String(\"192.168.2.1\"),\n\t\t\t\t\tComment: pulumi.String(\"Server 1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxmox_virtual_environment_vm.Example,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.FirewallIPSet;\nimport com.pulumi.proxmoxve.Network.FirewallIPSetArgs;\nimport com.pulumi.proxmoxve.Network.inputs.FirewallIPSetCidrArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ipset = new FirewallIPSet(\"ipset\", FirewallIPSetArgs.builder()\n .nodeName(proxmox_virtual_environment_vm.example().node_name())\n .vmId(proxmox_virtual_environment_vm.example().vm_id())\n .comment(\"Managed by Terraform\")\n .cidrs( \n FirewallIPSetCidrArgs.builder()\n .name(\"192.168.0.0/23\")\n .comment(\"Local network 1\")\n .build(),\n FirewallIPSetCidrArgs.builder()\n .name(\"192.168.0.1\")\n .comment(\"Server 1\")\n .nomatch(true)\n .build(),\n FirewallIPSetCidrArgs.builder()\n .name(\"192.168.2.1\")\n .comment(\"Server 1\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxmox_virtual_environment_vm.example())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ipset:\n type: proxmoxve:Network:FirewallIPSet\n properties:\n nodeName: ${proxmox_virtual_environment_vm.example.node_name}\n vmId: ${proxmox_virtual_environment_vm.example.vm_id}\n comment: Managed by Terraform\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 - ${proxmox_virtual_environment_vm.example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"cidrs":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallIPSetCidr:FirewallIPSetCidr"},"description":"IP/CIDR block (multiple blocks supported).\n"},"comment":{"type":"string","description":"IPSet comment.\n"},"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"name":{"type":"string","description":"IPSet 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":["name"],"inputProperties":{"cidrs":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallIPSetCidr:FirewallIPSetCidr"},"description":"IP/CIDR block (multiple blocks supported).\n","willReplaceOnChanges":true},"comment":{"type":"string","description":"IPSet comment.\n"},"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"name":{"type":"string","description":"IPSet 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"}},"stateInputs":{"description":"Input properties used for looking up and filtering FirewallIPSet resources.\n","properties":{"cidrs":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallIPSetCidr:FirewallIPSetCidr"},"description":"IP/CIDR block (multiple blocks supported).\n","willReplaceOnChanges":true},"comment":{"type":"string","description":"IPSet comment.\n"},"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"name":{"type":"string","description":"IPSet name.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level aliases.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level aliases.\n"}},"type":"object"}},"proxmoxve:Network/firewallOptions:FirewallOptions":{"description":"Manages firewall options on VM / Container level.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.network.FirewallOptions(\"example\", {\n nodeName: proxmox_virtual_environment_vm.example.node_name,\n vmId: proxmox_virtual_environment_vm.example.vm_id,\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: [proxmox_virtual_environment_vm.example],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.network.FirewallOptions(\"example\",\n node_name=proxmox_virtual_environment_vm[\"example\"][\"node_name\"],\n vm_id=proxmox_virtual_environment_vm[\"example\"][\"vm_id\"],\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=[proxmox_virtual_environment_vm[\"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 = new ProxmoxVE.Network.FirewallOptions(\"example\", new()\n {\n NodeName = proxmox_virtual_environment_vm.Example.Node_name,\n VmId = proxmox_virtual_environment_vm.Example.Vm_id,\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 proxmox_virtual_environment_vm.Example,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.NewFirewallOptions(ctx, \"example\", \u0026Network.FirewallOptionsArgs{\n\t\t\tNodeName: pulumi.Any(proxmox_virtual_environment_vm.Example.Node_name),\n\t\t\tVmId: pulumi.Any(proxmox_virtual_environment_vm.Example.Vm_id),\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\tproxmox_virtual_environment_vm.Example,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.FirewallOptions;\nimport com.pulumi.proxmoxve.Network.FirewallOptionsArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new FirewallOptions(\"example\", FirewallOptionsArgs.builder()\n .nodeName(proxmox_virtual_environment_vm.example().node_name())\n .vmId(proxmox_virtual_environment_vm.example().vm_id())\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(proxmox_virtual_environment_vm.example())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:Network:FirewallOptions\n properties:\n nodeName: ${proxmox_virtual_environment_vm.example.node_name}\n vmId: ${proxmox_virtual_environment_vm.example.vm_id}\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 - ${proxmox_virtual_environment_vm.example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\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 (`emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`,\n`debug`, `nolog`).\n"},"logLevelOut":{"type":"string","description":"Log level for outgoing\npackets (`emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`,\n`debug`, `nolog`).\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. Leave empty for cluster level aliases.\n"}},"required":["nodeName"],"inputProperties":{"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\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 (`emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`,\n`debug`, `nolog`).\n"},"logLevelOut":{"type":"string","description":"Log level for outgoing\npackets (`emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`,\n`debug`, `nolog`).\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. Leave empty for cluster level aliases.\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering FirewallOptions resources.\n","properties":{"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\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 (`emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`,\n`debug`, `nolog`).\n"},"logLevelOut":{"type":"string","description":"Log level for outgoing\npackets (`emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`,\n`debug`, `nolog`).\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. Leave empty for cluster level aliases.\n"}},"type":"object"}},"proxmoxve:Network/firewallRules:FirewallRules":{"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. Rules can be created on the cluster\nlevel, 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 inbound = new proxmoxve.network.FirewallRules(\"inbound\", {\n nodeName: proxmox_virtual_environment_vm.example.node_name,\n vmId: proxmox_virtual_environment_vm.example.vm_id,\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: proxmox_virtual_environment_cluster_firewall_security_group.example.name,\n comment: \"From security group\",\n iface: \"net0\",\n },\n ],\n}, {\n dependsOn: [\n proxmox_virtual_environment_vm.example,\n proxmox_virtual_environment_cluster_firewall_security_group.example,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\ninbound = proxmoxve.network.FirewallRules(\"inbound\",\n node_name=proxmox_virtual_environment_vm[\"example\"][\"node_name\"],\n vm_id=proxmox_virtual_environment_vm[\"example\"][\"vm_id\"],\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\": proxmox_virtual_environment_cluster_firewall_security_group[\"example\"][\"name\"],\n \"comment\": \"From security group\",\n \"iface\": \"net0\",\n },\n ],\n opts = pulumi.ResourceOptions(depends_on=[\n proxmox_virtual_environment_vm[\"example\"],\n proxmox_virtual_environment_cluster_firewall_security_group[\"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 inbound = new ProxmoxVE.Network.FirewallRules(\"inbound\", new()\n {\n NodeName = proxmox_virtual_environment_vm.Example.Node_name,\n VmId = proxmox_virtual_environment_vm.Example.Vm_id,\n Rules = new[]\n {\n new ProxmoxVE.Network.Inputs.FirewallRulesRuleArgs\n {\n Type = \"in\",\n Action = \"ACCEPT\",\n Comment = \"Allow HTTP\",\n Dest = \"192.168.1.5\",\n Dport = \"80\",\n Proto = \"tcp\",\n Log = \"info\",\n },\n new ProxmoxVE.Network.Inputs.FirewallRulesRuleArgs\n {\n Type = \"in\",\n Action = \"ACCEPT\",\n Comment = \"Allow HTTPS\",\n Dest = \"192.168.1.5\",\n Dport = \"443\",\n Proto = \"tcp\",\n Log = \"info\",\n },\n new ProxmoxVE.Network.Inputs.FirewallRulesRuleArgs\n {\n SecurityGroup = proxmox_virtual_environment_cluster_firewall_security_group.Example.Name,\n Comment = \"From security group\",\n Iface = \"net0\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxmox_virtual_environment_vm.Example,\n proxmox_virtual_environment_cluster_firewall_security_group.Example,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.NewFirewallRules(ctx, \"inbound\", \u0026Network.FirewallRulesArgs{\n\t\t\tNodeName: pulumi.Any(proxmox_virtual_environment_vm.Example.Node_name),\n\t\t\tVmId: pulumi.Any(proxmox_virtual_environment_vm.Example.Vm_id),\n\t\t\tRules: network.FirewallRulesRuleArray{\n\t\t\t\t\u0026network.FirewallRulesRuleArgs{\n\t\t\t\t\tType: pulumi.String(\"in\"),\n\t\t\t\t\tAction: pulumi.String(\"ACCEPT\"),\n\t\t\t\t\tComment: pulumi.String(\"Allow HTTP\"),\n\t\t\t\t\tDest: pulumi.String(\"192.168.1.5\"),\n\t\t\t\t\tDport: pulumi.String(\"80\"),\n\t\t\t\t\tProto: pulumi.String(\"tcp\"),\n\t\t\t\t\tLog: pulumi.String(\"info\"),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallRulesRuleArgs{\n\t\t\t\t\tType: pulumi.String(\"in\"),\n\t\t\t\t\tAction: pulumi.String(\"ACCEPT\"),\n\t\t\t\t\tComment: pulumi.String(\"Allow HTTPS\"),\n\t\t\t\t\tDest: pulumi.String(\"192.168.1.5\"),\n\t\t\t\t\tDport: pulumi.String(\"443\"),\n\t\t\t\t\tProto: pulumi.String(\"tcp\"),\n\t\t\t\t\tLog: pulumi.String(\"info\"),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallRulesRuleArgs{\n\t\t\t\t\tSecurityGroup: pulumi.Any(proxmox_virtual_environment_cluster_firewall_security_group.Example.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\tproxmox_virtual_environment_vm.Example,\n\t\t\tproxmox_virtual_environment_cluster_firewall_security_group.Example,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.FirewallRules;\nimport com.pulumi.proxmoxve.Network.FirewallRulesArgs;\nimport com.pulumi.proxmoxve.Network.inputs.FirewallRulesRuleArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var inbound = new FirewallRules(\"inbound\", FirewallRulesArgs.builder()\n .nodeName(proxmox_virtual_environment_vm.example().node_name())\n .vmId(proxmox_virtual_environment_vm.example().vm_id())\n .rules( \n FirewallRulesRuleArgs.builder()\n .type(\"in\")\n .action(\"ACCEPT\")\n .comment(\"Allow HTTP\")\n .dest(\"192.168.1.5\")\n .dport(\"80\")\n .proto(\"tcp\")\n .log(\"info\")\n .build(),\n FirewallRulesRuleArgs.builder()\n .type(\"in\")\n .action(\"ACCEPT\")\n .comment(\"Allow HTTPS\")\n .dest(\"192.168.1.5\")\n .dport(\"443\")\n .proto(\"tcp\")\n .log(\"info\")\n .build(),\n FirewallRulesRuleArgs.builder()\n .securityGroup(proxmox_virtual_environment_cluster_firewall_security_group.example().name())\n .comment(\"From security group\")\n .iface(\"net0\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n proxmox_virtual_environment_vm.example(),\n proxmox_virtual_environment_cluster_firewall_security_group.example())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n inbound:\n type: proxmoxve:Network:FirewallRules\n properties:\n nodeName: ${proxmox_virtual_environment_vm.example.node_name}\n vmId: ${proxmox_virtual_environment_vm.example.vm_id}\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: ${proxmox_virtual_environment_cluster_firewall_security_group.example.name}\n comment: From security group\n iface: net0\n options:\n dependson:\n - ${proxmox_virtual_environment_vm.example}\n - ${proxmox_virtual_environment_cluster_firewall_security_group.example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level\nrules.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level rules.\n"},"rules":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallRulesRule:FirewallRulesRule"},"description":"Firewall rule block (multiple blocks supported).\nThe provider supports two types of the `rule` blocks:\n- A rule definition block, which includes the following arguments:\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level rules.\n"}},"required":["rules"],"inputProperties":{"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level\nrules.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level rules.\n"},"rules":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallRulesRule:FirewallRulesRule"},"description":"Firewall rule block (multiple blocks supported).\nThe provider supports two types of the `rule` blocks:\n- A rule definition block, which includes the following arguments:\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level rules.\n"}},"requiredInputs":["rules"],"stateInputs":{"description":"Input properties used for looking up and filtering FirewallRules resources.\n","properties":{"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level\nrules.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level rules.\n"},"rules":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallRulesRule:FirewallRulesRule"},"description":"Firewall rule block (multiple blocks supported).\nThe provider supports two types of the `rule` blocks:\n- A rule definition block, which includes the following arguments:\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level rules.\n"}},"type":"object"}},"proxmoxve:Network/firewallSecurityGroup:FirewallSecurityGroup":{"description":"A security group is a collection of rules, defined at cluster level, which can\nbe used in all VMs' rules. For example, you can define a group named “webserver”\nwith rules to open the http and https ports.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst webserver = new proxmoxve.network.FirewallSecurityGroup(\"webserver\", {\n comment: \"Managed by Terraform\",\n rules: [\n {\n action: \"ACCEPT\",\n comment: \"Allow HTTP\",\n dest: \"192.168.1.5\",\n dport: \"80\",\n log: \"info\",\n proto: \"tcp\",\n type: \"in\",\n },\n {\n action: \"ACCEPT\",\n comment: \"Allow HTTPS\",\n dest: \"192.168.1.5\",\n dport: \"443\",\n log: \"info\",\n proto: \"tcp\",\n type: \"in\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nwebserver = proxmoxve.network.FirewallSecurityGroup(\"webserver\",\n comment=\"Managed by Terraform\",\n rules=[\n {\n \"action\": \"ACCEPT\",\n \"comment\": \"Allow HTTP\",\n \"dest\": \"192.168.1.5\",\n \"dport\": \"80\",\n \"log\": \"info\",\n \"proto\": \"tcp\",\n \"type\": \"in\",\n },\n {\n \"action\": \"ACCEPT\",\n \"comment\": \"Allow HTTPS\",\n \"dest\": \"192.168.1.5\",\n \"dport\": \"443\",\n \"log\": \"info\",\n \"proto\": \"tcp\",\n \"type\": \"in\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var webserver = new ProxmoxVE.Network.FirewallSecurityGroup(\"webserver\", new()\n {\n Comment = \"Managed by Terraform\",\n Rules = new[]\n {\n new ProxmoxVE.Network.Inputs.FirewallSecurityGroupRuleArgs\n {\n Action = \"ACCEPT\",\n Comment = \"Allow HTTP\",\n Dest = \"192.168.1.5\",\n Dport = \"80\",\n Log = \"info\",\n Proto = \"tcp\",\n Type = \"in\",\n },\n new ProxmoxVE.Network.Inputs.FirewallSecurityGroupRuleArgs\n {\n Action = \"ACCEPT\",\n Comment = \"Allow HTTPS\",\n Dest = \"192.168.1.5\",\n Dport = \"443\",\n Log = \"info\",\n Proto = \"tcp\",\n Type = \"in\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.NewFirewallSecurityGroup(ctx, \"webserver\", \u0026Network.FirewallSecurityGroupArgs{\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t\tRules: network.FirewallSecurityGroupRuleArray{\n\t\t\t\t\u0026network.FirewallSecurityGroupRuleArgs{\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\tLog: pulumi.String(\"info\"),\n\t\t\t\t\tProto: pulumi.String(\"tcp\"),\n\t\t\t\t\tType: pulumi.String(\"in\"),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallSecurityGroupRuleArgs{\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\tLog: pulumi.String(\"info\"),\n\t\t\t\t\tProto: pulumi.String(\"tcp\"),\n\t\t\t\t\tType: pulumi.String(\"in\"),\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.Network.FirewallSecurityGroup;\nimport com.pulumi.proxmoxve.Network.FirewallSecurityGroupArgs;\nimport com.pulumi.proxmoxve.Network.inputs.FirewallSecurityGroupRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var webserver = new FirewallSecurityGroup(\"webserver\", FirewallSecurityGroupArgs.builder()\n .comment(\"Managed by Terraform\")\n .rules( \n FirewallSecurityGroupRuleArgs.builder()\n .action(\"ACCEPT\")\n .comment(\"Allow HTTP\")\n .dest(\"192.168.1.5\")\n .dport(\"80\")\n .log(\"info\")\n .proto(\"tcp\")\n .type(\"in\")\n .build(),\n FirewallSecurityGroupRuleArgs.builder()\n .action(\"ACCEPT\")\n .comment(\"Allow HTTPS\")\n .dest(\"192.168.1.5\")\n .dport(\"443\")\n .log(\"info\")\n .proto(\"tcp\")\n .type(\"in\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n webserver:\n type: proxmoxve:Network:FirewallSecurityGroup\n properties:\n comment: Managed by Terraform\n rules:\n - action: ACCEPT\n comment: Allow HTTP\n dest: 192.168.1.5\n dport: '80'\n log: info\n proto: tcp\n type: in\n - action: ACCEPT\n comment: Allow HTTPS\n dest: 192.168.1.5\n dport: '443'\n log: info\n proto: tcp\n type: in\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `name`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Network/firewallSecurityGroup:FirewallSecurityGroup webserver webserver\n```\n\n","properties":{"comment":{"type":"string","description":"Security group comment.\n"},"containerId":{"type":"integer","description":"The ID of the container to manage the firewall for.\n"},"name":{"type":"string","description":"Security group name.\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"rules":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallSecurityGroupRule:FirewallSecurityGroupRule"},"description":"Firewall rule block (multiple blocks supported).\n"},"vmId":{"type":"integer","description":"The ID of the VM to manage the firewall for.\n"}},"required":["name","rules"],"inputProperties":{"comment":{"type":"string","description":"Security group comment.\n"},"containerId":{"type":"integer","description":"The ID of the container to manage the firewall for.\n"},"name":{"type":"string","description":"Security group name.\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"rules":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallSecurityGroupRule:FirewallSecurityGroupRule"},"description":"Firewall rule block (multiple blocks supported).\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"The ID of the VM to manage the firewall for.\n"}},"requiredInputs":["rules"],"stateInputs":{"description":"Input properties used for looking up and filtering FirewallSecurityGroup resources.\n","properties":{"comment":{"type":"string","description":"Security group comment.\n"},"containerId":{"type":"integer","description":"The ID of the container to manage the firewall for.\n"},"name":{"type":"string","description":"Security group name.\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"rules":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallSecurityGroupRule:FirewallSecurityGroupRule"},"description":"Firewall rule block (multiple blocks supported).\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"The ID of the VM to manage the firewall for.\n"}},"type":"object"}},"proxmoxve:Network/networkBridge:NetworkBridge":{"description":"Manages a Linux Bridge network interface in a Proxmox VE node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst vlan99 = new proxmoxve.network.NetworkVlan(\"vlan99\", {nodeName: \"pve\"});\n//# or alternatively, use custom name:\n// name = \"vlan_lab\"\n// interface = \"eno0\"\n// vlan = 98\nconst vmbr99 = new proxmoxve.network.NetworkBridge(\"vmbr99\", {\n nodeName: \"pve\",\n address: \"99.99.99.99/16\",\n comment: \"vmbr99 comment\",\n ports: [\"ens18.99\"],\n}, {\n dependsOn: [vlan99],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nvlan99 = proxmoxve.network.NetworkVlan(\"vlan99\", node_name=\"pve\")\n## or alternatively, use custom name:\n# name = \"vlan_lab\"\n# interface = \"eno0\"\n# vlan = 98\nvmbr99 = proxmoxve.network.NetworkBridge(\"vmbr99\",\n node_name=\"pve\",\n address=\"99.99.99.99/16\",\n comment=\"vmbr99 comment\",\n ports=[\"ens18.99\"],\n opts = pulumi.ResourceOptions(depends_on=[vlan99]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var vlan99 = new ProxmoxVE.Network.NetworkVlan(\"vlan99\", new()\n {\n NodeName = \"pve\",\n });\n\n //# or alternatively, use custom name:\n // name = \"vlan_lab\"\n // interface = \"eno0\"\n // vlan = 98\n var vmbr99 = new ProxmoxVE.Network.NetworkBridge(\"vmbr99\", new()\n {\n NodeName = \"pve\",\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/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvlan99, err := Network.NewNetworkVlan(ctx, \"vlan99\", \u0026Network.NetworkVlanArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Network.NewNetworkBridge(ctx, \"vmbr99\", \u0026Network.NetworkBridgeArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\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 com.pulumi.proxmoxve.Network.NetworkVlan;\nimport com.pulumi.proxmoxve.Network.NetworkVlanArgs;\nimport com.pulumi.proxmoxve.Network.NetworkBridge;\nimport com.pulumi.proxmoxve.Network.NetworkBridgeArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var vlan99 = new NetworkVlan(\"vlan99\", NetworkVlanArgs.builder()\n .nodeName(\"pve\")\n .build());\n\n //# or alternatively, use custom name:\n // name = \"vlan_lab\"\n // interface = \"eno0\"\n // vlan = 98\n var vmbr99 = new NetworkBridge(\"vmbr99\", NetworkBridgeArgs.builder()\n .nodeName(\"pve\")\n .address(\"99.99.99.99/16\")\n .comment(\"vmbr99 comment\")\n .ports(\"ens18.99\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(vlan99)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n vmbr99:\n type: proxmoxve:Network:NetworkBridge\n properties:\n nodeName: pve\n address: 99.99.99.99/16\n comment: vmbr99 comment\n ports:\n - ens18.99\n options:\n dependson:\n - ${vlan99}\n vlan99:\n type: proxmoxve:Network:NetworkVlan\n properties:\n nodeName: pve\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\n#Interfaces can be imported using the `node_name:iface` format, e.g.\n\n```sh\n$ pulumi import proxmoxve:Network/networkBridge:NetworkBridge vmbr99 pve:vmbr99\n```\n\n","properties":{"address":{"type":"string","description":"The interface IPv4/CIDR address.\n"},"address6":{"type":"string","description":"The interface IPv6/CIDR address.\n"},"autostart":{"type":"boolean","description":"Automatically start interface on boot (defaults to `true`).\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 `vmbrN`, where N is a number between 0 and 9999.\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"ports":{"type":"array","items":{"type":"string"},"description":"The interface bridge ports.\n"},"vlanAware":{"type":"boolean","description":"Whether the interface bridge is VLAN aware (defaults to `false`).\n"}},"required":["autostart","name","nodeName","vlanAware"],"inputProperties":{"address":{"type":"string","description":"The interface IPv4/CIDR address.\n"},"address6":{"type":"string","description":"The interface IPv6/CIDR address.\n"},"autostart":{"type":"boolean","description":"Automatically start interface on boot (defaults to `true`).\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 `vmbrN`, where N is a number between 0 and 9999.\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"ports":{"type":"array","items":{"type":"string"},"description":"The interface bridge ports.\n"},"vlanAware":{"type":"boolean","description":"Whether the interface bridge is VLAN aware (defaults to `false`).\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering NetworkBridge resources.\n","properties":{"address":{"type":"string","description":"The interface IPv4/CIDR address.\n"},"address6":{"type":"string","description":"The interface IPv6/CIDR address.\n"},"autostart":{"type":"boolean","description":"Automatically start interface on boot (defaults to `true`).\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 `vmbrN`, where N is a number between 0 and 9999.\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"ports":{"type":"array","items":{"type":"string"},"description":"The interface bridge ports.\n"},"vlanAware":{"type":"boolean","description":"Whether the interface bridge is VLAN aware (defaults to `false`).\n"}},"type":"object"}},"proxmoxve:Network/networkVlan:NetworkVlan":{"description":"Manages a Linux VLAN network interface in a Proxmox VE node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\n// using VLAN tag\nconst vlan99 = new proxmoxve.network.NetworkVlan(\"vlan99\", {\n comment: \"VLAN 99\",\n nodeName: \"pve\",\n});\n// using custom network interface name\nconst vlan98 = new proxmoxve.network.NetworkVlan(\"vlan98\", {\n comment: \"VLAN 98\",\n \"interface\": \"eno0\",\n nodeName: \"pve\",\n vlan: 98,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# using VLAN tag\nvlan99 = proxmoxve.network.NetworkVlan(\"vlan99\",\n comment=\"VLAN 99\",\n node_name=\"pve\")\n# using custom network interface name\nvlan98 = proxmoxve.network.NetworkVlan(\"vlan98\",\n comment=\"VLAN 98\",\n interface=\"eno0\",\n node_name=\"pve\",\n vlan=98)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // using VLAN tag\n var vlan99 = new ProxmoxVE.Network.NetworkVlan(\"vlan99\", new()\n {\n Comment = \"VLAN 99\",\n NodeName = \"pve\",\n });\n\n // using custom network interface name\n var vlan98 = new ProxmoxVE.Network.NetworkVlan(\"vlan98\", new()\n {\n Comment = \"VLAN 98\",\n Interface = \"eno0\",\n NodeName = \"pve\",\n Vlan = 98,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// using VLAN tag\n\t\t_, err := Network.NewNetworkVlan(ctx, \"vlan99\", \u0026Network.NetworkVlanArgs{\n\t\t\tComment: pulumi.String(\"VLAN 99\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// using custom network interface name\n\t\t_, err = Network.NewNetworkVlan(ctx, \"vlan98\", \u0026Network.NetworkVlanArgs{\n\t\t\tComment: pulumi.String(\"VLAN 98\"),\n\t\t\tInterface: pulumi.String(\"eno0\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tVlan: pulumi.Int(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 com.pulumi.proxmoxve.Network.NetworkVlan;\nimport com.pulumi.proxmoxve.Network.NetworkVlanArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // using VLAN tag\n var vlan99 = new NetworkVlan(\"vlan99\", NetworkVlanArgs.builder()\n .comment(\"VLAN 99\")\n .nodeName(\"pve\")\n .build());\n\n // using custom network interface name\n var vlan98 = new NetworkVlan(\"vlan98\", NetworkVlanArgs.builder()\n .comment(\"VLAN 98\")\n .interface_(\"eno0\")\n .nodeName(\"pve\")\n .vlan(98)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # using VLAN tag\n vlan99:\n type: proxmoxve:Network:NetworkVlan\n properties:\n comment: VLAN 99\n nodeName: pve\n # using custom network interface name\n vlan98:\n type: proxmoxve:Network:NetworkVlan\n properties:\n comment: VLAN 98\n interface: eno0\n nodeName: pve\n vlan: 98\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\n#Interfaces can be imported using the `node_name:iface` format, e.g.\n\n```sh\n$ pulumi import proxmoxve:Network/networkVlan:NetworkVlan vlan99 pve:vlan99\n```\n\n","properties":{"address":{"type":"string","description":"The interface IPv4/CIDR address.\n"},"address6":{"type":"string","description":"The interface IPv6/CIDR address.\n"},"autostart":{"type":"boolean","description":"Automatically start interface on boot (defaults to `true`).\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 `name`.\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 `interface` and `vlan`), or use custom name, e.g. `vlan_lab` (`interface` and `vlan` are then required).\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"vlan":{"type":"integer","description":"The VLAN tag. See also `name`.\n"}},"required":["autostart","interface","name","nodeName","vlan"],"inputProperties":{"address":{"type":"string","description":"The interface IPv4/CIDR address.\n"},"address6":{"type":"string","description":"The interface IPv6/CIDR address.\n"},"autostart":{"type":"boolean","description":"Automatically start interface on boot (defaults to `true`).\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 `name`.\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 `interface` and `vlan`), or use custom name, e.g. `vlan_lab` (`interface` and `vlan` are then required).\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"vlan":{"type":"integer","description":"The VLAN tag. See also `name`.\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering NetworkVlan resources.\n","properties":{"address":{"type":"string","description":"The interface IPv4/CIDR address.\n"},"address6":{"type":"string","description":"The interface IPv6/CIDR address.\n"},"autostart":{"type":"boolean","description":"Automatically start interface on boot (defaults to `true`).\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 `name`.\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 `interface` and `vlan`), or use custom name, e.g. `vlan_lab` (`interface` and `vlan` are then required).\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"vlan":{"type":"integer","description":"The VLAN tag. See also `name`.\n"}},"type":"object"}},"proxmoxve:Permission/group:Group":{"description":"Manages a user group.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsTeam = new proxmoxve.permission.Group(\"operationsTeam\", {\n comment: \"Managed by Terraform\",\n groupId: \"operations-team\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_team = proxmoxve.permission.Group(\"operationsTeam\",\n comment=\"Managed by Terraform\",\n group_id=\"operations-team\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsTeam = new ProxmoxVE.Permission.Group(\"operationsTeam\", new()\n {\n Comment = \"Managed by Terraform\",\n GroupId = \"operations-team\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.NewGroup(ctx, \"operationsTeam\", \u0026Permission.GroupArgs{\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\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 com.pulumi.proxmoxve.Permission.Group;\nimport com.pulumi.proxmoxve.Permission.GroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var operationsTeam = new Group(\"operationsTeam\", GroupArgs.builder()\n .comment(\"Managed by Terraform\")\n .groupId(\"operations-team\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n operationsTeam:\n type: proxmoxve:Permission:Group\n properties:\n comment: Managed by Terraform\n groupId: operations-team\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `group_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Permission/group:Group operations_team operations-team\n```\n\n","properties":{"acls":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/GroupAcl:GroupAcl"},"description":"The access control list (multiple blocks supported).\n"},"comment":{"type":"string","description":"The group comment.\n"},"groupId":{"type":"string","description":"The group identifier.\n"},"members":{"type":"array","items":{"type":"string"},"description":"The group members as a list of `username@realm` entries\n"}},"required":["groupId","members"],"inputProperties":{"acls":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/GroupAcl:GroupAcl"},"description":"The access control list (multiple blocks supported).\n"},"comment":{"type":"string","description":"The group comment.\n"},"groupId":{"type":"string","description":"The group identifier.\n","willReplaceOnChanges":true}},"requiredInputs":["groupId"],"stateInputs":{"description":"Input properties used for looking up and filtering Group resources.\n","properties":{"acls":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/GroupAcl:GroupAcl"},"description":"The access control list (multiple blocks supported).\n"},"comment":{"type":"string","description":"The group comment.\n"},"groupId":{"type":"string","description":"The group identifier.\n","willReplaceOnChanges":true},"members":{"type":"array","items":{"type":"string"},"description":"The group members as a list of `username@realm` entries\n"}},"type":"object"}},"proxmoxve:Permission/pool:Pool":{"description":"Manages a resource pool.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsPool = new proxmoxve.permission.Pool(\"operationsPool\", {\n comment: \"Managed by Terraform\",\n poolId: \"operations-pool\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_pool = proxmoxve.permission.Pool(\"operationsPool\",\n comment=\"Managed by Terraform\",\n pool_id=\"operations-pool\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsPool = new ProxmoxVE.Permission.Pool(\"operationsPool\", new()\n {\n Comment = \"Managed by Terraform\",\n PoolId = \"operations-pool\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.NewPool(ctx, \"operationsPool\", \u0026Permission.PoolArgs{\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\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 com.pulumi.proxmoxve.Permission.Pool;\nimport com.pulumi.proxmoxve.Permission.PoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var operationsPool = new Pool(\"operationsPool\", PoolArgs.builder()\n .comment(\"Managed by Terraform\")\n .poolId(\"operations-pool\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n operationsPool:\n type: proxmoxve:Permission:Pool\n properties:\n comment: Managed by Terraform\n poolId: operations-pool\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `pool_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Permission/pool:Pool operations_pool operations-pool\n```\n\n","properties":{"comment":{"type":"string","description":"The pool comment.\n"},"members":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/PoolMember:PoolMember"},"description":"The pool members.\n"},"poolId":{"type":"string","description":"The pool identifier.\n"}},"required":["members","poolId"],"inputProperties":{"comment":{"type":"string","description":"The pool comment.\n"},"poolId":{"type":"string","description":"The pool identifier.\n","willReplaceOnChanges":true}},"requiredInputs":["poolId"],"stateInputs":{"description":"Input properties used for looking up and filtering Pool resources.\n","properties":{"comment":{"type":"string","description":"The pool comment.\n"},"members":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/PoolMember:PoolMember"},"description":"The pool members.\n"},"poolId":{"type":"string","description":"The pool identifier.\n","willReplaceOnChanges":true}},"type":"object"}},"proxmoxve:Permission/role:Role":{"description":"Manages a role.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsMonitoring = new proxmoxve.permission.Role(\"operationsMonitoring\", {\n privileges: [\"VM.Monitor\"],\n roleId: \"operations-monitoring\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_monitoring = proxmoxve.permission.Role(\"operationsMonitoring\",\n privileges=[\"VM.Monitor\"],\n role_id=\"operations-monitoring\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsMonitoring = new ProxmoxVE.Permission.Role(\"operationsMonitoring\", new()\n {\n Privileges = new[]\n {\n \"VM.Monitor\",\n },\n RoleId = \"operations-monitoring\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.NewRole(ctx, \"operationsMonitoring\", \u0026Permission.RoleArgs{\n\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"VM.Monitor\"),\n\t\t\t},\n\t\t\tRoleId: pulumi.String(\"operations-monitoring\"),\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.Permission.Role;\nimport com.pulumi.proxmoxve.Permission.RoleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var operationsMonitoring = new Role(\"operationsMonitoring\", RoleArgs.builder()\n .privileges(\"VM.Monitor\")\n .roleId(\"operations-monitoring\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n operationsMonitoring:\n type: proxmoxve:Permission:Role\n properties:\n privileges:\n - VM.Monitor\n roleId: operations-monitoring\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `role_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Permission/role:Role operations_monitoring operations-monitoring\n```\n\n","properties":{"privileges":{"type":"array","items":{"type":"string"},"description":"The role privileges.\n"},"roleId":{"type":"string","description":"The role identifier.\n"}},"required":["privileges","roleId"],"inputProperties":{"privileges":{"type":"array","items":{"type":"string"},"description":"The role privileges.\n"},"roleId":{"type":"string","description":"The role identifier.\n","willReplaceOnChanges":true}},"requiredInputs":["privileges","roleId"],"stateInputs":{"description":"Input properties used for looking up and filtering Role resources.\n","properties":{"privileges":{"type":"array","items":{"type":"string"},"description":"The role privileges.\n"},"roleId":{"type":"string","description":"The role identifier.\n","willReplaceOnChanges":true}},"type":"object"}},"proxmoxve:Permission/user:User":{"description":"Manages a user.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsMonitoring = new proxmoxve.permission.Role(\"operationsMonitoring\", {\n roleId: \"operations-monitoring\",\n privileges: [\"VM.Monitor\"],\n});\nconst operationsAutomation = new proxmoxve.permission.User(\"operationsAutomation\", {\n acls: [{\n path: \"/vms/1234\",\n propagate: true,\n roleId: operationsMonitoring.roleId,\n }],\n comment: \"Managed by Terraform\",\n password: \"a-strong-password\",\n userId: \"operations-automation@pve\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_monitoring = proxmoxve.permission.Role(\"operationsMonitoring\",\n role_id=\"operations-monitoring\",\n privileges=[\"VM.Monitor\"])\noperations_automation = proxmoxve.permission.User(\"operationsAutomation\",\n acls=[{\n \"path\": \"/vms/1234\",\n \"propagate\": True,\n \"role_id\": operations_monitoring.role_id,\n }],\n comment=\"Managed by Terraform\",\n password=\"a-strong-password\",\n user_id=\"operations-automation@pve\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsMonitoring = new ProxmoxVE.Permission.Role(\"operationsMonitoring\", new()\n {\n RoleId = \"operations-monitoring\",\n Privileges = new[]\n {\n \"VM.Monitor\",\n },\n });\n\n var operationsAutomation = new ProxmoxVE.Permission.User(\"operationsAutomation\", new()\n {\n Acls = new[]\n {\n new ProxmoxVE.Permission.Inputs.UserAclArgs\n {\n Path = \"/vms/1234\",\n Propagate = true,\n RoleId = operationsMonitoring.RoleId,\n },\n },\n Comment = \"Managed by Terraform\",\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/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\toperationsMonitoring, err := Permission.NewRole(ctx, \"operationsMonitoring\", \u0026Permission.RoleArgs{\n\t\t\tRoleId: pulumi.String(\"operations-monitoring\"),\n\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"VM.Monitor\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Permission.NewUser(ctx, \"operationsAutomation\", \u0026Permission.UserArgs{\n\t\t\tAcls: permission.UserAclArray{\n\t\t\t\t\u0026permission.UserAclArgs{\n\t\t\t\t\tPath: pulumi.String(\"/vms/1234\"),\n\t\t\t\t\tPropagate: pulumi.Bool(true),\n\t\t\t\t\tRoleId: operationsMonitoring.RoleId,\n\t\t\t\t},\n\t\t\t},\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\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 com.pulumi.proxmoxve.Permission.Role;\nimport com.pulumi.proxmoxve.Permission.RoleArgs;\nimport com.pulumi.proxmoxve.Permission.User;\nimport com.pulumi.proxmoxve.Permission.UserArgs;\nimport com.pulumi.proxmoxve.Permission.inputs.UserAclArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var operationsMonitoring = new Role(\"operationsMonitoring\", RoleArgs.builder()\n .roleId(\"operations-monitoring\")\n .privileges(\"VM.Monitor\")\n .build());\n\n var operationsAutomation = new User(\"operationsAutomation\", UserArgs.builder()\n .acls(UserAclArgs.builder()\n .path(\"/vms/1234\")\n .propagate(true)\n .roleId(operationsMonitoring.roleId())\n .build())\n .comment(\"Managed by Terraform\")\n .password(\"a-strong-password\")\n .userId(\"operations-automation@pve\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n operationsAutomation:\n type: proxmoxve:Permission:User\n properties:\n acls:\n - path: /vms/1234\n propagate: true\n roleId: ${operationsMonitoring.roleId}\n comment: Managed by Terraform\n password: a-strong-password\n userId: operations-automation@pve\n operationsMonitoring:\n type: proxmoxve:Permission:Role\n properties:\n roleId: operations-monitoring\n privileges:\n - VM.Monitor\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `user_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Permission/user:User operations_automation operations-automation@pve\n```\n\n","properties":{"acls":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/UserAcl:UserAcl"},"description":"The access control list (multiple blocks supported).\n"},"comment":{"type":"string","description":"The user comment.\n"},"email":{"type":"string","description":"The user's email address.\n"},"enabled":{"type":"boolean","description":"Whether the user account is enabled.\n"},"expirationDate":{"type":"string","description":"The user account's expiration date (RFC 3339).\n"},"firstName":{"type":"string","description":"The user's first name.\n"},"groups":{"type":"array","items":{"type":"string"},"description":"The user's groups.\n"},"keys":{"type":"string","description":"The user's keys.\n"},"lastName":{"type":"string","description":"The user's last name.\n"},"password":{"type":"string","description":"The user's password. Required for PVE or PAM realms.\n","secret":true},"userId":{"type":"string","description":"The user identifier.\n"}},"required":["userId"],"inputProperties":{"acls":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/UserAcl:UserAcl"},"description":"The access control list (multiple blocks supported).\n"},"comment":{"type":"string","description":"The user comment.\n"},"email":{"type":"string","description":"The user's email address.\n"},"enabled":{"type":"boolean","description":"Whether the user account is enabled.\n"},"expirationDate":{"type":"string","description":"The user account's expiration date (RFC 3339).\n"},"firstName":{"type":"string","description":"The user's first name.\n"},"groups":{"type":"array","items":{"type":"string"},"description":"The user's groups.\n"},"keys":{"type":"string","description":"The user's keys.\n"},"lastName":{"type":"string","description":"The user's last name.\n"},"password":{"type":"string","description":"The user's password. Required for PVE or PAM realms.\n","secret":true},"userId":{"type":"string","description":"The user identifier.\n","willReplaceOnChanges":true}},"requiredInputs":["userId"],"stateInputs":{"description":"Input properties used for looking up and filtering User resources.\n","properties":{"acls":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/UserAcl:UserAcl"},"description":"The access control list (multiple blocks supported).\n"},"comment":{"type":"string","description":"The user comment.\n"},"email":{"type":"string","description":"The user's email address.\n"},"enabled":{"type":"boolean","description":"Whether the user account is enabled.\n"},"expirationDate":{"type":"string","description":"The user account's expiration date (RFC 3339).\n"},"firstName":{"type":"string","description":"The user's first name.\n"},"groups":{"type":"array","items":{"type":"string"},"description":"The user's groups.\n"},"keys":{"type":"string","description":"The user's keys.\n"},"lastName":{"type":"string","description":"The user's last name.\n"},"password":{"type":"string","description":"The user's password. Required for PVE or PAM realms.\n","secret":true},"userId":{"type":"string","description":"The user identifier.\n","willReplaceOnChanges":true}},"type":"object"}},"proxmoxve:Storage/file:File":{"description":"Manages a file.\n\n## Example Usage\n\n### Backups (`dump`)\n\n\u003e The resource with this content type uses SSH access to the node. You might need to configure the `ssh` option in the `provider` section.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst backup = new proxmoxve.storage.File(\"backup\", {\n contentType: \"dump\",\n datastoreId: \"local\",\n nodeName: \"pve\",\n sourceFile: {\n path: \"vzdump-lxc-100-2023_11_08-23_10_05.tar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nbackup = proxmoxve.storage.File(\"backup\",\n content_type=\"dump\",\n datastore_id=\"local\",\n node_name=\"pve\",\n source_file={\n \"path\": \"vzdump-lxc-100-2023_11_08-23_10_05.tar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var backup = new ProxmoxVE.Storage.File(\"backup\", new()\n {\n ContentType = \"dump\",\n DatastoreId = \"local\",\n NodeName = \"pve\",\n SourceFile = new ProxmoxVE.Storage.Inputs.FileSourceFileArgs\n {\n Path = \"vzdump-lxc-100-2023_11_08-23_10_05.tar\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Storage.NewFile(ctx, \"backup\", \u0026Storage.FileArgs{\n\t\t\tContentType: pulumi.String(\"dump\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tSourceFile: \u0026storage.FileSourceFileArgs{\n\t\t\t\tPath: pulumi.String(\"vzdump-lxc-100-2023_11_08-23_10_05.tar\"),\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.Storage.File;\nimport com.pulumi.proxmoxve.Storage.FileArgs;\nimport com.pulumi.proxmoxve.Storage.inputs.FileSourceFileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var backup = new File(\"backup\", FileArgs.builder()\n .contentType(\"dump\")\n .datastoreId(\"local\")\n .nodeName(\"pve\")\n .sourceFile(FileSourceFileArgs.builder()\n .path(\"vzdump-lxc-100-2023_11_08-23_10_05.tar\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n backup:\n type: proxmoxve:Storage:File\n properties:\n contentType: dump\n datastoreId: local\n nodeName: pve\n sourceFile:\n path: vzdump-lxc-100-2023_11_08-23_10_05.tar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Images\n\n\u003e Consider using `proxmoxve.Download.File` resource instead. Using this resource for images is less efficient (requires to transfer uploaded image to node) though still supported.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst ubuntuContainerTemplate = new proxmoxve.storage.File(\"ubuntuContainerTemplate\", {\n contentType: \"iso\",\n datastoreId: \"local\",\n nodeName: \"pve\",\n sourceFile: {\n path: \"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nubuntu_container_template = proxmoxve.storage.File(\"ubuntuContainerTemplate\",\n content_type=\"iso\",\n datastore_id=\"local\",\n node_name=\"pve\",\n source_file={\n \"path\": \"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ubuntuContainerTemplate = new ProxmoxVE.Storage.File(\"ubuntuContainerTemplate\", new()\n {\n ContentType = \"iso\",\n DatastoreId = \"local\",\n NodeName = \"pve\",\n SourceFile = new ProxmoxVE.Storage.Inputs.FileSourceFileArgs\n {\n Path = \"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Storage.NewFile(ctx, \"ubuntuContainerTemplate\", \u0026Storage.FileArgs{\n\t\t\tContentType: pulumi.String(\"iso\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tSourceFile: \u0026storage.FileSourceFileArgs{\n\t\t\t\tPath: pulumi.String(\"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Storage.File;\nimport com.pulumi.proxmoxve.Storage.FileArgs;\nimport com.pulumi.proxmoxve.Storage.inputs.FileSourceFileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ubuntuContainerTemplate = new File(\"ubuntuContainerTemplate\", FileArgs.builder()\n .contentType(\"iso\")\n .datastoreId(\"local\")\n .nodeName(\"pve\")\n .sourceFile(FileSourceFileArgs.builder()\n .path(\"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ubuntuContainerTemplate:\n type: proxmoxve:Storage:File\n 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### Container Template (`vztmpl`)\n\n\u003e Consider using `proxmoxve.Download.File` resource instead. Using this resource for container images is less efficient (requires to transfer uploaded image to node) though still supported.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst ubuntuContainerTemplate = new proxmoxve.storage.File(\"ubuntuContainerTemplate\", {\n contentType: \"vztmpl\",\n datastoreId: \"local\",\n nodeName: \"first-node\",\n sourceFile: {\n path: \"https://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nubuntu_container_template = proxmoxve.storage.File(\"ubuntuContainerTemplate\",\n content_type=\"vztmpl\",\n datastore_id=\"local\",\n node_name=\"first-node\",\n source_file={\n \"path\": \"https://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ubuntuContainerTemplate = new ProxmoxVE.Storage.File(\"ubuntuContainerTemplate\", new()\n {\n ContentType = \"vztmpl\",\n DatastoreId = \"local\",\n NodeName = \"first-node\",\n SourceFile = new ProxmoxVE.Storage.Inputs.FileSourceFileArgs\n {\n Path = \"https://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/v6/go/proxmoxve/Storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Storage.NewFile(ctx, \"ubuntuContainerTemplate\", \u0026Storage.FileArgs{\n\t\t\tContentType: pulumi.String(\"vztmpl\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName: pulumi.String(\"first-node\"),\n\t\t\tSourceFile: \u0026storage.FileSourceFileArgs{\n\t\t\t\tPath: pulumi.String(\"https://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 com.pulumi.proxmoxve.Storage.File;\nimport com.pulumi.proxmoxve.Storage.FileArgs;\nimport com.pulumi.proxmoxve.Storage.inputs.FileSourceFileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ubuntuContainerTemplate = new File(\"ubuntuContainerTemplate\", FileArgs.builder()\n .contentType(\"vztmpl\")\n .datastoreId(\"local\")\n .nodeName(\"first-node\")\n .sourceFile(FileSourceFileArgs.builder()\n .path(\"https://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ubuntuContainerTemplate:\n type: proxmoxve:Storage:File\n properties:\n contentType: vztmpl\n datastoreId: local\n nodeName: first-node\n sourceFile:\n path: https://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 `overwrite` to `false`.\n\n## Import\n\nInstances can be imported using the `node_name`, `datastore_id`, `content_type`\n\nand the `file_name` in the following format:\n\ntext\n\nnode_name:datastore_id/content_type/file_name\n\nExample:\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Storage/file:File cloud_config pve/local:snippets/example.cloud-config.yaml\n```\n\n","properties":{"contentType":{"type":"string","description":"The content type. If not specified, the content\ntype will be inferred from the file extension. Valid values are:\n"},"datastoreId":{"type":"string","description":"The datastore id.\n"},"fileMode":{"type":"string","description":"The file mode in octal format, e.g. `0700` or `600`. Note that the prefixes `0o` and `0x` 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`true`).\n"},"sourceFile":{"$ref":"#/types/proxmoxve:Storage/FileSourceFile:FileSourceFile","description":"The source file (conflicts with `source_raw`),\ncould be a local file or a URL. If the source file is a URL, the file will\nbe downloaded and stored locally before uploading it to Proxmox VE.\n"},"sourceRaw":{"$ref":"#/types/proxmoxve:Storage/FileSourceRaw:FileSourceRaw","description":"The raw source (conflicts with `source_file`).\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. `0700` or `600`. Note that the prefixes `0o` and `0x` 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`true`).\n"},"sourceFile":{"$ref":"#/types/proxmoxve:Storage/FileSourceFile:FileSourceFile","description":"The source file (conflicts with `source_raw`),\ncould be a local file or a URL. If the source file is a URL, the file will\nbe downloaded and stored locally before uploading it to Proxmox VE.\n","willReplaceOnChanges":true},"sourceRaw":{"$ref":"#/types/proxmoxve:Storage/FileSourceRaw:FileSourceRaw","description":"The raw source (conflicts with `source_file`).\n","willReplaceOnChanges":true},"timeoutUpload":{"type":"integer","description":"Timeout for uploading ISO/VSTMPL files in\nseconds (defaults to 1800).\n"}},"requiredInputs":["datastoreId","nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering File resources.\n","properties":{"contentType":{"type":"string","description":"The content type. If not specified, the content\ntype will be inferred from the file extension. Valid values are:\n","willReplaceOnChanges":true},"datastoreId":{"type":"string","description":"The datastore id.\n","willReplaceOnChanges":true},"fileMode":{"type":"string","description":"The file mode in octal format, e.g. `0700` or `600`. Note that the prefixes `0o` and `0x` 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`true`).\n"},"sourceFile":{"$ref":"#/types/proxmoxve:Storage/FileSourceFile:FileSourceFile","description":"The source file (conflicts with `source_raw`),\ncould be a local file or a URL. If the source file is a URL, the file will\nbe downloaded and stored locally before uploading it to Proxmox VE.\n","willReplaceOnChanges":true},"sourceRaw":{"$ref":"#/types/proxmoxve:Storage/FileSourceRaw:FileSourceRaw","description":"The raw source (conflicts with `source_file`).\n","willReplaceOnChanges":true},"timeoutUpload":{"type":"integer","description":"Timeout for uploading ISO/VSTMPL files in\nseconds (defaults to 1800).\n"}},"type":"object"}},"proxmoxve:User/token:Token":{"description":"User API tokens.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\n// if creating a user token, the user must be created first\nconst user = new proxmoxve.permission.User(\"user\", {\n comment: \"Managed by Terraform\",\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(\"userToken\", {\n comment: \"Managed by Terraform\",\n expirationDate: \"2033-01-01T22:00:00Z\",\n tokenName: \"tk1\",\n userId: user.userId,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# if creating a user token, the user must be created first\nuser = proxmoxve.permission.User(\"user\",\n comment=\"Managed by Terraform\",\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(\"userToken\",\n comment=\"Managed by Terraform\",\n expiration_date=\"2033-01-01T22:00:00Z\",\n token_name=\"tk1\",\n user_id=user.user_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // if creating a user token, the user must be created first\n var user = new ProxmoxVE.Permission.User(\"user\", new()\n {\n Comment = \"Managed by Terraform\",\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(\"userToken\", new()\n {\n Comment = \"Managed by Terraform\",\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/v6/go/proxmoxve/Permission\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/User\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// if creating a user token, the user must be created first\n\t\tuser, err := Permission.NewUser(ctx, \"user\", \u0026Permission.UserArgs{\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\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, \"userToken\", \u0026User.TokenArgs{\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\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 com.pulumi.proxmoxve.Permission.User;\nimport com.pulumi.proxmoxve.Permission.UserArgs;\nimport com.pulumi.proxmoxve.User.Token;\nimport com.pulumi.proxmoxve.User.TokenArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // if creating a user token, the user must be created first\n var user = new User(\"user\", UserArgs.builder()\n .comment(\"Managed by Terraform\")\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 Terraform\")\n .expirationDate(\"2033-01-01T22:00:00Z\")\n .tokenName(\"tk1\")\n .userId(user.userId())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # if creating a user token, the user must be created first\n user:\n type: proxmoxve:Permission:User\n properties:\n comment: Managed by Terraform\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 properties:\n comment: Managed by Terraform\n expirationDate: 2033-01-01T22:00:00Z\n tokenName: tk1\n userId: ${user.userId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\n#Tokens can be imported using they identifiers in format `user_id!token_name` format, e.g.:\n\n```sh\n$ pulumi import proxmoxve:User/token:Token token1 user@pve!token1\n```\n\n","properties":{"comment":{"type":"string","description":"Comment for the token.\n"},"expirationDate":{"type":"string","description":"Expiration date for the token.\n"},"privilegesSeparation":{"type":"boolean","description":"Restrict API token privileges with separate ACLs (default), or give full privileges of corresponding user.\n"},"tokenName":{"type":"string","description":"User-specific token identifier.\n"},"userId":{"type":"string","description":"User identifier.\n"},"value":{"type":"string","description":"API token value used for authentication. It is populated only when creating a new token, and can't be retrieved at import.\n","secret":true}},"required":["privilegesSeparation","tokenName","userId","value"],"inputProperties":{"comment":{"type":"string","description":"Comment for the token.\n"},"expirationDate":{"type":"string","description":"Expiration date for the token.\n"},"privilegesSeparation":{"type":"boolean","description":"Restrict API token privileges with separate ACLs (default), or give full privileges of corresponding user.\n"},"tokenName":{"type":"string","description":"User-specific token identifier.\n"},"userId":{"type":"string","description":"User identifier.\n"}},"requiredInputs":["tokenName","userId"],"stateInputs":{"description":"Input properties used for looking up and filtering Token resources.\n","properties":{"comment":{"type":"string","description":"Comment for the token.\n"},"expirationDate":{"type":"string","description":"Expiration date for the token.\n"},"privilegesSeparation":{"type":"boolean","description":"Restrict API token privileges with separate ACLs (default), or give full privileges of corresponding user.\n"},"tokenName":{"type":"string","description":"User-specific token identifier.\n"},"userId":{"type":"string","description":"User identifier.\n"},"value":{"type":"string","description":"API token value used for authentication. It is populated only when creating a new token, and can't be retrieved at import.\n","secret":true}},"type":"object"}},"proxmoxve:VM/virtualMachine2:VirtualMachine2":{"description":"!\u003e **DO NOT USE**\nThis is an experimental implementation of a Proxmox VM resource using Plugin Framework.\u003cbr\u003e\u003cbr\u003eIt is a Proof of Concept, highly experimental and **will** change in future. It does not support all features of the Proxmox API for VMs and **MUST NOT** be used in production.\n\n\u003e Many attributes are marked as **optional** _and_ **computed** in the schema,\nhence you may seem added to the plan with \"(known after apply)\" status, even if they are not set in the configuration.\nThis is done to support the `clone` operation, when a VM is created from an existing VM or template,\nand the source attributes are copied to the clone.\u003cbr\u003e\u003cbr\u003e\nComputed attributes allow the provider to set those attributes without user input.\nThe attributes are also marked as optional to allow the practitioner to set (or overwrite) them if needed.\n","properties":{"cdrom":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Cdrom:VirtualMachine2Cdrom"},"description":"The CD-ROM configuration. The key is the interface of the CD-ROM, could be one of `ideN`, `sataN`, `scsiN`, where N is the index of the interface. Note that `q35` machine type only supports `ide0` and `ide2` of IDE interfaces.\n"},"clone":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Clone:VirtualMachine2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Cpu:VirtualMachine2Cpu","description":"The CPU configuration.\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"},"stopOnDestroy":{"type":"boolean","description":"Set to true to stop (rather than shutdown) the VM on destroy (defaults to `false`).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags assigned to the VM.\n"},"template":{"type":"boolean","description":"Set to true to create a VM template.\n"},"timeouts":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Timeouts:VirtualMachine2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Vga:VirtualMachine2Vga","description":"Configure the VGA Hardware. If you want to use high resolution modes (\u003e= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is `std` for all OS types besides some Windows versions (XP and older) which use `cirrus`. The `qxl` option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays themself. You can also run without any graphic card, using a serial device as terminal. See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) section 10.2.8 for more information and available configuration parameters.\n"}},"required":["cdrom","cpu","name","nodeName","stopOnDestroy","tags","vga"],"inputProperties":{"cdrom":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Cdrom:VirtualMachine2Cdrom"},"description":"The CD-ROM configuration. The key is the interface of the CD-ROM, could be one of `ideN`, `sataN`, `scsiN`, where N is the index of the interface. Note that `q35` machine type only supports `ide0` and `ide2` of IDE interfaces.\n"},"clone":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Clone:VirtualMachine2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Cpu:VirtualMachine2Cpu","description":"The CPU configuration.\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"},"stopOnDestroy":{"type":"boolean","description":"Set to true to stop (rather than shutdown) the VM on destroy (defaults to `false`).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags assigned to the VM.\n"},"template":{"type":"boolean","description":"Set to true to create a VM template.\n"},"timeouts":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Timeouts:VirtualMachine2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Vga:VirtualMachine2Vga","description":"Configure the VGA Hardware. If you want to use high resolution modes (\u003e= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is `std` for all OS types besides some Windows versions (XP and older) which use `cirrus`. The `qxl` option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays themself. You can also run without any graphic card, using a serial device as terminal. See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) section 10.2.8 for more information and available configuration parameters.\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering VirtualMachine2 resources.\n","properties":{"cdrom":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Cdrom:VirtualMachine2Cdrom"},"description":"The CD-ROM configuration. The key is the interface of the CD-ROM, could be one of `ideN`, `sataN`, `scsiN`, where N is the index of the interface. Note that `q35` machine type only supports `ide0` and `ide2` of IDE interfaces.\n"},"clone":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Clone:VirtualMachine2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Cpu:VirtualMachine2Cpu","description":"The CPU configuration.\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"},"stopOnDestroy":{"type":"boolean","description":"Set to true to stop (rather than shutdown) the VM on destroy (defaults to `false`).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags assigned to the VM.\n"},"template":{"type":"boolean","description":"Set to true to create a VM template.\n"},"timeouts":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Timeouts:VirtualMachine2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Vga:VirtualMachine2Vga","description":"Configure the VGA Hardware. If you want to use high resolution modes (\u003e= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is `std` for all OS types besides some Windows versions (XP and older) which use `cirrus`. The `qxl` 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":"proxmoxve:index/vm2:Vm2"}]},"proxmoxve:VM/virtualMachine:VirtualMachine":{"description":"Manages a virtual machine.\n\n\u003e This resource uses SSH access to the node. You might need to configure the `ssh` option in the `provider` section.\n\n## Import\n\nInstances can be imported using the `node_name` and the `vm_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:VM/virtualMachine:VirtualMachine ubuntu_vm first-node/4321\n```\n\n","properties":{"acpi":{"type":"boolean","description":"Whether to enable ACPI (defaults to `true`).\n"},"agent":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAgent:VirtualMachineAgent","description":"The QEMU agent configuration.\n"},"audioDevice":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAudioDevice:VirtualMachineAudioDevice","description":"An audio device.\n"},"bios":{"type":"string","description":"The BIOS implementation (defaults to `seabios`).\n"},"bootOrders":{"type":"array","items":{"type":"string"},"description":"Specify a list of devices to boot from in the order\nthey appear in the list (defaults to `[]`).\n"},"cdrom":{"$ref":"#/types/proxmoxve:VM/VirtualMachineCdrom:VirtualMachineCdrom","description":"The CDROM configuration.\n"},"clone":{"$ref":"#/types/proxmoxve:VM/VirtualMachineClone:VirtualMachineClone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/VirtualMachineCpu:VirtualMachineCpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description.\n"},"disks":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineDisk:VirtualMachineDisk"},"description":"A disk (multiple blocks supported).\n"},"efiDisk":{"$ref":"#/types/proxmoxve:VM/VirtualMachineEfiDisk:VirtualMachineEfiDisk","description":"The efi disk device (required if `bios` is set\nto `ovmf`)\n"},"hookScriptFileId":{"type":"string","description":"The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).\n"},"hostpcis":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineHostpci:VirtualMachineHostpci"},"description":"A host PCI device mapping (multiple blocks supported).\n"},"initialization":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitialization:VirtualMachineInitialization","description":"The cloud-init configuration.\n"},"ipv4Addresses":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"The IPv4 addresses per network interface published by the\nQEMU agent (empty list when `agent.enabled` is `false`)\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 `false`)\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 `pc`).\n"},"memory":{"$ref":"#/types/proxmoxve:VM/VirtualMachineMemory:VirtualMachineMemory","description":"The memory configuration.\n"},"migrate":{"type":"boolean","description":"Migrate the VM on node change instead of re-creating\nit (defaults to `false`).\n"},"name":{"type":"string","description":"The virtual machine name.\n"},"networkDevices":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineNetworkDevice:VirtualMachineNetworkDevice"},"description":"A network device (multiple blocks supported).\n"},"networkInterfaceNames":{"type":"array","items":{"type":"string"},"description":"The network interface names published by the QEMU\nagent (empty list when `agent.enabled` is `false`)\n"},"nodeName":{"type":"string","description":"The name of the node to assign the virtual machine\nto.\n"},"numas":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineNuma:VirtualMachineNuma"},"description":"The NUMA configuration.\n"},"onBoot":{"type":"boolean","description":"Specifies whether a VM will be started during system\nboot. (defaults to `true`)\n"},"operatingSystem":{"$ref":"#/types/proxmoxve:VM/VirtualMachineOperatingSystem:VirtualMachineOperatingSystem","description":"The Operating System configuration.\n"},"poolId":{"type":"string","description":"The identifier for a pool to assign the virtual machine to.\n"},"protection":{"type":"boolean","description":"Sets the protection flag of the VM. This will disable the remove VM and remove disk operations (defaults to `false`).\n"},"reboot":{"type":"boolean","description":"Reboot the VM after initial creation. (defaults to `false`)\n"},"scsiHardware":{"type":"string","description":"The SCSI hardware type (defaults to\n`virtio-scsi-pci`).\n"},"serialDevices":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineSerialDevice:VirtualMachineSerialDevice"},"description":"A serial device (multiple blocks supported).\n"},"smbios":{"$ref":"#/types/proxmoxve:VM/VirtualMachineSmbios:VirtualMachineSmbios","description":"The SMBIOS (type1) settings for the VM.\n"},"started":{"type":"boolean","description":"Whether to start the virtual machine (defaults\nto `true`).\n"},"startup":{"$ref":"#/types/proxmoxve:VM/VirtualMachineStartup:VirtualMachineStartup","description":"Defines startup and shutdown behavior of the VM.\n"},"stopOnDestroy":{"type":"boolean","description":"Whether to stop rather than shutdown on VM destroy (defaults to `false`)\n"},"tabletDevice":{"type":"boolean","description":"Whether to enable the USB tablet device (defaults\nto `true`).\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 `ignore_changes` lifecycle meta-argument to ignore\nchanges to this attribute.\n"},"template":{"type":"boolean","description":"Whether to create a template (defaults to `false`).\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":"MoveDisk timeout\n","deprecationMessage":"This field is deprecated and will be removed in a future release. An overall operation timeout (timeout_create / timeout_clone / timeout_migrate) is used instead."},"timeoutReboot":{"type":"integer","description":"Timeout for rebooting a VM in seconds (defaults\nto 1800).\n"},"timeoutShutdownVm":{"type":"integer","description":"Timeout for shutting down a VM in seconds (\ndefaults to 1800).\n"},"timeoutStartVm":{"type":"integer","description":"Timeout for starting a VM in seconds (defaults\nto 1800).\n"},"timeoutStopVm":{"type":"integer","description":"Timeout for stopping a VM in seconds (defaults\nto 300).\n"},"tpmState":{"$ref":"#/types/proxmoxve:VM/VirtualMachineTpmState:VirtualMachineTpmState","description":"The TPM state device.\n"},"usbs":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineUsb:VirtualMachineUsb"},"description":"A host USB device mapping (multiple blocks supported).\n"},"vga":{"$ref":"#/types/proxmoxve:VM/VirtualMachineVga:VirtualMachineVga","description":"The VGA configuration.\n"},"vmId":{"type":"integer","description":"The VM identifier.\n"},"watchdog":{"$ref":"#/types/proxmoxve:VM/VirtualMachineWatchdog:VirtualMachineWatchdog","description":"The watchdog configuration. Once enabled (by a guest action), the watchdog must be periodically polled by an agent inside the guest or else the watchdog will reset the guest (or execute the respective action specified).\n"}},"required":["ipv4Addresses","ipv6Addresses","macAddresses","name","networkInterfaceNames","nodeName","vmId"],"inputProperties":{"acpi":{"type":"boolean","description":"Whether to enable ACPI (defaults to `true`).\n"},"agent":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAgent:VirtualMachineAgent","description":"The QEMU agent configuration.\n"},"audioDevice":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAudioDevice:VirtualMachineAudioDevice","description":"An audio device.\n"},"bios":{"type":"string","description":"The BIOS implementation (defaults to `seabios`).\n"},"bootOrders":{"type":"array","items":{"type":"string"},"description":"Specify a list of devices to boot from in the order\nthey appear in the list (defaults to `[]`).\n"},"cdrom":{"$ref":"#/types/proxmoxve:VM/VirtualMachineCdrom:VirtualMachineCdrom","description":"The CDROM configuration.\n"},"clone":{"$ref":"#/types/proxmoxve:VM/VirtualMachineClone:VirtualMachineClone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/VirtualMachineCpu:VirtualMachineCpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description.\n"},"disks":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineDisk:VirtualMachineDisk"},"description":"A disk (multiple blocks supported).\n"},"efiDisk":{"$ref":"#/types/proxmoxve:VM/VirtualMachineEfiDisk:VirtualMachineEfiDisk","description":"The efi disk device (required if `bios` is set\nto `ovmf`)\n","willReplaceOnChanges":true},"hookScriptFileId":{"type":"string","description":"The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).\n"},"hostpcis":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineHostpci:VirtualMachineHostpci"},"description":"A host PCI device mapping (multiple blocks supported).\n"},"initialization":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitialization:VirtualMachineInitialization","description":"The cloud-init configuration.\n"},"keyboardLayout":{"type":"string","description":"The keyboard layout (defaults to `en-us`).\n"},"kvmArguments":{"type":"string","description":"Arbitrary arguments passed to kvm.\n"},"macAddresses":{"type":"array","items":{"type":"string"},"description":"The MAC addresses published by the QEMU agent with fallback\nto the network device configuration, if the agent is disabled\n"},"machine":{"type":"string","description":"The VM machine type (defaults to `pc`).\n"},"memory":{"$ref":"#/types/proxmoxve:VM/VirtualMachineMemory:VirtualMachineMemory","description":"The memory configuration.\n"},"migrate":{"type":"boolean","description":"Migrate the VM on node change instead of re-creating\nit (defaults to `false`).\n"},"name":{"type":"string","description":"The virtual machine name.\n"},"networkDevices":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineNetworkDevice:VirtualMachineNetworkDevice"},"description":"A network device (multiple blocks supported).\n"},"nodeName":{"type":"string","description":"The name of the node to assign the virtual machine\nto.\n"},"numas":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineNuma:VirtualMachineNuma"},"description":"The NUMA configuration.\n"},"onBoot":{"type":"boolean","description":"Specifies whether a VM will be started during system\nboot. (defaults to `true`)\n"},"operatingSystem":{"$ref":"#/types/proxmoxve:VM/VirtualMachineOperatingSystem:VirtualMachineOperatingSystem","description":"The Operating System configuration.\n"},"poolId":{"type":"string","description":"The identifier for a pool to assign the virtual machine to.\n"},"protection":{"type":"boolean","description":"Sets the protection flag of the VM. This will disable the remove VM and remove disk operations (defaults to `false`).\n"},"reboot":{"type":"boolean","description":"Reboot the VM after initial creation. (defaults to `false`)\n"},"scsiHardware":{"type":"string","description":"The SCSI hardware type (defaults to\n`virtio-scsi-pci`).\n"},"serialDevices":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineSerialDevice:VirtualMachineSerialDevice"},"description":"A serial device (multiple blocks supported).\n"},"smbios":{"$ref":"#/types/proxmoxve:VM/VirtualMachineSmbios:VirtualMachineSmbios","description":"The SMBIOS (type1) settings for the VM.\n"},"started":{"type":"boolean","description":"Whether to start the virtual machine (defaults\nto `true`).\n"},"startup":{"$ref":"#/types/proxmoxve:VM/VirtualMachineStartup:VirtualMachineStartup","description":"Defines startup and shutdown behavior of the VM.\n"},"stopOnDestroy":{"type":"boolean","description":"Whether to stop rather than shutdown on VM destroy (defaults to `false`)\n"},"tabletDevice":{"type":"boolean","description":"Whether to enable the USB tablet device (defaults\nto `true`).\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 `ignore_changes` lifecycle meta-argument to ignore\nchanges to this attribute.\n"},"template":{"type":"boolean","description":"Whether to create a template (defaults to `false`).\n","willReplaceOnChanges":true},"timeoutClone":{"type":"integer","description":"Timeout for cloning a VM in seconds (defaults to\n1800).\n"},"timeoutCreate":{"type":"integer","description":"Timeout for creating a VM in seconds (defaults to\n1800).\n"},"timeoutMigrate":{"type":"integer","description":"Timeout for migrating the VM (defaults to\n1800).\n"},"timeoutMoveDisk":{"type":"integer","description":"MoveDisk timeout\n","deprecationMessage":"This field is deprecated and will be removed in a future release. An overall operation timeout (timeout_create / timeout_clone / timeout_migrate) is used instead."},"timeoutReboot":{"type":"integer","description":"Timeout for rebooting a VM in seconds (defaults\nto 1800).\n"},"timeoutShutdownVm":{"type":"integer","description":"Timeout for shutting down a VM in seconds (\ndefaults to 1800).\n"},"timeoutStartVm":{"type":"integer","description":"Timeout for starting a VM in seconds (defaults\nto 1800).\n"},"timeoutStopVm":{"type":"integer","description":"Timeout for stopping a VM in seconds (defaults\nto 300).\n"},"tpmState":{"$ref":"#/types/proxmoxve:VM/VirtualMachineTpmState:VirtualMachineTpmState","description":"The TPM state device.\n","willReplaceOnChanges":true},"usbs":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineUsb:VirtualMachineUsb"},"description":"A host USB device mapping (multiple blocks supported).\n"},"vga":{"$ref":"#/types/proxmoxve:VM/VirtualMachineVga:VirtualMachineVga","description":"The VGA configuration.\n"},"vmId":{"type":"integer","description":"The VM identifier.\n"},"watchdog":{"$ref":"#/types/proxmoxve:VM/VirtualMachineWatchdog:VirtualMachineWatchdog","description":"The watchdog configuration. Once enabled (by a guest action), the watchdog must be periodically polled by an agent inside the guest or else the watchdog will reset the guest (or execute the respective action specified).\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering VirtualMachine resources.\n","properties":{"acpi":{"type":"boolean","description":"Whether to enable ACPI (defaults to `true`).\n"},"agent":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAgent:VirtualMachineAgent","description":"The QEMU agent configuration.\n"},"audioDevice":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAudioDevice:VirtualMachineAudioDevice","description":"An audio device.\n"},"bios":{"type":"string","description":"The BIOS implementation (defaults to `seabios`).\n"},"bootOrders":{"type":"array","items":{"type":"string"},"description":"Specify a list of devices to boot from in the order\nthey appear in the list (defaults to `[]`).\n"},"cdrom":{"$ref":"#/types/proxmoxve:VM/VirtualMachineCdrom:VirtualMachineCdrom","description":"The CDROM configuration.\n"},"clone":{"$ref":"#/types/proxmoxve:VM/VirtualMachineClone:VirtualMachineClone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/VirtualMachineCpu:VirtualMachineCpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description.\n"},"disks":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineDisk:VirtualMachineDisk"},"description":"A disk (multiple blocks supported).\n"},"efiDisk":{"$ref":"#/types/proxmoxve:VM/VirtualMachineEfiDisk:VirtualMachineEfiDisk","description":"The efi disk device (required if `bios` is set\nto `ovmf`)\n","willReplaceOnChanges":true},"hookScriptFileId":{"type":"string","description":"The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).\n"},"hostpcis":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineHostpci:VirtualMachineHostpci"},"description":"A host PCI device mapping (multiple blocks supported).\n"},"initialization":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitialization:VirtualMachineInitialization","description":"The cloud-init configuration.\n"},"ipv4Addresses":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"The IPv4 addresses per network interface published by the\nQEMU agent (empty list when `agent.enabled` is `false`)\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 `false`)\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 `pc`).\n"},"memory":{"$ref":"#/types/proxmoxve:VM/VirtualMachineMemory:VirtualMachineMemory","description":"The memory configuration.\n"},"migrate":{"type":"boolean","description":"Migrate the VM on node change instead of re-creating\nit (defaults to `false`).\n"},"name":{"type":"string","description":"The virtual machine name.\n"},"networkDevices":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineNetworkDevice:VirtualMachineNetworkDevice"},"description":"A network device (multiple blocks supported).\n"},"networkInterfaceNames":{"type":"array","items":{"type":"string"},"description":"The network interface names published by the QEMU\nagent (empty list when `agent.enabled` is `false`)\n"},"nodeName":{"type":"string","description":"The name of the node to assign the virtual machine\nto.\n"},"numas":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineNuma:VirtualMachineNuma"},"description":"The NUMA configuration.\n"},"onBoot":{"type":"boolean","description":"Specifies whether a VM will be started during system\nboot. (defaults to `true`)\n"},"operatingSystem":{"$ref":"#/types/proxmoxve:VM/VirtualMachineOperatingSystem:VirtualMachineOperatingSystem","description":"The Operating System configuration.\n"},"poolId":{"type":"string","description":"The identifier for a pool to assign the virtual machine to.\n"},"protection":{"type":"boolean","description":"Sets the protection flag of the VM. This will disable the remove VM and remove disk operations (defaults to `false`).\n"},"reboot":{"type":"boolean","description":"Reboot the VM after initial creation. (defaults to `false`)\n"},"scsiHardware":{"type":"string","description":"The SCSI hardware type (defaults to\n`virtio-scsi-pci`).\n"},"serialDevices":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineSerialDevice:VirtualMachineSerialDevice"},"description":"A serial device (multiple blocks supported).\n"},"smbios":{"$ref":"#/types/proxmoxve:VM/VirtualMachineSmbios:VirtualMachineSmbios","description":"The SMBIOS (type1) settings for the VM.\n"},"started":{"type":"boolean","description":"Whether to start the virtual machine (defaults\nto `true`).\n"},"startup":{"$ref":"#/types/proxmoxve:VM/VirtualMachineStartup:VirtualMachineStartup","description":"Defines startup and shutdown behavior of the VM.\n"},"stopOnDestroy":{"type":"boolean","description":"Whether to stop rather than shutdown on VM destroy (defaults to `false`)\n"},"tabletDevice":{"type":"boolean","description":"Whether to enable the USB tablet device (defaults\nto `true`).\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 `ignore_changes` lifecycle meta-argument to ignore\nchanges to this attribute.\n"},"template":{"type":"boolean","description":"Whether to create a template (defaults to `false`).\n","willReplaceOnChanges":true},"timeoutClone":{"type":"integer","description":"Timeout for cloning a VM in seconds (defaults to\n1800).\n"},"timeoutCreate":{"type":"integer","description":"Timeout for creating a VM in seconds (defaults to\n1800).\n"},"timeoutMigrate":{"type":"integer","description":"Timeout for migrating the VM (defaults to\n1800).\n"},"timeoutMoveDisk":{"type":"integer","description":"MoveDisk timeout\n","deprecationMessage":"This field is deprecated and will be removed in a future release. An overall operation timeout (timeout_create / timeout_clone / timeout_migrate) is used instead."},"timeoutReboot":{"type":"integer","description":"Timeout for rebooting a VM in seconds (defaults\nto 1800).\n"},"timeoutShutdownVm":{"type":"integer","description":"Timeout for shutting down a VM in seconds (\ndefaults to 1800).\n"},"timeoutStartVm":{"type":"integer","description":"Timeout for starting a VM in seconds (defaults\nto 1800).\n"},"timeoutStopVm":{"type":"integer","description":"Timeout for stopping a VM in seconds (defaults\nto 300).\n"},"tpmState":{"$ref":"#/types/proxmoxve:VM/VirtualMachineTpmState:VirtualMachineTpmState","description":"The TPM state device.\n","willReplaceOnChanges":true},"usbs":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineUsb:VirtualMachineUsb"},"description":"A host USB device mapping (multiple blocks supported).\n"},"vga":{"$ref":"#/types/proxmoxve:VM/VirtualMachineVga:VirtualMachineVga","description":"The VGA configuration.\n"},"vmId":{"type":"integer","description":"The VM identifier.\n"},"watchdog":{"$ref":"#/types/proxmoxve:VM/VirtualMachineWatchdog:VirtualMachineWatchdog","description":"The watchdog configuration. Once enabled (by a guest action), the watchdog must be periodically polled by an agent inside the guest or else the watchdog will reset the guest (or execute the respective action specified).\n"}},"type":"object"}},"proxmoxve:index/acl:Acl":{"description":"Manages ACLs on the Proxmox cluster.\n\nACLs are used to control access to resources in the Proxmox cluster.\nEach ACL consists of a path, a user, group or token, a role, and a flag to allow propagation of permissions.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsAutomation = new proxmoxve.permission.User(\"operationsAutomation\", {\n comment: \"Managed by Terraform\",\n password: \"a-strong-password\",\n userId: \"operations-automation@pve\",\n});\nconst operationsMonitoring = new proxmoxve.permission.Role(\"operationsMonitoring\", {\n roleId: \"operations-monitoring\",\n privileges: [\"VM.Monitor\"],\n});\nconst operationsAutomationMonitoring = new proxmoxve.Acl(\"operationsAutomationMonitoring\", {\n userId: operationsAutomation.userId,\n roleId: operationsMonitoring.roleId,\n path: \"/vms/1234\",\n propagate: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_automation = proxmoxve.permission.User(\"operationsAutomation\",\n comment=\"Managed by Terraform\",\n password=\"a-strong-password\",\n user_id=\"operations-automation@pve\")\noperations_monitoring = proxmoxve.permission.Role(\"operationsMonitoring\",\n role_id=\"operations-monitoring\",\n privileges=[\"VM.Monitor\"])\noperations_automation_monitoring = proxmoxve.Acl(\"operationsAutomationMonitoring\",\n user_id=operations_automation.user_id,\n role_id=operations_monitoring.role_id,\n path=\"/vms/1234\",\n propagate=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsAutomation = new ProxmoxVE.Permission.User(\"operationsAutomation\", new()\n {\n Comment = \"Managed by Terraform\",\n Password = \"a-strong-password\",\n UserId = \"operations-automation@pve\",\n });\n\n var operationsMonitoring = new ProxmoxVE.Permission.Role(\"operationsMonitoring\", new()\n {\n RoleId = \"operations-monitoring\",\n Privileges = new[]\n {\n \"VM.Monitor\",\n },\n });\n\n var operationsAutomationMonitoring = new ProxmoxVE.Acl(\"operationsAutomationMonitoring\", 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/v6/go/proxmoxve\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\toperationsAutomation, err := Permission.NewUser(ctx, \"operationsAutomation\", \u0026Permission.UserArgs{\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t\tPassword: pulumi.String(\"a-strong-password\"),\n\t\t\tUserId: pulumi.String(\"operations-automation@pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\toperationsMonitoring, err := Permission.NewRole(ctx, \"operationsMonitoring\", \u0026Permission.RoleArgs{\n\t\t\tRoleId: pulumi.String(\"operations-monitoring\"),\n\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"VM.Monitor\"),\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, \"operationsAutomationMonitoring\", \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 com.pulumi.proxmoxve.Permission.User;\nimport com.pulumi.proxmoxve.Permission.UserArgs;\nimport com.pulumi.proxmoxve.Permission.Role;\nimport com.pulumi.proxmoxve.Permission.RoleArgs;\nimport com.pulumi.proxmoxve.Acl;\nimport com.pulumi.proxmoxve.AclArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var operationsAutomation = new User(\"operationsAutomation\", UserArgs.builder()\n .comment(\"Managed by Terraform\")\n .password(\"a-strong-password\")\n .userId(\"operations-automation@pve\")\n .build());\n\n var operationsMonitoring = new Role(\"operationsMonitoring\", RoleArgs.builder()\n .roleId(\"operations-monitoring\")\n .privileges(\"VM.Monitor\")\n .build());\n\n var operationsAutomationMonitoring = new Acl(\"operationsAutomationMonitoring\", AclArgs.builder()\n .userId(operationsAutomation.userId())\n .roleId(operationsMonitoring.roleId())\n .path(\"/vms/1234\")\n .propagate(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n operationsAutomation:\n type: proxmoxve:Permission:User\n properties:\n comment: Managed by Terraform\n password: a-strong-password\n userId: operations-automation@pve\n operationsMonitoring:\n type: proxmoxve:Permission:Role\n properties:\n roleId: operations-monitoring\n privileges:\n - VM.Monitor\n operationsAutomationMonitoring:\n type: proxmoxve:Acl\n properties:\n userId: ${operationsAutomation.userId}\n roleId: ${operationsMonitoring.roleId}\n path: /vms/1234\n propagate: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nACL can be imported using its unique identifier, e.g.: {path}?{group|user@realm|user@realm!token}?{role}\n\n```sh\n$ pulumi import proxmoxve:index/acl:Acl operations_automation_monitoring /?monitor@pve?operations-monitoring\n```\n\n","properties":{"groupId":{"type":"string","description":"The group the ACL should apply to (mutually exclusive with `token_id` and `user_id`)\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 `group_id` and `user_id`)\n"},"userId":{"type":"string","description":"The user the ACL should apply to (mutually exclusive with `group_id` and `token_id`)\n"}},"required":["path","propagate","roleId"],"inputProperties":{"groupId":{"type":"string","description":"The group the ACL should apply to (mutually exclusive with `token_id` and `user_id`)\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 `group_id` and `user_id`)\n"},"userId":{"type":"string","description":"The user the ACL should apply to (mutually exclusive with `group_id` and `token_id`)\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 `token_id` and `user_id`)\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 `group_id` and `user_id`)\n"},"userId":{"type":"string","description":"The user the ACL should apply to (mutually exclusive with `group_id` and `token_id`)\n"}},"type":"object"}},"proxmoxve:index/acmeAccount:AcmeAccount":{"description":"Manages an ACME account in a Proxmox VE cluster.\n\n\u003e This resource requires `root@pam` authentication.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.AcmeAccount(\"example\", {\n contact: \"example@email.com\",\n directory: \"https://acme-staging-v02.api.letsencrypt.org/directory\",\n tos: \"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.AcmeAccount(\"example\",\n contact=\"example@email.com\",\n directory=\"https://acme-staging-v02.api.letsencrypt.org/directory\",\n tos=\"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new ProxmoxVE.AcmeAccount(\"example\", new()\n {\n 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/v6/go/proxmoxve\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := proxmoxve.NewAcmeAccount(ctx, \"example\", \u0026proxmoxve.AcmeAccountArgs{\n\t\t\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 com.pulumi.proxmoxve.AcmeAccount;\nimport com.pulumi.proxmoxve.AcmeAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new AcmeAccount(\"example\", AcmeAccountArgs.builder()\n .contact(\"example@email.com\")\n .directory(\"https://acme-staging-v02.api.letsencrypt.org/directory\")\n .tos(\"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:AcmeAccount\n properties:\n contact: example@email.com\n directory: https://acme-staging-v02.api.letsencrypt.org/directory\n tos: https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nACME accounts can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:index/acmeAccount:AcmeAccount example example\n```\n\n","properties":{"contact":{"type":"string","description":"The contact email addresses.\n"},"createdAt":{"type":"string","description":"The timestamp of the ACME account creation.\n"},"directory":{"type":"string","description":"The URL of the ACME CA directory endpoint.\n"},"eabHmacKey":{"type":"string","description":"The HMAC key for External Account Binding.\n"},"eabKid":{"type":"string","description":"The Key Identifier for External Account Binding.\n"},"location":{"type":"string","description":"The location of the ACME account.\n"},"name":{"type":"string","description":"The ACME account config file name.\n"},"tos":{"type":"string","description":"The URL of CA TermsOfService - setting this indicates agreement.\n"}},"required":["contact","createdAt","location","name"],"inputProperties":{"contact":{"type":"string","description":"The contact email addresses.\n"},"directory":{"type":"string","description":"The URL of the ACME CA directory endpoint.\n"},"eabHmacKey":{"type":"string","description":"The HMAC key for External Account Binding.\n"},"eabKid":{"type":"string","description":"The Key Identifier for External Account Binding.\n"},"name":{"type":"string","description":"The ACME account config file name.\n"},"tos":{"type":"string","description":"The URL of CA TermsOfService - setting this indicates agreement.\n"}},"requiredInputs":["contact"],"stateInputs":{"description":"Input properties used for looking up and filtering AcmeAccount resources.\n","properties":{"contact":{"type":"string","description":"The contact email addresses.\n"},"createdAt":{"type":"string","description":"The timestamp of the ACME account creation.\n"},"directory":{"type":"string","description":"The URL of the ACME CA directory endpoint.\n"},"eabHmacKey":{"type":"string","description":"The HMAC key for External Account Binding.\n"},"eabKid":{"type":"string","description":"The Key Identifier for External Account Binding.\n"},"location":{"type":"string","description":"The location of the ACME account.\n"},"name":{"type":"string","description":"The ACME account config file name.\n"},"tos":{"type":"string","description":"The URL of CA TermsOfService - setting this indicates agreement.\n"}},"type":"object"}},"proxmoxve:index/acmeDnsPlugin:AcmeDnsPlugin":{"description":"Manages an ACME plugin in a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.AcmeDnsPlugin(\"example\", {\n api: \"aws\",\n data: {\n AWS_ACCESS_KEY_ID: \"EXAMPLE\",\n AWS_SECRET_ACCESS_KEY: \"EXAMPLE\",\n },\n plugin: \"test\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.AcmeDnsPlugin(\"example\",\n api=\"aws\",\n data={\n \"AWS_ACCESS_KEY_ID\": \"EXAMPLE\",\n \"AWS_SECRET_ACCESS_KEY\": \"EXAMPLE\",\n },\n plugin=\"test\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new ProxmoxVE.AcmeDnsPlugin(\"example\", new()\n {\n Api = \"aws\",\n Data = \n {\n { \"AWS_ACCESS_KEY_ID\", \"EXAMPLE\" },\n { \"AWS_SECRET_ACCESS_KEY\", \"EXAMPLE\" },\n },\n Plugin = \"test\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := proxmoxve.NewAcmeDnsPlugin(ctx, \"example\", \u0026proxmoxve.AcmeDnsPluginArgs{\n\t\t\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\tPlugin: pulumi.String(\"test\"),\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.AcmeDnsPlugin;\nimport com.pulumi.proxmoxve.AcmeDnsPluginArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new AcmeDnsPlugin(\"example\", AcmeDnsPluginArgs.builder()\n .api(\"aws\")\n .data(Map.ofEntries(\n Map.entry(\"AWS_ACCESS_KEY_ID\", \"EXAMPLE\"),\n Map.entry(\"AWS_SECRET_ACCESS_KEY\", \"EXAMPLE\")\n ))\n .plugin(\"test\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:AcmeDnsPlugin\n properties:\n api: aws\n data:\n AWS_ACCESS_KEY_ID: EXAMPLE\n AWS_SECRET_ACCESS_KEY: EXAMPLE\n plugin: test\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nACME accounts can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:index/acmeDnsPlugin:AcmeDnsPlugin example test\n```\n\n","properties":{"api":{"type":"string","description":"API plugin name.\n"},"data":{"type":"object","additionalProperties":{"type":"string"},"description":"DNS plugin data.\n"},"digest":{"type":"string","description":"SHA1 digest of the current configuration. Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.\n"},"disable":{"type":"boolean","description":"Flag to disable the config.\n"},"plugin":{"type":"string","description":"ACME Plugin ID name.\n"},"validationDelay":{"type":"integer","description":"Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records (0 - 172800).\n"}},"required":["api","digest","plugin","validationDelay"],"inputProperties":{"api":{"type":"string","description":"API plugin name.\n"},"data":{"type":"object","additionalProperties":{"type":"string"},"description":"DNS plugin data.\n"},"digest":{"type":"string","description":"SHA1 digest of the current configuration. Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.\n"},"disable":{"type":"boolean","description":"Flag to disable the config.\n"},"plugin":{"type":"string","description":"ACME Plugin ID name.\n"},"validationDelay":{"type":"integer","description":"Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records (0 - 172800).\n"}},"requiredInputs":["api","plugin"],"stateInputs":{"description":"Input properties used for looking up and filtering AcmeDnsPlugin resources.\n","properties":{"api":{"type":"string","description":"API plugin name.\n"},"data":{"type":"object","additionalProperties":{"type":"string"},"description":"DNS plugin data.\n"},"digest":{"type":"string","description":"SHA1 digest of the current configuration. Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.\n"},"disable":{"type":"boolean","description":"Flag to disable the config.\n"},"plugin":{"type":"string","description":"ACME Plugin ID name.\n"},"validationDelay":{"type":"integer","description":"Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records (0 - 172800).\n"}},"type":"object"}},"proxmoxve:index/certifi:Certifi":{"description":"Manages the custom SSL/TLS certificate for a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n example:\n type: proxmoxve:Certifi\n properties:\n certificate: ${proxmoxVirtualEnvironmentCertificateSelfSignedCert.certPem}\n nodeName: first-node\n privateKey: ${proxmoxVirtualEnvironmentCertificatePrivateKey.privateKeyPem}\n proxmoxVirtualEnvironmentCertificatePrivateKey:\n type: tls:PrivateKey\n properties:\n algorithm: RSA\n rsaBits: 2048\n proxmoxVirtualEnvironmentCertificateSelfSignedCert:\n type: tls:SelfSignedCert\n properties:\n keyAlgorithm: ${proxmoxVirtualEnvironmentCertificatePrivateKey.algorithm}\n privateKeyPem: ${proxmoxVirtualEnvironmentCertificatePrivateKey.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\n"},"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\n"},"privateKey":{"type":"string","description":"The PEM encoded private key.\n","secret":true}},"requiredInputs":["certificate","nodeName","privateKey"],"stateInputs":{"description":"Input properties used for looking up and filtering Certifi resources.\n","properties":{"certificate":{"type":"string","description":"The PEM encoded certificate.\n"},"certificateChain":{"type":"string","description":"The PEM encoded certificate chain.\n"},"expirationDate":{"type":"string","description":"The expiration date (RFC 3339).\n"},"fileName":{"type":"string","description":"The file name.\n"},"issuer":{"type":"string","description":"The issuer.\n"},"nodeName":{"type":"string","description":"A node name.\n","willReplaceOnChanges":true},"overwrite":{"type":"boolean","description":"Whether to overwrite an existing certificate\n"},"privateKey":{"type":"string","description":"The PEM encoded private key.\n","secret":true},"publicKeySize":{"type":"integer","description":"The public key size.\n"},"publicKeyType":{"type":"string","description":"The public key type.\n"},"sslFingerprint":{"type":"string","description":"The SSL fingerprint.\n"},"startDate":{"type":"string","description":"The start date (RFC 3339).\n"},"subject":{"type":"string","description":"The subject.\n"},"subjectAlternativeNames":{"type":"array","items":{"type":"string"},"description":"The subject alternative names.\n"}},"type":"object"}},"proxmoxve:index/dNS:DNS":{"description":"Manages the DNS configuration for a specific node.\n\n## Import\n\nInstances can be imported using the `node_name`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:index/dNS:DNS first_node first-node\n```\n\n","properties":{"domain":{"type":"string","description":"The DNS search domain.\n"},"nodeName":{"type":"string","description":"A node name.\n"},"servers":{"type":"array","items":{"type":"string"},"description":"The DNS servers.\n"}},"required":["domain","nodeName"],"inputProperties":{"domain":{"type":"string","description":"The DNS search domain.\n"},"nodeName":{"type":"string","description":"A node name.\n","willReplaceOnChanges":true},"servers":{"type":"array","items":{"type":"string"},"description":"The DNS servers.\n"}},"requiredInputs":["domain","nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering DNS resources.\n","properties":{"domain":{"type":"string","description":"The DNS search domain.\n"},"nodeName":{"type":"string","description":"A node name.\n","willReplaceOnChanges":true},"servers":{"type":"array","items":{"type":"string"},"description":"The DNS servers.\n"}},"type":"object"}},"proxmoxve:index/hosts:Hosts":{"description":"Manages the host entries on a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n firstNodeHostEntries:\n type: proxmoxve:Hosts\n properties:\n entries:\n - address: 127.0.0.1\n hostnames:\n - localhost\n - localhost.localdomain\n nodeName: first-node\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Important Notes\n\nBe careful not to use this resource multiple times for the same node.\n\n## Import\n\nInstances can be imported using the `node_name`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:index/hosts:Hosts first_node_host_entries first-node\n```\n\n","properties":{"addresses":{"type":"array","items":{"type":"string"},"description":"The IP addresses.\n"},"digest":{"type":"string","description":"The SHA1 digest.\n"},"entries":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/HostsEntry:HostsEntry"},"description":"The host entries (conversion of `addresses` and `hostnames` into\nobjects).\n"},"entry":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/HostsEntry:HostsEntry"},"description":"A host entry (multiple blocks supported).\n"},"hostnames":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"The hostnames associated with each of the IP addresses.\n"},"nodeName":{"type":"string","description":"A node name.\n"}},"required":["addresses","digest","entries","entry","hostnames","nodeName"],"inputProperties":{"entry":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/HostsEntry:HostsEntry"},"description":"A host entry (multiple blocks supported).\n"},"nodeName":{"type":"string","description":"A node name.\n"}},"requiredInputs":["entry","nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering Hosts resources.\n","properties":{"addresses":{"type":"array","items":{"type":"string"},"description":"The IP addresses.\n"},"digest":{"type":"string","description":"The SHA1 digest.\n"},"entries":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/HostsEntry:HostsEntry"},"description":"The host entries (conversion of `addresses` and `hostnames` into\nobjects).\n"},"entry":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/HostsEntry:HostsEntry"},"description":"A host entry (multiple blocks supported).\n"},"hostnames":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"The hostnames associated with each of the IP addresses.\n"},"nodeName":{"type":"string","description":"A node name.\n"}},"type":"object"}},"proxmoxve:index/time:Time":{"description":"Manages the time for a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst firstNodeTime = new proxmoxve.Time(\"firstNodeTime\", {\n nodeName: \"first-node\",\n timeZone: \"UTC\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfirst_node_time = proxmoxve.Time(\"firstNodeTime\",\n node_name=\"first-node\",\n time_zone=\"UTC\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var firstNodeTime = new ProxmoxVE.Time(\"firstNodeTime\", 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/v6/go/proxmoxve\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := proxmoxve.NewTime(ctx, \"firstNodeTime\", \u0026proxmoxve.TimeArgs{\n\t\t\tNodeName: pulumi.String(\"first-node\"),\n\t\t\tTimeZone: pulumi.String(\"UTC\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Time;\nimport com.pulumi.proxmoxve.TimeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var firstNodeTime = new Time(\"firstNodeTime\", TimeArgs.builder()\n .nodeName(\"first-node\")\n .timeZone(\"UTC\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n firstNodeTime:\n type: proxmoxve:Time\n properties:\n nodeName: first-node\n timeZone: UTC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `node_name`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:index/time:Time first_node first-node\n```\n\n","properties":{"localTime":{"type":"string","description":"The node's local time.\n"},"nodeName":{"type":"string","description":"A node name.\n"},"timeZone":{"type":"string","description":"The node's time zone.\n"},"utcTime":{"type":"string","description":"The node's local time formatted as UTC.\n"}},"required":["localTime","nodeName","timeZone","utcTime"],"inputProperties":{"nodeName":{"type":"string","description":"A node name.\n"},"timeZone":{"type":"string","description":"The node's time zone.\n"}},"requiredInputs":["nodeName","timeZone"],"stateInputs":{"description":"Input properties used for looking up and filtering Time resources.\n","properties":{"localTime":{"type":"string","description":"The node's local time.\n"},"nodeName":{"type":"string","description":"A node name.\n"},"timeZone":{"type":"string","description":"The node's time zone.\n"},"utcTime":{"type":"string","description":"The node's local time formatted as UTC.\n"}},"type":"object"}},"proxmoxve:index/vm2:Vm2":{"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 `clone` 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/Vm2Cdrom:Vm2Cdrom"},"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 `q35` machine type only supports `ide0` and `ide2` of IDE interfaces.\n"},"clone":{"$ref":"#/types/proxmoxve:index/Vm2Clone:Vm2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:index/Vm2Cpu:Vm2Cpu","description":"The CPU configuration.\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"},"stopOnDestroy":{"type":"boolean","description":"Set to true to stop (rather than shutdown) the VM on destroy (defaults to `false`).\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/Vm2Timeouts:Vm2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:index/Vm2Vga:Vm2Vga","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 `std` for all OS types besides some Windows versions (XP and older) which use `cirrus`. The `qxl` option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays themself. You can also run without any graphic card, using a serial device as terminal. See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) section 10.2.8 for more information and available configuration parameters.\n"}},"required":["cdrom","cpu","name","nodeName","stopOnDestroy","tags","vga"],"inputProperties":{"cdrom":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:index/Vm2Cdrom:Vm2Cdrom"},"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 `q35` machine type only supports `ide0` and `ide2` of IDE interfaces.\n"},"clone":{"$ref":"#/types/proxmoxve:index/Vm2Clone:Vm2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:index/Vm2Cpu:Vm2Cpu","description":"The CPU configuration.\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"},"stopOnDestroy":{"type":"boolean","description":"Set to true to stop (rather than shutdown) the VM on destroy (defaults to `false`).\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/Vm2Timeouts:Vm2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:index/Vm2Vga:Vm2Vga","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 `std` for all OS types besides some Windows versions (XP and older) which use `cirrus`. The `qxl` 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 Vm2 resources.\n","properties":{"cdrom":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:index/Vm2Cdrom:Vm2Cdrom"},"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 `q35` machine type only supports `ide0` and `ide2` of IDE interfaces.\n"},"clone":{"$ref":"#/types/proxmoxve:index/Vm2Clone:Vm2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:index/Vm2Cpu:Vm2Cpu","description":"The CPU configuration.\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"},"stopOnDestroy":{"type":"boolean","description":"Set to true to stop (rather than shutdown) the VM on destroy (defaults to `false`).\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/Vm2Timeouts:Vm2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:index/Vm2Vga:Vm2Vga","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 `std` for all OS types besides some Windows versions (XP and older) which use `cirrus`. The `qxl` 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"},"deprecationMessage":"proxmoxve.index/vm2.Vm2 has been deprecated in favor of proxmoxve.vm/virtualmachine2.VirtualMachine2"}},"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 \"@pulumi/proxmoxve\";\n\nconst all = proxmoxve.Acme.getAccounts({});\nconst example = all.then(all =\u003e .map(([, ]) =\u003e (proxmoxve.Acme.getAccount({\n name: __value,\n}))));\nexport const dataProxmoxVirtualEnvironmentAcmeAccount = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nall = proxmoxve.Acme.get_accounts()\nexample = [proxmoxve.Acme.get_account(name=__value) for __key, __value in all.accounts]\npulumi.export(\"dataProxmoxVirtualEnvironmentAcmeAccount\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var all = ProxmoxVE.Acme.GetAccounts.Invoke();\n\n var example = .Select(__value =\u003e \n {\n return ProxmoxVE.Acme.GetAccount.Invoke(new()\n {\n Name = __value,\n });\n }).ToList();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentAcmeAccount\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/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\tall, err := Acme.GetAccounts(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample := \"TODO: For expression\"\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentAcmeAccount\", 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 java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 = AcmeFunctions.getAccounts();\n\n final var example = \"TODO: ForExpression\";\n\n ctx.export(\"dataProxmoxVirtualEnvironmentAcmeAccount\", example);\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getAccount.\n","properties":{"name":{"type":"string","description":"The identifier of the ACME account to read.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getAccount.\n","properties":{"account":{"$ref":"#/types/proxmoxve:Acme/getAccountAccount:getAccountAccount","description":"The ACME account information.\n"},"directory":{"description":"The directory URL of the ACME account.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","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 \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Acme.getAccounts({});\nexport const dataProxmoxVirtualEnvironmentAcmeAccounts = example.then(example =\u003e example.accounts);\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Acme.get_accounts()\npulumi.export(\"dataProxmoxVirtualEnvironmentAcmeAccounts\", example.accounts)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Acme.GetAccounts.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentAcmeAccounts\"] = example.Apply(getAccountsResult =\u003e getAccountsResult.Accounts),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Acme\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Acme.GetAccounts(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentAcmeAccounts\", example.Accounts)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Acme.AcmeFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = AcmeFunctions.getAccounts();\n\n ctx.export(\"dataProxmoxVirtualEnvironmentAcmeAccounts\", example.applyValue(getAccountsResult -\u003e getAccountsResult.accounts()));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Acme:getAccounts\n Arguments: {}\noutputs:\n dataProxmoxVirtualEnvironmentAcmeAccounts: ${example.accounts}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getAccounts.\n","properties":{"accounts":{"description":"The identifiers of the ACME accounts.\n","items":{"type":"string"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","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 \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Acme.getPlugin({\n plugin: \"standalone\",\n});\nexport const dataProxmoxVirtualEnvironmentAcmePlugin = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Acme.get_plugin(plugin=\"standalone\")\npulumi.export(\"dataProxmoxVirtualEnvironmentAcmePlugin\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Acme.GetPlugin.Invoke(new()\n {\n Plugin = \"standalone\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentAcmePlugin\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Acme\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Acme.GetPlugin(ctx, \u0026acme.GetPluginArgs{\n\t\t\tPlugin: \"standalone\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentAcmePlugin\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Acme.AcmeFunctions;\nimport com.pulumi.proxmoxve.Acme.inputs.GetPluginArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = AcmeFunctions.getPlugin(GetPluginArgs.builder()\n .plugin(\"standalone\")\n .build());\n\n ctx.export(\"dataProxmoxVirtualEnvironmentAcmePlugin\", example.applyValue(getPluginResult -\u003e getPluginResult));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Acme:getPlugin\n Arguments:\n plugin: standalone\noutputs:\n dataProxmoxVirtualEnvironmentAcmePlugin: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getPlugin.\n","properties":{"plugin":{"type":"string","description":"ACME Plugin ID name.\n"}},"type":"object","required":["plugin"]},"outputs":{"description":"A collection of values returned by getPlugin.\n","properties":{"api":{"description":"API plugin name.\n","type":"string"},"data":{"additionalProperties":{"type":"string"},"description":"DNS plugin data.\n","type":"object"},"digest":{"description":"Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","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 \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Acme.getPlugins({});\nexport const dataProxmoxVirtualEnvironmentAcmePlugins = example.then(example =\u003e example.plugins);\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Acme.get_plugins()\npulumi.export(\"dataProxmoxVirtualEnvironmentAcmePlugins\", example.plugins)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Acme.GetPlugins.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentAcmePlugins\"] = example.Apply(getPluginsResult =\u003e getPluginsResult.Plugins),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Acme\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Acme.GetPlugins(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentAcmePlugins\", example.Plugins)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Acme.AcmeFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = AcmeFunctions.getPlugins();\n\n ctx.export(\"dataProxmoxVirtualEnvironmentAcmePlugins\", example.applyValue(getPluginsResult -\u003e getPluginsResult.plugins()));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Acme:getPlugins\n Arguments: {}\noutputs:\n dataProxmoxVirtualEnvironmentAcmePlugins: ${example.plugins}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getPlugins.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"plugins":{"description":"List of ACME plugins\n","items":{"$ref":"#/types/proxmoxve:Acme/getPluginsPlugin:getPluginsPlugin"},"type":"array"}},"required":["plugins","id"],"type":"object"}},"proxmoxve:Apt/getRepository:getRepository":{"description":"Retrieves an APT repository from a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Apt.getRepository({\n filePath: \"/etc/apt/sources.list\",\n index: 0,\n node: \"pve\",\n});\nexport const proxmoxVirtualEnvironmentAptRepository = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Apt.get_repository(file_path=\"/etc/apt/sources.list\",\n index=0,\n node=\"pve\")\npulumi.export(\"proxmoxVirtualEnvironmentAptRepository\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Apt.GetRepository.Invoke(new()\n {\n FilePath = \"/etc/apt/sources.list\",\n Index = 0,\n Node = \"pve\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"proxmoxVirtualEnvironmentAptRepository\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Apt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Apt.GetRepository(ctx, \u0026apt.GetRepositoryArgs{\n\t\t\tFilePath: \"/etc/apt/sources.list\",\n\t\t\tIndex: 0,\n\t\t\tNode: \"pve\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"proxmoxVirtualEnvironmentAptRepository\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Apt.AptFunctions;\nimport com.pulumi.proxmoxve.Apt.inputs.GetRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = AptFunctions.getRepository(GetRepositoryArgs.builder()\n .filePath(\"/etc/apt/sources.list\")\n .index(0)\n .node(\"pve\")\n .build());\n\n ctx.export(\"proxmoxVirtualEnvironmentAptRepository\", example.applyValue(getRepositoryResult -\u003e getRepositoryResult));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Apt:getRepository\n Arguments:\n filePath: /etc/apt/sources.list\n index: 0\n node: pve\noutputs:\n proxmoxVirtualEnvironmentAptRepository: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getRepository.\n","properties":{"filePath":{"type":"string","description":"The absolute path of the source list file that contains this repository.\n"},"index":{"type":"integer","description":"The index within the defining source list file.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"}},"type":"object","required":["filePath","index","node"]},"outputs":{"description":"A collection of values returned by getRepository.\n","properties":{"comment":{"description":"The associated comment.\n","type":"string"},"components":{"description":"The list of components.\n","items":{"type":"string"},"type":"array"},"enabled":{"description":"Indicates the activation status.\n","type":"boolean"},"filePath":{"description":"The absolute path of the source list file that contains this repository.\n","type":"string"},"fileType":{"description":"The format of the defining source list file.\n","type":"string"},"id":{"description":"The unique identifier of this APT repository data source.\n","type":"string"},"index":{"description":"The index within the defining source list file.\n","type":"integer"},"node":{"description":"The name of the target Proxmox VE node.\n","type":"string"},"packageTypes":{"description":"The list of package types.\n","items":{"type":"string"},"type":"array"},"suites":{"description":"The list of package distributions.\n","items":{"type":"string"},"type":"array"},"uris":{"description":"The list of repository URIs.\n","items":{"type":"string"},"type":"array"}},"required":["comment","components","enabled","filePath","fileType","id","index","node","packageTypes","suites","uris"],"type":"object"}},"proxmoxve:Apt/standard/getRepository:getRepository":{"description":"Retrieves an APT standard repository from a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Apt.standard.getRepository({\n handle: \"no-subscription\",\n node: \"pve\",\n});\nexport const proxmoxVirtualEnvironmentAptStandardRepository = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Apt.standard.get_repository(handle=\"no-subscription\",\n node=\"pve\")\npulumi.export(\"proxmoxVirtualEnvironmentAptStandardRepository\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Apt.Standard.GetRepository.Invoke(new()\n {\n Handle = \"no-subscription\",\n Node = \"pve\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"proxmoxVirtualEnvironmentAptStandardRepository\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Apt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Apt.GetRepository(ctx, \u0026standard.GetRepositoryArgs{\n\t\t\tHandle: \"no-subscription\",\n\t\t\tNode: \"pve\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"proxmoxVirtualEnvironmentAptStandardRepository\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Apt_standard.Apt_standardFunctions;\nimport com.pulumi.proxmoxve.Apt.inputs.GetRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = Apt/standardFunctions.getRepository(GetRepositoryArgs.builder()\n .handle(\"no-subscription\")\n .node(\"pve\")\n .build());\n\n ctx.export(\"proxmoxVirtualEnvironmentAptStandardRepository\", example.applyValue(getRepositoryResult -\u003e getRepositoryResult));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Apt/standard:getRepository\n Arguments:\n handle: no-subscription\n node: pve\noutputs:\n proxmoxVirtualEnvironmentAptStandardRepository: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getRepository.\n","properties":{"handle":{"type":"string","description":"The handle of the APT standard repository.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"}},"type":"object","required":["handle","node"]},"outputs":{"description":"A collection of values returned by getRepository.\n","properties":{"description":{"description":"The description of the APT standard repository.\n","type":"string"},"filePath":{"description":"The absolute path of the source list file that contains this standard repository.\n","type":"string"},"handle":{"description":"The handle of the APT standard repository.\n","type":"string"},"id":{"description":"The unique identifier of this APT standard repository data source.\n","type":"string"},"index":{"description":"The index within the defining source list file.\n","type":"integer"},"name":{"description":"The name of the APT standard repository.\n","type":"string"},"node":{"description":"The name of the target Proxmox VE node.\n","type":"string"},"status":{"description":"Indicates the activation status.\n","type":"integer"}},"required":["description","filePath","handle","id","index","name","node","status"],"type":"object"}},"proxmoxve:Cluster/getNodes:getNodes":{"description":"Retrieves information about all available nodes.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst availableNodes = proxmoxve.Cluster.getNodes({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\navailable_nodes = proxmoxve.Cluster.get_nodes()\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 availableNodes = ProxmoxVE.Cluster.GetNodes.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/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.GetNodes(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.Cluster.ClusterFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var availableNodes = ClusterFunctions.getNodes();\n\n }\n}\n```\n```yaml\nvariables:\n availableNodes:\n fn::invoke:\n Function: proxmoxve:Cluster:getNodes\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getNodes.\n","properties":{"cpuCounts":{"description":"The CPU count for each node.\n","items":{"type":"integer"},"type":"array"},"cpuUtilizations":{"description":"The CPU utilization on each node.\n","items":{"type":"number"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"memoryAvailables":{"description":"The memory available on each node.\n","items":{"type":"integer"},"type":"array"},"memoryUseds":{"description":"The memory used on each node.\n","items":{"type":"integer"},"type":"array"},"names":{"description":"The node names.\n","items":{"type":"string"},"type":"array"},"onlines":{"description":"Whether a node is online.\n","items":{"type":"boolean"},"type":"array"},"sslFingerprints":{"description":"The SSL fingerprint for each node.\n","items":{"type":"string"},"type":"array"},"supportLevels":{"description":"The support level for each node.\n","items":{"type":"string"},"type":"array"},"uptimes":{"description":"The uptime in seconds for each node.\n","items":{"type":"integer"},"type":"array"}},"required":["cpuCounts","cpuUtilizations","memoryAvailables","memoryUseds","names","onlines","sslFingerprints","supportLevels","uptimes","id"],"type":"object"}},"proxmoxve:HA/getHAGroup:getHAGroup":{"description":"Retrieves information about a specific High Availability group.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst all = proxmoxve.HA.getHAGroups({});\nconst example = all.then(all =\u003e .map(([, ]) =\u003e (proxmoxve.HA.getHAGroup({\n group: __value,\n}))));\nexport const proxmoxVirtualEnvironmentHagroupsFull = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nall = proxmoxve.HA.get_ha_groups()\nexample = [proxmoxve.HA.get_ha_group(group=__value) for __key, __value in all.group_ids]\npulumi.export(\"proxmoxVirtualEnvironmentHagroupsFull\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var all = ProxmoxVE.HA.GetHAGroups.Invoke();\n\n var example = .Select(__value =\u003e \n {\n return ProxmoxVE.HA.GetHAGroup.Invoke(new()\n {\n Group = __value,\n });\n }).ToList();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"proxmoxVirtualEnvironmentHagroupsFull\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/HA\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tall, err := HA.GetHAGroups(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample := \"TODO: For expression\"\n\t\tctx.Export(\"proxmoxVirtualEnvironmentHagroupsFull\", 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.HA.HAFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var all = HAFunctions.getHAGroups();\n\n final var example = \"TODO: ForExpression\";\n\n ctx.export(\"proxmoxVirtualEnvironmentHagroupsFull\", example);\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getHAGroup.\n","properties":{"group":{"type":"string","description":"The identifier of the High Availability group to read.\n"}},"type":"object","required":["group"]},"outputs":{"description":"A collection of values returned by getHAGroup.\n","properties":{"comment":{"description":"The comment associated with this group\n","type":"string"},"group":{"description":"The identifier of the High Availability group to read.\n","type":"string"},"id":{"description":"The unique identifier of this resource.\n","type":"string"},"noFailback":{"description":"A flag that indicates that failing back to a higher priority node is disabled for this HA group.\n","type":"boolean"},"nodes":{"additionalProperties":{"type":"integer"},"description":"The member nodes for this group. They are provided as a map, where the keys are the node names and the values represent their priority: integers for known priorities or `null` for unset priorities.\n","type":"object"},"restricted":{"description":"A flag that indicates that other nodes may not be used to run resources associated to this HA group.\n","type":"boolean"}},"required":["comment","group","id","noFailback","nodes","restricted"],"type":"object"}},"proxmoxve:HA/getHAGroups:getHAGroups":{"description":"Retrieves the list of High Availability groups.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.HA.getHAGroups({});\nexport const dataProxmoxVirtualEnvironmentHagroups = example.then(example =\u003e example.groupIds);\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.HA.get_ha_groups()\npulumi.export(\"dataProxmoxVirtualEnvironmentHagroups\", example.group_ids)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.HA.GetHAGroups.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentHagroups\"] = example.Apply(getHAGroupsResult =\u003e getHAGroupsResult.GroupIds),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/HA\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := HA.GetHAGroups(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentHagroups\", example.GroupIds)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.HA.HAFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = HAFunctions.getHAGroups();\n\n ctx.export(\"dataProxmoxVirtualEnvironmentHagroups\", example.applyValue(getHAGroupsResult -\u003e getHAGroupsResult.groupIds()));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:HA:getHAGroups\n Arguments: {}\noutputs:\n dataProxmoxVirtualEnvironmentHagroups: ${example.groupIds}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getHAGroups.\n","properties":{"groupIds":{"description":"The identifiers of the High Availability groups.\n","items":{"type":"string"},"type":"array"},"id":{"description":"The unique identifier of this resource.\n","type":"string"}},"required":["groupIds","id"],"type":"object"}},"proxmoxve:HA/getHAResource:getHAResource":{"description":"Retrieves the list of High Availability resources.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst all = proxmoxve.HA.getHAResources({});\nconst example = all.then(all =\u003e .map(([, ]) =\u003e (proxmoxve.HA.getHAResource({\n resourceId: __value,\n}))));\nexport const proxmoxVirtualEnvironmentHaresourcesFull = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nall = proxmoxve.HA.get_ha_resources()\nexample = [proxmoxve.HA.get_ha_resource(resource_id=__value) for __key, __value in all.resource_ids]\npulumi.export(\"proxmoxVirtualEnvironmentHaresourcesFull\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var all = ProxmoxVE.HA.GetHAResources.Invoke();\n\n var example = .Select(__value =\u003e \n {\n return ProxmoxVE.HA.GetHAResource.Invoke(new()\n {\n ResourceId = __value,\n });\n }).ToList();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"proxmoxVirtualEnvironmentHaresourcesFull\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/HA\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tall, err := HA.GetHAResources(ctx, \u0026ha.GetHAResourcesArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample := \"TODO: For expression\"\n\t\tctx.Export(\"proxmoxVirtualEnvironmentHaresourcesFull\", 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.HA.HAFunctions;\nimport com.pulumi.proxmoxve.HA.inputs.GetHAResourcesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var all = HAFunctions.getHAResources();\n\n final var example = \"TODO: ForExpression\";\n\n ctx.export(\"proxmoxVirtualEnvironmentHaresourcesFull\", example);\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getHAResource.\n","properties":{"resourceId":{"type":"string","description":"The identifier of the Proxmox HA resource to read.\n"}},"type":"object","required":["resourceId"]},"outputs":{"description":"A collection of values returned by getHAResource.\n","properties":{"comment":{"description":"The comment associated with this resource.\n","type":"string"},"group":{"description":"The identifier of the High Availability group this resource is a member of.\n","type":"string"},"id":{"description":"The unique identifier of this resource.\n","type":"string"},"maxRelocate":{"description":"The maximal number of relocation attempts.\n","type":"integer"},"maxRestart":{"description":"The maximal number of restart attempts.\n","type":"integer"},"resourceId":{"description":"The identifier of the Proxmox HA resource to read.\n","type":"string"},"state":{"description":"The desired state of the resource.\n","type":"string"},"type":{"description":"The type of High Availability resource (`vm` or `ct`).\n","type":"string"}},"required":["comment","group","id","maxRelocate","maxRestart","resourceId","state","type"],"type":"object"}},"proxmoxve:HA/getHAResources:getHAResources":{"description":"Retrieves the list of High Availability resources.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst exampleAll = proxmoxve.HA.getHAResources({});\nconst exampleVm = proxmoxve.HA.getHAResources({\n type: \"vm\",\n});\nexport const dataProxmoxVirtualEnvironmentHaresources = {\n all: exampleAll.then(exampleAll =\u003e exampleAll.resourceIds),\n vms: exampleVm.then(exampleVm =\u003e exampleVm.resourceIds),\n};\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample_all = proxmoxve.HA.get_ha_resources()\nexample_vm = proxmoxve.HA.get_ha_resources(type=\"vm\")\npulumi.export(\"dataProxmoxVirtualEnvironmentHaresources\", {\n \"all\": example_all.resource_ids,\n \"vms\": example_vm.resource_ids,\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleAll = ProxmoxVE.HA.GetHAResources.Invoke();\n\n var exampleVm = ProxmoxVE.HA.GetHAResources.Invoke(new()\n {\n Type = \"vm\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentHaresources\"] = \n {\n { \"all\", exampleAll.Apply(getHAResourcesResult =\u003e getHAResourcesResult.ResourceIds) },\n { \"vms\", exampleVm.Apply(getHAResourcesResult =\u003e getHAResourcesResult.ResourceIds) },\n },\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/HA\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\nexampleAll, err := HA.GetHAResources(ctx, \u0026ha.GetHAResourcesArgs{\n}, nil);\nif err != nil {\nreturn err\n}\nexampleVm, err := HA.GetHAResources(ctx, \u0026ha.GetHAResourcesArgs{\nType: pulumi.StringRef(\"vm\"),\n}, nil);\nif err != nil {\nreturn err\n}\nctx.Export(\"dataProxmoxVirtualEnvironmentHaresources\", interface{}Map{\n\"all\": exampleAll.ResourceIds,\n\"vms\": exampleVm.ResourceIds,\n})\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.HA.HAFunctions;\nimport com.pulumi.proxmoxve.HA.inputs.GetHAResourcesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var exampleAll = HAFunctions.getHAResources();\n\n final var exampleVm = HAFunctions.getHAResources(GetHAResourcesArgs.builder()\n .type(\"vm\")\n .build());\n\n ctx.export(\"dataProxmoxVirtualEnvironmentHaresources\", %!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference));\n }\n}\n```\n```yaml\nvariables:\n exampleAll:\n fn::invoke:\n Function: proxmoxve:HA:getHAResources\n Arguments: {}\n exampleVm:\n fn::invoke:\n Function: proxmoxve:HA:getHAResources\n Arguments:\n type: vm\noutputs:\n dataProxmoxVirtualEnvironmentHaresources:\n all: ${exampleAll.resourceIds}\n vms: ${exampleVm.resourceIds}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getHAResources.\n","properties":{"type":{"type":"string","description":"The type of High Availability resources to fetch (`vm` or `ct`). 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 (`vm` or `ct`). All resources will be fetched if this option is unset.\n","type":"string"}},"required":["id","resourceIds"],"type":"object"}},"proxmoxve:Hardware/getMappings:getMappings":{"description":"Retrieves a list of hardware mapping resources.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example-pci = proxmoxve.Hardware.getMappings({\n checkNode: \"pve\",\n type: \"pci\",\n});\nconst example-usb = proxmoxve.Hardware.getMappings({\n checkNode: \"pve\",\n type: \"usb\",\n});\nexport const dataProxmoxVirtualEnvironmentHardwareMappingsPci = example_pci;\nexport const dataProxmoxVirtualEnvironmentHardwareMappingsUsb = example_usb;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample_pci = proxmoxve.Hardware.get_mappings(check_node=\"pve\",\n type=\"pci\")\nexample_usb = proxmoxve.Hardware.get_mappings(check_node=\"pve\",\n type=\"usb\")\npulumi.export(\"dataProxmoxVirtualEnvironmentHardwareMappingsPci\", example_pci)\npulumi.export(\"dataProxmoxVirtualEnvironmentHardwareMappingsUsb\", example_usb)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example_pci = ProxmoxVE.Hardware.GetMappings.Invoke(new()\n {\n CheckNode = \"pve\",\n Type = \"pci\",\n });\n\n var example_usb = ProxmoxVE.Hardware.GetMappings.Invoke(new()\n {\n CheckNode = \"pve\",\n Type = \"usb\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentHardwareMappingsPci\"] = example_pci,\n [\"dataProxmoxVirtualEnvironmentHardwareMappingsUsb\"] = example_usb,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/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_pci, err := Hardware.GetMappings(ctx, \u0026hardware.GetMappingsArgs{\n\t\t\tCheckNode: pulumi.StringRef(\"pve\"),\n\t\t\tType: \"pci\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_usb, err := Hardware.GetMappings(ctx, \u0026hardware.GetMappingsArgs{\n\t\t\tCheckNode: pulumi.StringRef(\"pve\"),\n\t\t\tType: \"usb\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentHardwareMappingsPci\", example_pci)\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentHardwareMappingsUsb\", example_usb)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Hardware.HardwareFunctions;\nimport com.pulumi.proxmoxve.Hardware.inputs.GetMappingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example-pci = HardwareFunctions.getMappings(GetMappingsArgs.builder()\n .checkNode(\"pve\")\n .type(\"pci\")\n .build());\n\n final var example-usb = HardwareFunctions.getMappings(GetMappingsArgs.builder()\n .checkNode(\"pve\")\n .type(\"usb\")\n .build());\n\n ctx.export(\"dataProxmoxVirtualEnvironmentHardwareMappingsPci\", example_pci);\n ctx.export(\"dataProxmoxVirtualEnvironmentHardwareMappingsUsb\", example_usb);\n }\n}\n```\n```yaml\nvariables:\n example-pci:\n fn::invoke:\n Function: proxmoxve:Hardware:getMappings\n Arguments:\n checkNode: pve\n type: pci\n example-usb:\n fn::invoke:\n Function: proxmoxve:Hardware:getMappings\n Arguments:\n checkNode: pve\n type: usb\noutputs:\n dataProxmoxVirtualEnvironmentHardwareMappingsPci: ${[\"example-pci\"]}\n dataProxmoxVirtualEnvironmentHardwareMappingsUsb: ${[\"example-usb\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getMappings.\n","properties":{"checkNode":{"type":"string","description":"The name of the node whose configurations should be checked for correctness.\n"},"type":{"type":"string","description":"The type of the hardware mappings.\n"}},"type":"object","required":["type"]},"outputs":{"description":"A collection of values returned by getMappings.\n","properties":{"checkNode":{"description":"The name of the node whose configurations should be checked for correctness.\n","type":"string"},"checks":{"description":"Might contain relevant diagnostics about incorrect configurations.\n","items":{"$ref":"#/types/proxmoxve:Hardware/getMappingsCheck:getMappingsCheck"},"type":"array"},"id":{"description":"The unique identifier of this hardware mappings data source.\n","type":"string"},"ids":{"description":"The identifiers of the hardware mappings.\n","items":{"type":"string"},"type":"array"},"type":{"description":"The type of the hardware mappings.\n","type":"string"}},"required":["checks","id","ids","type"],"type":"object"}},"proxmoxve:Hardware/mapping/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 \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Hardware.mapping.getPci({\n name: \"example\",\n});\nexport const dataProxmoxVirtualEnvironmentHardwareMappingPci = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Hardware.mapping.get_pci(name=\"example\")\npulumi.export(\"dataProxmoxVirtualEnvironmentHardwareMappingPci\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Hardware.Mapping.GetPci.Invoke(new()\n {\n Name = \"example\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentHardwareMappingPci\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Hardware\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Hardware.GetPci(ctx, \u0026mapping.GetPciArgs{\n\t\t\tName: \"example\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentHardwareMappingPci\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Hardware_mapping.Hardware_mappingFunctions;\nimport com.pulumi.proxmoxve.Hardware.inputs.GetPciArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = Hardware/mappingFunctions.getPci(GetPciArgs.builder()\n .name(\"example\")\n .build());\n\n ctx.export(\"dataProxmoxVirtualEnvironmentHardwareMappingPci\", example.applyValue(getPciResult -\u003e getPciResult));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Hardware/mapping:getPci\n Arguments:\n name: example\noutputs:\n dataProxmoxVirtualEnvironmentHardwareMappingPci: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getPci.\n","properties":{"name":{"type":"string","description":"The name of this PCI hardware mapping.\n"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getPci.\n","properties":{"comment":{"description":"The comment of this PCI hardware mapping.\n","type":"string"},"id":{"description":"The unique identifier of this PCI hardware mapping data source.\n","type":"string"},"maps":{"description":"The actual map of devices for the hardware mapping.\n","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/getPciMap:getPciMap"},"type":"array"},"mediatedDevices":{"description":"Indicates whether to use with mediated devices.\n","type":"boolean"},"name":{"description":"The name of this PCI hardware mapping.\n","type":"string"}},"required":["comment","id","maps","mediatedDevices","name"],"type":"object"}},"proxmoxve:Hardware/mapping/getUsb:getUsb":{"description":"Retrieves a USB hardware mapping from a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Hardware.mapping.getUsb({\n name: \"example\",\n});\nexport const dataProxmoxVirtualEnvironmentHardwareMappingUsb = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Hardware.mapping.get_usb(name=\"example\")\npulumi.export(\"dataProxmoxVirtualEnvironmentHardwareMappingUsb\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Hardware.Mapping.GetUsb.Invoke(new()\n {\n Name = \"example\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentHardwareMappingUsb\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Hardware\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Hardware.GetUsb(ctx, \u0026mapping.GetUsbArgs{\n\t\t\tName: \"example\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentHardwareMappingUsb\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Hardware_mapping.Hardware_mappingFunctions;\nimport com.pulumi.proxmoxve.Hardware.inputs.GetUsbArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = Hardware/mappingFunctions.getUsb(GetUsbArgs.builder()\n .name(\"example\")\n .build());\n\n ctx.export(\"dataProxmoxVirtualEnvironmentHardwareMappingUsb\", example.applyValue(getUsbResult -\u003e getUsbResult));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Hardware/mapping:getUsb\n Arguments:\n name: example\noutputs:\n dataProxmoxVirtualEnvironmentHardwareMappingUsb: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getUsb.\n","properties":{"name":{"type":"string","description":"The name of this USB hardware mapping.\n"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getUsb.\n","properties":{"comment":{"description":"The comment of this USB hardware mapping.\n","type":"string"},"id":{"description":"The unique identifier of this USB hardware mapping data source.\n","type":"string"},"maps":{"description":"The actual map of devices for the hardware mapping.\n","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/getUsbMap:getUsbMap"},"type":"array"},"name":{"description":"The name of this USB hardware mapping.\n","type":"string"}},"required":["comment","id","maps","name"],"type":"object"}},"proxmoxve:Network/getDNS:getDNS":{"description":"Retrieves the DNS configuration for a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst firstNode = proxmoxve.Network.getDNS({\n nodeName: \"first-node\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfirst_node = proxmoxve.Network.get_dns(node_name=\"first-node\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var firstNode = ProxmoxVE.Network.GetDNS.Invoke(new()\n {\n NodeName = \"first-node\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.GetDNS(ctx, \u0026network.GetDNSArgs{\n\t\t\tNodeName: \"first-node\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.NetworkFunctions;\nimport com.pulumi.proxmoxve.Network.inputs.GetDNSArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var firstNode = NetworkFunctions.getDNS(GetDNSArgs.builder()\n .nodeName(\"first-node\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n firstNode:\n fn::invoke:\n Function: proxmoxve:Network:getDNS\n Arguments:\n nodeName: first-node\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getDNS.\n","properties":{"nodeName":{"type":"string","description":"A node name.\n"}},"type":"object","required":["nodeName"]},"outputs":{"description":"A collection of values returned by getDNS.\n","properties":{"domain":{"description":"The DNS search domain.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"nodeName":{"type":"string"},"servers":{"description":"The DNS servers.\n","items":{"type":"string"},"type":"array"}},"required":["domain","nodeName","servers","id"],"type":"object"}},"proxmoxve:Network/getHosts:getHosts":{"description":"Retrieves all the host entries from a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst firstNodeHostEntries = proxmoxve.Network.getHosts({\n nodeName: \"first-node\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfirst_node_host_entries = proxmoxve.Network.get_hosts(node_name=\"first-node\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var firstNodeHostEntries = ProxmoxVE.Network.GetHosts.Invoke(new()\n {\n NodeName = \"first-node\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.GetHosts(ctx, \u0026network.GetHostsArgs{\n\t\t\tNodeName: \"first-node\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.NetworkFunctions;\nimport com.pulumi.proxmoxve.Network.inputs.GetHostsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var firstNodeHostEntries = NetworkFunctions.getHosts(GetHostsArgs.builder()\n .nodeName(\"first-node\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n firstNodeHostEntries:\n fn::invoke:\n Function: proxmoxve:Network:getHosts\n Arguments:\n nodeName: first-node\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getHosts.\n","properties":{"nodeName":{"type":"string","description":"A node name.\n"}},"type":"object","required":["nodeName"]},"outputs":{"description":"A collection of values returned by getHosts.\n","properties":{"addresses":{"description":"The IP addresses.\n","items":{"type":"string"},"type":"array"},"digest":{"description":"The SHA1 digest.\n","type":"string"},"entries":{"description":"The host entries (conversion of `addresses` and `hostnames` into\nobjects).\n","items":{"$ref":"#/types/proxmoxve:Network/getHostsEntry:getHostsEntry"},"type":"array"},"hostnames":{"description":"The hostnames associated with each of the IP addresses.\n","items":{"items":{"type":"string"},"type":"array"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"nodeName":{"type":"string"}},"required":["addresses","digest","entries","hostnames","nodeName","id"],"type":"object"}},"proxmoxve:Network/getTime:getTime":{"description":"Retrieves the current time for a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst firstNodeTime = proxmoxve.Network.getTime({\n nodeName: \"first-node\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfirst_node_time = proxmoxve.Network.get_time(node_name=\"first-node\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var firstNodeTime = ProxmoxVE.Network.GetTime.Invoke(new()\n {\n NodeName = \"first-node\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.GetTime(ctx, \u0026network.GetTimeArgs{\n\t\t\tNodeName: \"first-node\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.NetworkFunctions;\nimport com.pulumi.proxmoxve.Network.inputs.GetTimeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var firstNodeTime = NetworkFunctions.getTime(GetTimeArgs.builder()\n .nodeName(\"first-node\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n firstNodeTime:\n fn::invoke:\n Function: proxmoxve:Network:getTime\n Arguments:\n nodeName: first-node\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getTime.\n","properties":{"nodeName":{"type":"string","description":"A node name.\n"}},"type":"object","required":["nodeName"]},"outputs":{"description":"A collection of values returned by getTime.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"localTime":{"description":"The node's local time.\n","type":"string"},"nodeName":{"type":"string"},"timeZone":{"description":"The node's time zone.\n","type":"string"},"utcTime":{"description":"The node's local time formatted as UTC.\n","type":"string"}},"required":["localTime","nodeName","timeZone","utcTime","id"],"type":"object"}},"proxmoxve:Network/getVersion:getVersion":{"description":"Retrieves API version details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Network.getVersion({});\nexport const dataProxmoxVirtualEnvironmentVersion = {\n release: example.then(example =\u003e example.release),\n repository_id: example.then(example =\u003e example.repositoryId),\n version: example.then(example =\u003e example.version),\n};\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Network.get_version()\npulumi.export(\"dataProxmoxVirtualEnvironmentVersion\", {\n \"release\": example.release,\n \"repository_id\": example.repository_id,\n \"version\": example.version,\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Network.GetVersion.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentVersion\"] = \n {\n { \"release\", example.Apply(getVersionResult =\u003e getVersionResult.Release) },\n { \"repository_id\", 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/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Network.GetVersion(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentVersion\", pulumi.StringMap{\n\t\t\t\"release\": example.Release,\n\t\t\t\"repository_id\": example.RepositoryId,\n\t\t\t\"version\": example.Version,\n\t\t})\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.NetworkFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = NetworkFunctions.getVersion();\n\n ctx.export(\"dataProxmoxVirtualEnvironmentVersion\", %!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Network:getVersion\n Arguments: {}\noutputs:\n dataProxmoxVirtualEnvironmentVersion:\n release: ${example.release}\n repository_id: ${example.repositoryId}\n version: ${example.version}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getVersion.\n","properties":{"id":{"description":"Placeholder identifier attribute.\n","type":"string"},"release":{"description":"The current Proxmox VE point release in `x.y` format.\n","type":"string"},"repositoryId":{"description":"The short git revision from which this version was build.\n","type":"string"},"version":{"description":"The full pve-manager package version of this node.\n","type":"string"}},"required":["id","release","repositoryId","version"],"type":"object"}},"proxmoxve:Permission/getGroup:getGroup":{"description":"Retrieves information about a specific user group.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst operationsTeam = proxmoxve.Permission.getGroup({\n groupId: \"operations-team\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_team = proxmoxve.Permission.get_group(group_id=\"operations-team\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsTeam = ProxmoxVE.Permission.GetGroup.Invoke(new()\n {\n GroupId = \"operations-team\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetGroup(ctx, \u0026permission.GetGroupArgs{\n\t\t\tGroupId: \"operations-team\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport com.pulumi.proxmoxve.Permission.inputs.GetGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var operationsTeam = PermissionFunctions.getGroup(GetGroupArgs.builder()\n .groupId(\"operations-team\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n operationsTeam:\n fn::invoke:\n Function: proxmoxve:Permission:getGroup\n Arguments:\n groupId: operations-team\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getGroup.\n","properties":{"groupId":{"type":"string","description":"The group identifier.\n"}},"type":"object","required":["groupId"]},"outputs":{"description":"A collection of values returned by getGroup.\n","properties":{"acls":{"description":"The access control list.\n","items":{"$ref":"#/types/proxmoxve:Permission/getGroupAcl:getGroupAcl"},"type":"array"},"comment":{"description":"The group comment.\n","type":"string"},"groupId":{"type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"members":{"description":"The group members as a list with `username@realm` entries.\n","items":{"type":"string"},"type":"array"}},"required":["acls","comment","groupId","members","id"],"type":"object"}},"proxmoxve:Permission/getGroups:getGroups":{"description":"Retrieves basic information about all available user groups.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst availableGroups = proxmoxve.Permission.getGroups({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\navailable_groups = proxmoxve.Permission.get_groups()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var availableGroups = ProxmoxVE.Permission.GetGroups.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetGroups(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var availableGroups = PermissionFunctions.getGroups();\n\n }\n}\n```\n```yaml\nvariables:\n availableGroups:\n fn::invoke:\n Function: proxmoxve:Permission:getGroups\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getGroups.\n","properties":{"comments":{"description":"The group comments.\n","items":{"type":"string"},"type":"array"},"groupIds":{"description":"The group identifiers.\n","items":{"type":"string"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"}},"required":["comments","groupIds","id"],"type":"object"}},"proxmoxve:Permission/getPool:getPool":{"description":"Retrieves information about a specific resource pool.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst operationsPool = proxmoxve.Permission.getPool({\n poolId: \"operations\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_pool = proxmoxve.Permission.get_pool(pool_id=\"operations\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsPool = ProxmoxVE.Permission.GetPool.Invoke(new()\n {\n PoolId = \"operations\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetPool(ctx, \u0026permission.GetPoolArgs{\n\t\t\tPoolId: \"operations\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport com.pulumi.proxmoxve.Permission.inputs.GetPoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var operationsPool = PermissionFunctions.getPool(GetPoolArgs.builder()\n .poolId(\"operations\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n operationsPool:\n fn::invoke:\n Function: proxmoxve:Permission:getPool\n Arguments:\n poolId: operations\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getPool.\n","properties":{"poolId":{"type":"string","description":"The pool identifier.\n"}},"type":"object","required":["poolId"]},"outputs":{"description":"A collection of values returned by getPool.\n","properties":{"comment":{"description":"The pool comment.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"members":{"description":"The pool members.\n","items":{"$ref":"#/types/proxmoxve:Permission/getPoolMember:getPoolMember"},"type":"array"},"poolId":{"type":"string"}},"required":["comment","members","poolId","id"],"type":"object"}},"proxmoxve:Permission/getPools:getPools":{"description":"Retrieves the identifiers for all the available resource pools.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst availablePools = proxmoxve.Permission.getPools({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\navailable_pools = proxmoxve.Permission.get_pools()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var availablePools = ProxmoxVE.Permission.GetPools.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetPools(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var availablePools = PermissionFunctions.getPools();\n\n }\n}\n```\n```yaml\nvariables:\n availablePools:\n fn::invoke:\n Function: proxmoxve:Permission:getPools\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getPools.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"poolIds":{"description":"The pool identifiers.\n","items":{"type":"string"},"type":"array"}},"required":["poolIds","id"],"type":"object"}},"proxmoxve:Permission/getRole:getRole":{"description":"Retrieves information about a specific role.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst operationsRole = proxmoxve.Permission.getRole({\n roleId: \"operations\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_role = proxmoxve.Permission.get_role(role_id=\"operations\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsRole = ProxmoxVE.Permission.GetRole.Invoke(new()\n {\n RoleId = \"operations\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetRole(ctx, \u0026permission.GetRoleArgs{\n\t\t\tRoleId: \"operations\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport com.pulumi.proxmoxve.Permission.inputs.GetRoleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var operationsRole = PermissionFunctions.getRole(GetRoleArgs.builder()\n .roleId(\"operations\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n operationsRole:\n fn::invoke:\n Function: proxmoxve:Permission:getRole\n Arguments:\n roleId: operations\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getRole.\n","properties":{"roleId":{"type":"string","description":"The role identifier.\n"}},"type":"object","required":["roleId"]},"outputs":{"description":"A collection of values returned by getRole.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"privileges":{"description":"The role privileges\n","items":{"type":"string"},"type":"array"},"roleId":{"type":"string"}},"required":["privileges","roleId","id"],"type":"object"}},"proxmoxve:Permission/getRoles:getRoles":{"description":"Retrieves information about all the available roles.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst availableRoles = proxmoxve.Permission.getRoles({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\navailable_roles = proxmoxve.Permission.get_roles()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var availableRoles = ProxmoxVE.Permission.GetRoles.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetRoles(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var availableRoles = PermissionFunctions.getRoles();\n\n }\n}\n```\n```yaml\nvariables:\n availableRoles:\n fn::invoke:\n Function: proxmoxve:Permission:getRoles\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getRoles.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"privileges":{"description":"The role privileges.\n","items":{"items":{"type":"string"},"type":"array"},"type":"array"},"roleIds":{"description":"The role identifiers.\n","items":{"type":"string"},"type":"array"},"specials":{"description":"Whether the role is special (built-in).\n","items":{"type":"boolean"},"type":"array"}},"required":["privileges","roleIds","specials","id"],"type":"object"}},"proxmoxve:Permission/getUser:getUser":{"description":"Retrieves information about a specific user.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst operationsUser = proxmoxve.Permission.getUser({\n userId: \"operation@pam\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_user = proxmoxve.Permission.get_user(user_id=\"operation@pam\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsUser = ProxmoxVE.Permission.GetUser.Invoke(new()\n {\n UserId = \"operation@pam\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetUser(ctx, \u0026permission.GetUserArgs{\n\t\t\tUserId: \"operation@pam\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport com.pulumi.proxmoxve.Permission.inputs.GetUserArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var operationsUser = PermissionFunctions.getUser(GetUserArgs.builder()\n .userId(\"operation@pam\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n operationsUser:\n fn::invoke:\n Function: proxmoxve:Permission:getUser\n Arguments:\n userId: operation@pam\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getUser.\n","properties":{"userId":{"type":"string","description":"The user identifier.\n"}},"type":"object","required":["userId"]},"outputs":{"description":"A collection of values returned by getUser.\n","properties":{"acls":{"description":"The access control list.\n","items":{"$ref":"#/types/proxmoxve:Permission/getUserAcl:getUserAcl"},"type":"array"},"comment":{"description":"The user comment.\n","type":"string"},"email":{"description":"The user's email address.\n","type":"string"},"enabled":{"description":"Whether the user account is enabled.\n","type":"boolean"},"expirationDate":{"description":"The user account's expiration date (RFC 3339).\n","type":"string"},"firstName":{"description":"The user's first name.\n","type":"string"},"groups":{"description":"The user's groups.\n","items":{"type":"string"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"keys":{"description":"The user's keys.\n","type":"string"},"lastName":{"description":"The user's last name.\n","type":"string"},"userId":{"type":"string"}},"required":["acls","comment","email","enabled","expirationDate","firstName","groups","keys","lastName","userId","id"],"type":"object"}},"proxmoxve:Permission/getUsers:getUsers":{"description":"Retrieves information about all the available users.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst availableUsers = proxmoxve.Permission.getUsers({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\navailable_users = proxmoxve.Permission.get_users()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var availableUsers = ProxmoxVE.Permission.GetUsers.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetUsers(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var availableUsers = PermissionFunctions.getUsers();\n\n }\n}\n```\n```yaml\nvariables:\n availableUsers:\n fn::invoke:\n Function: proxmoxve:Permission:getUsers\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getUsers.\n","properties":{"comments":{"description":"The user comments.\n","items":{"type":"string"},"type":"array"},"emails":{"description":"The users' email addresses.\n","items":{"type":"string"},"type":"array"},"enableds":{"description":"Whether a user account is enabled.\n","items":{"type":"boolean"},"type":"array"},"expirationDates":{"description":"The user accounts' expiration dates (RFC 3339).\n","items":{"type":"string"},"type":"array"},"firstNames":{"description":"The users' first names.\n","items":{"type":"string"},"type":"array"},"groups":{"description":"The users' groups.\n","items":{"items":{"type":"string"},"type":"array"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","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:Storage/getDatastores:getDatastores":{"description":"Retrieves information about all the datastores available to 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 \"@pulumi/proxmoxve\";\n\nconst firstNode = proxmoxve.Storage.getDatastores({\n nodeName: \"first-node\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfirst_node = proxmoxve.Storage.get_datastores(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.Storage.GetDatastores.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/v6/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.GetDatastores(ctx, \u0026storage.GetDatastoresArgs{\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.Storage.StorageFunctions;\nimport com.pulumi.proxmoxve.Storage.inputs.GetDatastoresArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 = StorageFunctions.getDatastores(GetDatastoresArgs.builder()\n .nodeName(\"first-node\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n firstNode:\n fn::invoke:\n Function: proxmoxve:Storage:getDatastores\n Arguments:\n nodeName: first-node\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getDatastores.\n","properties":{"nodeName":{"type":"string","description":"A node name.\n"}},"type":"object","required":["nodeName"]},"outputs":{"description":"A collection of values returned by getDatastores.\n","properties":{"actives":{"description":"Whether the datastore is active.\n","items":{"type":"boolean"},"type":"array"},"contentTypes":{"description":"The allowed content types.\n","items":{"items":{"type":"string"},"type":"array"},"type":"array"},"datastoreIds":{"description":"The datastore identifiers.\n","items":{"type":"string"},"type":"array"},"enableds":{"description":"Whether the datastore is enabled.\n","items":{"type":"boolean"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"nodeName":{"type":"string"},"shareds":{"description":"Whether the datastore is shared.\n","items":{"type":"boolean"},"type":"array"},"spaceAvailables":{"description":"The available space in bytes.\n","items":{"type":"integer"},"type":"array"},"spaceTotals":{"description":"The total space in bytes.\n","items":{"type":"integer"},"type":"array"},"spaceUseds":{"description":"The used space in bytes.\n","items":{"type":"integer"},"type":"array"},"types":{"description":"The storage types.\n","items":{"type":"string"},"type":"array"}},"required":["actives","contentTypes","datastoreIds","enableds","nodeName","shareds","spaceAvailables","spaceTotals","spaceUseds","types","id"],"type":"object"}},"proxmoxve:VM/getVirtualMachine:getVirtualMachine":{"description":"Retrieves information about a specific VM.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst testVm = proxmoxve.VM.getVirtualMachine({\n nodeName: \"test\",\n vmId: 100,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\ntest_vm = proxmoxve.VM.get_virtual_machine(node_name=\"test\",\n vm_id=100)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testVm = ProxmoxVE.VM.GetVirtualMachine.Invoke(new()\n {\n NodeName = \"test\",\n VmId = 100,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/VM\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := VM.GetVirtualMachine(ctx, \u0026vm.GetVirtualMachineArgs{\n\t\t\tNodeName: \"test\",\n\t\t\tVmId: 100,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.VM.VMFunctions;\nimport com.pulumi.proxmoxve.VM.inputs.GetVirtualMachineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var testVm = VMFunctions.getVirtualMachine(GetVirtualMachineArgs.builder()\n .nodeName(\"test\")\n .vmId(100)\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n testVm:\n fn::invoke:\n Function: proxmoxve:VM:getVirtualMachine\n Arguments:\n nodeName: test\n vmId: 100\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getVirtualMachine.\n","properties":{"nodeName":{"type":"string","description":"The node name.\n"},"status":{"type":"string","description":"Status of the VM\n"},"template":{"type":"boolean","description":"Is VM a template (true) or a regular VM (false)\n"},"vmId":{"type":"integer","description":"The VM identifier.\n"}},"type":"object","required":["nodeName","vmId"]},"outputs":{"description":"A collection of values returned by getVirtualMachine.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"name":{"description":"The virtual machine name.\n","type":"string"},"nodeName":{"type":"string"},"status":{"description":"Status of the VM\n","type":"string"},"tags":{"description":"A list of tags of the VM.\n","items":{"type":"string"},"type":"array"},"template":{"description":"Is VM a template (true) or a regular VM (false)\n","type":"boolean"},"vmId":{"type":"integer"}},"required":["name","nodeName","tags","vmId","id"],"type":"object"}},"proxmoxve:VM/getVirtualMachines:getVirtualMachines":{"description":"Retrieves information about all VMs in the Proxmox cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst ubuntuVms = proxmoxve.VM.getVirtualMachines({\n tags: [\"ubuntu\"],\n});\nconst ubuntuTemplates = proxmoxve.VM.getVirtualMachines({\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 tags: [\n \"template\",\n \"latest\",\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nubuntu_vms = proxmoxve.VM.get_virtual_machines(tags=[\"ubuntu\"])\nubuntu_templates = proxmoxve.VM.get_virtual_machines(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 tags=[\n \"template\",\n \"latest\",\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ubuntuVms = ProxmoxVE.VM.GetVirtualMachines.Invoke(new()\n {\n Tags = new[]\n {\n \"ubuntu\",\n },\n });\n\n var ubuntuTemplates = ProxmoxVE.VM.GetVirtualMachines.Invoke(new()\n {\n Filters = new[]\n {\n new ProxmoxVE.VM.Inputs.GetVirtualMachinesFilterInputArgs\n {\n Name = \"template\",\n Values = new[]\n {\n \"true\",\n },\n },\n new ProxmoxVE.VM.Inputs.GetVirtualMachinesFilterInputArgs\n {\n Name = \"status\",\n Values = new[]\n {\n \"stopped\",\n },\n },\n new ProxmoxVE.VM.Inputs.GetVirtualMachinesFilterInputArgs\n {\n Name = \"name\",\n Regex = true,\n Values = new[]\n {\n \"^ubuntu-20.*$\",\n },\n },\n new ProxmoxVE.VM.Inputs.GetVirtualMachinesFilterInputArgs\n {\n Name = \"node_name\",\n Regex = true,\n Values = new[]\n {\n \"node_us_[1-3]\",\n \"node_eu_[1-3]\",\n },\n },\n },\n Tags = new[]\n {\n \"template\",\n \"latest\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/VM\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := VM.GetVirtualMachines(ctx, \u0026vm.GetVirtualMachinesArgs{\n\t\t\tTags: []string{\n\t\t\t\t\"ubuntu\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = VM.GetVirtualMachines(ctx, \u0026vm.GetVirtualMachinesArgs{\n\t\t\tFilters: []vm.GetVirtualMachinesFilter{\n\t\t\t\t{\n\t\t\t\t\tName: \"template\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"true\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName: \"status\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"stopped\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName: \"name\",\n\t\t\t\t\tRegex: pulumi.BoolRef(true),\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"^ubuntu-20.*$\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName: \"node_name\",\n\t\t\t\t\tRegex: pulumi.BoolRef(true),\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"node_us_[1-3]\",\n\t\t\t\t\t\t\"node_eu_[1-3]\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTags: []string{\n\t\t\t\t\"template\",\n\t\t\t\t\"latest\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.VM.VMFunctions;\nimport com.pulumi.proxmoxve.VM.inputs.GetVirtualMachinesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var ubuntuVms = VMFunctions.getVirtualMachines(GetVirtualMachinesArgs.builder()\n .tags(\"ubuntu\")\n .build());\n\n final var ubuntuTemplates = VMFunctions.getVirtualMachines(GetVirtualMachinesArgs.builder()\n .filters( \n GetVirtualMachinesFilterArgs.builder()\n .name(\"template\")\n .values(true)\n .build(),\n GetVirtualMachinesFilterArgs.builder()\n .name(\"status\")\n .values(\"stopped\")\n .build(),\n GetVirtualMachinesFilterArgs.builder()\n .name(\"name\")\n .regex(true)\n .values(\"^ubuntu-20.*$\")\n .build(),\n GetVirtualMachinesFilterArgs.builder()\n .name(\"node_name\")\n .regex(true)\n .values( \n \"node_us_[1-3]\",\n \"node_eu_[1-3]\")\n .build())\n .tags( \n \"template\",\n \"latest\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n ubuntuVms:\n fn::invoke:\n Function: proxmoxve:VM:getVirtualMachines\n Arguments:\n tags:\n - ubuntu\n ubuntuTemplates:\n fn::invoke:\n Function: proxmoxve:VM:getVirtualMachines\n Arguments:\n 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 tags:\n - template\n - latest\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getVirtualMachines.\n","properties":{"filters":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/getVirtualMachinesFilter:getVirtualMachinesFilter"},"description":"Filter blocks. The VM must satisfy all filter blocks to be included in the result.\n"},"nodeName":{"type":"string","description":"The node name. All cluster nodes will be queried in case this is omitted\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags to filter the VMs. The VM must have all\nthe tags to be included in the result.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getVirtualMachines.\n","properties":{"filters":{"items":{"$ref":"#/types/proxmoxve:VM/getVirtualMachinesFilter:getVirtualMachinesFilter"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"nodeName":{"description":"The node name.\n","type":"string"},"tags":{"description":"A list of tags of the VM.\n","items":{"type":"string"},"type":"array"},"vms":{"description":"The VMs list.\n","items":{"$ref":"#/types/proxmoxve:VM/getVirtualMachinesVm:getVirtualMachinesVm"},"type":"array"}},"required":["vms","id"],"type":"object"}},"proxmoxve:index/getNode:getNode":{"description":"Retrieves information about node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst node = proxmoxve.getNode({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nnode = proxmoxve.get_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 node = ProxmoxVE.GetNode.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/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.GetNode(ctx, \u0026proxmoxve.GetNodeArgs{}, 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.GetNodeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var node = ProxmoxveFunctions.getNode();\n\n }\n}\n```\n```yaml\nvariables:\n node:\n fn::invoke:\n Function: proxmoxve:getNode\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getNode.\n","properties":{"nodeName":{"type":"string","description":"The node name.\n"}},"type":"object","required":["nodeName"]},"outputs":{"description":"A collection of values returned by getNode.\n","properties":{"cpuCount":{"description":"The CPU count on the node.\n","type":"integer"},"cpuModel":{"description":"The CPU model on the node.\n","type":"string"},"cpuSockets":{"description":"The CPU utilization on the node.\n","type":"integer"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"memoryAvailable":{"description":"The memory available on the node.\n","type":"integer"},"memoryTotal":{"description":"The total memory on the node.\n","type":"integer"},"memoryUsed":{"description":"The memory used on the node.\n","type":"integer"},"nodeName":{"type":"string"},"uptime":{"description":"The uptime in seconds on the node.\n","type":"integer"}},"required":["cpuCount","cpuModel","cpuSockets","memoryAvailable","memoryTotal","memoryUsed","nodeName","uptime","id"],"type":"object"}},"proxmoxve:index/getVm2:getVm2":{"description":"!\u003e **DO NOT USE**\nThis is an experimental implementation of a Proxmox VM datasource using Plugin Framework.\n","inputs":{"description":"A collection of arguments for invoking getVm2.\n","properties":{"clone":{"$ref":"#/types/proxmoxve:index/getVm2Clone:getVm2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:index/getVm2Cpu:getVm2Cpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description of the VM.\n"},"id":{"type":"integer","description":"The unique identifier of the VM in the Proxmox cluster.\n"},"name":{"type":"string","description":"The name of the VM.\n"},"nodeName":{"type":"string","description":"The name of the node where the VM is provisioned.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags assigned to the VM.\n"},"template":{"type":"boolean","description":"Whether the VM is a template.\n"},"timeouts":{"$ref":"#/types/proxmoxve:index/getVm2Timeouts:getVm2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:index/getVm2Vga:getVm2Vga","description":"The VGA configuration.\n"}},"type":"object","required":["id","nodeName"]},"outputs":{"description":"A collection of values returned by getVm2.\n","properties":{"clone":{"$ref":"#/types/proxmoxve:index/getVm2Clone:getVm2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:index/getVm2Cpu:getVm2Cpu","description":"The CPU configuration.\n"},"description":{"description":"The description of the VM.\n","type":"string"},"id":{"description":"The unique identifier of the VM in the Proxmox cluster.\n","type":"integer"},"name":{"description":"The name of the VM.\n","type":"string"},"nodeName":{"description":"The name of the node where the VM is provisioned.\n","type":"string"},"tags":{"description":"The tags assigned to the VM.\n","items":{"type":"string"},"type":"array"},"template":{"description":"Whether the VM is a template.\n","type":"boolean"},"timeouts":{"$ref":"#/types/proxmoxve:index/getVm2Timeouts:getVm2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:index/getVm2Vga:getVm2Vga","description":"The VGA configuration.\n"}},"required":["cpu","id","nodeName","tags","vga"],"type":"object"}}}} \ No newline at end of file +{"name":"proxmoxve","displayName":"Proxmox Virtual Environment (Proxmox VE)","version":"6.16.0-alpha.1732164157+eea5eaed.dirty","description":"A Pulumi package for creating and managing Proxmox Virtual Environment cloud resources.","keywords":["pulumi","proxmox","proxmoxve"],"homepage":"https://github.com/muhlba91/pulumi-proxmoxve","license":"Apache-2.0","attribution":"This Pulumi package is based on the [`proxmox` Terraform Provider](https://github.com/bpg/terraform-provider-proxmox).","repository":"https://github.com/muhlba91/pulumi-proxmoxve","logoUrl":"https://raw.githubusercontent.com/muhlba91/pulumi-proxmoxve/main/assets/proxmox-logo.png","pluginDownloadURL":"github://api.github.com/muhlba91/pulumi-proxmoxve","publisher":"Daniel Muehlbachler-Pietrzykowski","meta":{"moduleFormat":"(.*)(?:/[^/]*)"},"language":{"csharp":{"packageReferences":{"Pulumi":"3.*"},"namespaces":{"proxmoxve":"ProxmoxVE"},"compatibility":"tfbridge20"},"go":{"importBasePath":"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve","generateResourceContainerTypes":true,"generateExtraInputTypes":true},"java":{"basePackage":"io.muehlbachler.pulumi","buildFiles":"","gradleNexusPublishPluginVersion":"","gradleTest":""},"nodejs":{"packageName":"@muhlba91/pulumi-proxmoxve","packageDescription":"A Pulumi package for creating and managing Proxmox Virtual Environment cloud resources.","readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/bpg/terraform-provider-proxmox)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-proxmoxve` repo](https://github.com/muhlba91/pulumi-proxmoxve/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-proxmox` repo](https://github.com/bpg/terraform-provider-proxmox/issues).","dependencies":{"@pulumi/pulumi":"^3.0.0"},"devDependencies":{"@types/mime":"^2.0.0","@types/node":"^10.0.0"},"compatibility":"tfbridge20","disableUnionOutputTypes":true},"python":{"packageName":"pulumi_proxmoxve","requires":{"pulumi":"\u003e=3.0.0,\u003c4.0.0"},"readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/bpg/terraform-provider-proxmox)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-proxmoxve` repo](https://github.com/muhlba91/pulumi-proxmoxve/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-proxmox` repo](https://github.com/bpg/terraform-provider-proxmox/issues).","compatibility":"tfbridge20","pyproject":{}}},"config":{"variables":{"apiToken":{"type":"string","description":"The API token for the Proxmox VE API.\n","secret":true},"authTicket":{"type":"string","description":"The pre-authenticated Ticket for the Proxmox VE API.\n","secret":true},"csrfPreventionToken":{"type":"string","description":"The pre-authenticated CSRF Prevention Token for the Proxmox VE API.\n","secret":true},"endpoint":{"type":"string","description":"The endpoint for the Proxmox VE API.\n"},"insecure":{"type":"boolean","description":"Whether to skip the TLS verification step.\n"},"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`.\n"},"otp":{"type":"string","description":"The one-time password for the Proxmox VE API.\n","deprecationMessage":"The `otp` attribute is deprecated and will be removed in a future release. Please use the `api_token` attribute instead."},"password":{"type":"string","description":"The password for the Proxmox VE API.\n","secret":true},"randomVmIdEnd":{"type":"integer","description":"The ending number for random VM / Container IDs.\n"},"randomVmIdStart":{"type":"integer","description":"The starting number for random VM / Container IDs.\n"},"randomVmIds":{"type":"boolean","description":"Whether to generate random VM / Container IDs.\n"},"ssh":{"$ref":"#/types/proxmoxve:config/ssh:ssh","description":"The SSH configuration for the Proxmox nodes.\n"},"tmpDir":{"type":"string","description":"The alternative temporary directory.\n"},"username":{"type":"string","description":"The username for the Proxmox VE API.\n"}}},"types":{"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 `valid`, `deactivated` or `revoked`.\n"}},"type":"object","required":["contacts","createdAt","status"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Acme/getPluginsPlugin:getPluginsPlugin":{"properties":{"api":{"type":"string","description":"API plugin name.\n"},"data":{"type":"object","additionalProperties":{"type":"string"},"description":"DNS plugin data.\n"},"digest":{"type":"string","description":"Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.\n"},"plugin":{"type":"string","description":"ACME Plugin ID name.\n"},"type":{"type":"string","description":"ACME challenge type (dns, standalone).\n"},"validationDelay":{"type":"integer","description":"Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records (0 - 172800).\n"}},"type":"object","required":["api","data","digest","plugin","type","validationDelay"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:CT/ContainerClone:ContainerClone":{"properties":{"datastoreId":{"type":"string","description":"The identifier for the target datastore.\n","willReplaceOnChanges":true},"nodeName":{"type":"string","description":"The name of the source node (leave blank, if\nequal to the `node_name` argument).\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"The identifier for the source container.\n","willReplaceOnChanges":true}},"type":"object","required":["vmId"]},"proxmoxve:CT/ContainerConsole:ContainerConsole":{"properties":{"enabled":{"type":"boolean","description":"Whether to enable the console device (defaults\nto `true`).\n"},"ttyCount":{"type":"integer","description":"The number of available TTY (defaults to `2`).\n"},"type":{"type":"string","description":"The console mode (defaults to `tty`).\n"}},"type":"object"},"proxmoxve:CT/ContainerCpu:ContainerCpu":{"properties":{"architecture":{"type":"string","description":"The CPU architecture (defaults to `amd64`).\n"},"cores":{"type":"integer","description":"The number of CPU cores (defaults to `1`).\n"},"units":{"type":"integer","description":"The CPU units (defaults to `1024`).\n"}},"type":"object"},"proxmoxve:CT/ContainerDisk:ContainerDisk":{"properties":{"datastoreId":{"type":"string","description":"The identifier for the datastore to create the\ndisk in (defaults to `local`).\n","willReplaceOnChanges":true},"size":{"type":"integer","description":"The size of the root filesystem in gigabytes (defaults\nto `4`). Requires `datastore_id` to be set.\n","willReplaceOnChanges":true}},"type":"object"},"proxmoxve:CT/ContainerFeatures:ContainerFeatures":{"properties":{"fuse":{"type":"boolean","description":"Whether the container supports FUSE mounts (defaults\nto `false`)\n"},"keyctl":{"type":"boolean","description":"Whether the container supports `keyctl()` system\ncall (defaults to `false`)\n"},"mounts":{"type":"array","items":{"type":"string"},"description":"List of allowed mount types (`cifs` or `nfs`)\n"},"nesting":{"type":"boolean","description":"Whether the container is nested (defaults\nto `false`)\n"}},"type":"object"},"proxmoxve:CT/ContainerInitialization:ContainerInitialization":{"properties":{"dns":{"$ref":"#/types/proxmoxve:CT/ContainerInitializationDns:ContainerInitializationDns","description":"The DNS configuration.\n"},"hostname":{"type":"string","description":"The hostname.\n"},"ipConfigs":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerInitializationIpConfig:ContainerInitializationIpConfig"},"description":"The IP configuration (one block per network\ndevice).\n"},"userAccount":{"$ref":"#/types/proxmoxve:CT/ContainerInitializationUserAccount:ContainerInitializationUserAccount","description":"The user account configuration.\n","willReplaceOnChanges":true}},"type":"object"},"proxmoxve:CT/ContainerInitializationDns:ContainerInitializationDns":{"properties":{"domain":{"type":"string","description":"The DNS search domain.\n"},"server":{"type":"string","description":"The DNS server. The `server` attribute is\ndeprecated and will be removed in a future release. Please use\nthe `servers` attribute instead.\n","deprecationMessage":"The `server` attribute is deprecated and will be removed in a future release. Please use the `servers` attribute instead."},"servers":{"type":"array","items":{"type":"string"},"description":"The list of DNS servers.\n"}},"type":"object"},"proxmoxve:CT/ContainerInitializationIpConfig:ContainerInitializationIpConfig":{"properties":{"ipv4":{"$ref":"#/types/proxmoxve:CT/ContainerInitializationIpConfigIpv4:ContainerInitializationIpConfigIpv4","description":"The IPv4 configuration.\n"},"ipv6":{"$ref":"#/types/proxmoxve:CT/ContainerInitializationIpConfigIpv6:ContainerInitializationIpConfigIpv6","description":"The IPv4 configuration.\n"}},"type":"object"},"proxmoxve:CT/ContainerInitializationIpConfigIpv4:ContainerInitializationIpConfigIpv4":{"properties":{"address":{"type":"string","description":"The IPv4 address (use `dhcp` for auto-discovery).\n"},"gateway":{"type":"string","description":"The IPv4 gateway (must be omitted\nwhen `dhcp` is used as the address).\n"}},"type":"object"},"proxmoxve:CT/ContainerInitializationIpConfigIpv6:ContainerInitializationIpConfigIpv6":{"properties":{"address":{"type":"string","description":"The IPv6 address (use `dhcp` for auto-discovery).\n"},"gateway":{"type":"string","description":"The IPv6 gateway (must be omitted\nwhen `dhcp` is used as the address).\n"}},"type":"object"},"proxmoxve:CT/ContainerInitializationUserAccount:ContainerInitializationUserAccount":{"properties":{"keys":{"type":"array","items":{"type":"string"},"description":"The SSH keys for the root account.\n","willReplaceOnChanges":true},"password":{"type":"string","description":"The password for the root account.\n","secret":true,"willReplaceOnChanges":true}},"type":"object"},"proxmoxve:CT/ContainerMemory:ContainerMemory":{"properties":{"dedicated":{"type":"integer","description":"The dedicated memory in megabytes (defaults\nto `512`).\n"},"swap":{"type":"integer","description":"The swap size in megabytes (defaults to `0`).\n"}},"type":"object"},"proxmoxve:CT/ContainerMountPoint:ContainerMountPoint":{"properties":{"acl":{"type":"boolean","description":"Explicitly enable or disable ACL support.\n"},"backup":{"type":"boolean","description":"Whether to include the mount point in backups (only\nused for volume mount points, defaults to `false`).\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"},"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"},"volume":{"type":"string","description":"Volume, device or directory to mount into the\ncontainer.\n"}},"type":"object","required":["path","volume"]},"proxmoxve:CT/ContainerNetworkInterface:ContainerNetworkInterface":{"properties":{"bridge":{"type":"string","description":"The name of the network bridge (defaults\nto `vmbr0`).\n"},"enabled":{"type":"boolean","description":"Whether to enable the network device (defaults\nto `true`).\n"},"firewall":{"type":"boolean","description":"Whether this interface's firewall rules should be\nused (defaults to `false`).\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"]},"proxmoxve:CT/ContainerOperatingSystem:ContainerOperatingSystem":{"properties":{"templateFileId":{"type":"string","description":"The identifier for an OS template file.\nThe ID format is `\u003cdatastore_id\u003e:\u003ccontent_type\u003e/\u003cfile_name\u003e`, for example `local:iso/jammy-server-cloudimg-amd64.tar.gz`.\nCan be also taken from `proxmoxve.Download.File` resource, or from the output of `pvesm list \u003cstorage\u003e`.\n","willReplaceOnChanges":true},"type":{"type":"string","description":"The type (defaults to `unmanaged`).\n"}},"type":"object","required":["templateFileId"]},"proxmoxve:CT/ContainerStartup:ContainerStartup":{"properties":{"downDelay":{"type":"integer","description":"A non-negative number defining the delay in\nseconds before the next container is shut down.\n"},"order":{"type":"integer","description":"A non-negative number defining the general startup\norder.\n"},"upDelay":{"type":"integer","description":"A non-negative number defining the delay in\nseconds before the next container is started.\n"}},"type":"object"},"proxmoxve: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 `always` | `never`.\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 `auto` | `always` | `never`.\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 `always` | `never`.\n"},"replicationTarget":{"type":"string","description":"Cluster-wide notification settings for the replication target.\n"}},"type":"object"},"proxmoxve:Hardware/getMappingsCheck:getMappingsCheck":{"properties":{"mappingId":{"type":"string","description":"The corresponding hardware mapping ID of the node check diagnostic entry.\n"},"message":{"type":"string","description":"The message of the node check diagnostic entry.\n"},"severity":{"type":"string","description":"The severity of the node check diagnostic entry.\n"}},"type":"object","required":["mappingId","message","severity"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Hardware/mapping/PciMap:PciMap":{"properties":{"comment":{"type":"string","description":"The comment of the mapped PCI device.\n"},"id":{"type":"string","description":"The ID of the map.\n"},"iommuGroup":{"type":"integer","description":"The IOMMU group of the map. Not mandatory for the Proxmox VE API call, but causes a PCI hardware mapping to be incomplete when not set\n"},"node":{"type":"string","description":"The node name of the map.\n"},"path":{"type":"string","description":"The path of the map.\n"},"subsystemId":{"type":"string","description":"The subsystem ID group of the map. Not mandatory for the Proxmox VE API call, but causes a PCI hardware mapping to be incomplete when not set\n"}},"type":"object","required":["id","node","path"]},"proxmoxve:Hardware/mapping/UsbMap:UsbMap":{"properties":{"comment":{"type":"string","description":"The comment of the mapped USB device.\n"},"id":{"type":"string","description":"The ID of the map.\n"},"node":{"type":"string","description":"The node name of the map.\n"},"path":{"type":"string","description":"The path of the map. For hardware mappings of type USB the path is optional and indicates that the device is mapped through the device ID instead of ports.\n"}},"type":"object","required":["id","node"]},"proxmoxve:Hardware/mapping/getPciMap:getPciMap":{"properties":{"comment":{"type":"string","description":"The comment of the mapped PCI device.\n"},"id":{"type":"string","description":"The ID attribute of the map.\n"},"iommuGroup":{"type":"integer","description":"The IOMMU group attribute of the map.\n"},"node":{"type":"string","description":"The node name attribute of the map.\n"},"path":{"type":"string","description":"The path attribute of the map.\n"},"subsystemId":{"type":"string","description":"The subsystem ID attribute of the map.Not mandatory for the Proxmox VE API call, but causes a PCI hardware mapping to be incomplete when not set.\n"}},"type":"object","required":["comment","id","iommuGroup","node","path","subsystemId"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Hardware/mapping/getUsbMap:getUsbMap":{"properties":{"comment":{"type":"string","description":"The comment of the mapped USB device.\n"},"id":{"type":"string","description":"The ID attribute of the map.\n"},"node":{"type":"string","description":"The node name attribute of the map.\n"},"path":{"type":"string","description":"The path attribute of the map.\n"}},"type":"object","required":["comment","id","node","path"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Network/FirewallIPSetCidr:FirewallIPSetCidr":{"properties":{"comment":{"type":"string","description":"Arbitrary string annotation.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"Network/IP specification in CIDR format.\n","willReplaceOnChanges":true},"nomatch":{"type":"boolean","description":"Entries marked as `nomatch` are skipped as if those\nwere not added to the set.\n","willReplaceOnChanges":true}},"type":"object","required":["name"]},"proxmoxve:Network/FirewallLogRatelimit:FirewallLogRatelimit":{"properties":{"burst":{"type":"integer","description":"Initial burst of packages which will always get\nlogged before the rate is applied (defaults to `5`).\n"},"enabled":{"type":"boolean","description":"Enable or disable the log rate limit.\n"},"rate":{"type":"string","description":"Frequency with which the burst bucket gets refilled\n(defaults to `1/second`).\n"}},"type":"object"},"proxmoxve:Network/FirewallRulesRule:FirewallRulesRule":{"properties":{"action":{"type":"string","description":"Rule action (`ACCEPT`, `DROP`, `REJECT`).\n"},"comment":{"type":"string","description":"Rule comment.\n"},"dest":{"type":"string","description":"Restrict packet destination address. This can\nrefer to a single IP address, an IP set ('+ipsetname') or an IP\nalias definition. You can also specify an address range\nlike `20.34.101.207-201.3.9.99`, or a list of IP addresses and\nnetworks (entries are separated by comma). Please do not mix IPv4\nand IPv6 addresses inside such lists.\n"},"dport":{"type":"string","description":"Restrict TCP/UDP destination port. You can use\nservice names or simple numbers (0-65535), as defined\nin `/etc/services`. Port ranges can be specified with '\\d+:\\d+', for\nexample `80:85`, and you can use comma separated list to match\nseveral ports or ranges.\n"},"enabled":{"type":"boolean","description":"Enable this rule. Defaults to `true`.\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 (`emerg`, `alert`, `crit`,\n`err`, `warning`, `notice`, `info`, `debug`, `nolog`).\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","willReplaceOnChanges":true},"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 (`in`, `out`).\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["pos"]}}},"proxmoxve:Network/FirewallSecurityGroupRule:FirewallSecurityGroupRule":{"properties":{"action":{"type":"string","description":"Rule action (`ACCEPT`, `DROP`, `REJECT`).\n"},"comment":{"type":"string","description":"Rule comment.\n"},"dest":{"type":"string","description":"Restrict packet destination address. This can refer to\na single IP address, an IP set ('+ipsetname') or an IP alias\ndefinition. You can also specify an address range like\n`20.34.101.207-201.3.9.99`, or a list of IP addresses and networks\n(entries are separated by comma). Please do not mix IPv4 and IPv6\naddresses inside such lists.\n"},"dport":{"type":"string","description":"Restrict TCP/UDP destination port. You can use\nservice names or simple numbers (0-65535), as defined in '/etc/\nservices'. Port ranges can be specified with '\\d+:\\d+', for example\n`80:85`, and you can use comma separated list to match several ports or\nranges.\n"},"enabled":{"type":"boolean","description":"Enable rule\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 (`emerg`, `alert`, `crit`,\n`err`, `warning`, `notice`, `info`, `debug`, `nolog`).\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","willReplaceOnChanges":true},"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 (`in`, `out`).\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["pos"]}}},"proxmoxve:Network/getHostsEntry:getHostsEntry":{"properties":{"address":{"type":"string","description":"The address\n"},"hostnames":{"type":"array","items":{"type":"string"},"description":"The hostnames associated with each of the IP addresses.\n"}},"type":"object","required":["address","hostnames"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Permission/GroupAcl:GroupAcl":{"properties":{"path":{"type":"string","description":"The path.\n"},"propagate":{"type":"boolean","description":"Whether to propagate to child paths.\n"},"roleId":{"type":"string","description":"The role identifier.\n"}},"type":"object","required":["path","roleId"]},"proxmoxve:Permission/PoolMember:PoolMember":{"properties":{"datastoreId":{"type":"string","description":"The datastore identifier.\n"},"id":{"type":"string","description":"The member identifier.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"type":{"type":"string","description":"The member type.\n"},"vmId":{"type":"integer","description":"The virtual machine identifier.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["datastoreId","id","nodeName","type","vmId"]}}},"proxmoxve:Permission/UserAcl:UserAcl":{"properties":{"path":{"type":"string","description":"The path.\n"},"propagate":{"type":"boolean","description":"Whether to propagate to child paths.\n"},"roleId":{"type":"string","description":"The role identifier.\n"}},"type":"object","required":["path","roleId"]},"proxmoxve:Permission/getGroupAcl:getGroupAcl":{"properties":{"path":{"type":"string","description":"The path.\n"},"propagate":{"type":"boolean","description":"Whether to propagate to child paths.\n"},"roleId":{"type":"string","description":"The role identifier.\n"}},"type":"object","required":["path","propagate","roleId"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Permission/getPoolMember:getPoolMember":{"properties":{"datastoreId":{"type":"string","description":"The datastore identifier.\n"},"id":{"type":"string","description":"The member identifier.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"type":{"type":"string","description":"The member type.\n"},"vmId":{"type":"integer","description":"The virtual machine identifier.\n"}},"type":"object","required":["datastoreId","id","nodeName","type","vmId"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Permission/getUserAcl:getUserAcl":{"properties":{"path":{"type":"string","description":"The path.\n"},"propagate":{"type":"boolean","description":"Whether to propagate to child paths.\n"},"roleId":{"type":"string","description":"The role identifier.\n"}},"type":"object","required":["path","propagate","roleId"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Storage/FileSourceFile:FileSourceFile":{"properties":{"changed":{"type":"boolean","description":"Whether the source file has changed since the last run\n","willReplaceOnChanges":true},"checksum":{"type":"string","description":"The SHA256 checksum of the source file.\n","willReplaceOnChanges":true},"fileName":{"type":"string","description":"The file name to use instead of the source file\nname. Useful when the source file does not have a valid file extension,\nfor example when the source file is a URL referencing a `.qcow2` image.\n","willReplaceOnChanges":true},"insecure":{"type":"boolean","description":"Whether to skip the TLS verification step for\nHTTPS sources (defaults to `false`).\n","willReplaceOnChanges":true},"minTls":{"type":"string","description":"The minimum required TLS version for HTTPS\nsources. \"Supported values: `1.0|1.1|1.2|1.3` (defaults to `1.3`).\n","willReplaceOnChanges":true},"path":{"type":"string","description":"A path to a local file or a URL.\n","willReplaceOnChanges":true}},"type":"object","required":["path"]},"proxmoxve:Storage/FileSourceRaw:FileSourceRaw":{"properties":{"data":{"type":"string","description":"The raw data.\n","willReplaceOnChanges":true},"fileName":{"type":"string","description":"The file name.\n","willReplaceOnChanges":true},"resize":{"type":"integer","description":"The number of bytes to resize the file to.\n","willReplaceOnChanges":true}},"type":"object","required":["data","fileName"]},"proxmoxve:VM/VirtualMachine2Cdrom:VirtualMachine2Cdrom":{"properties":{"fileId":{"type":"string","description":"The file ID of the CD-ROM, or `cdrom|none`. Defaults to `none` to leave the CD-ROM empty. Use `cdrom` to connect to the physical drive.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["fileId"]}}},"proxmoxve:VM/VirtualMachine2Clone:VirtualMachine2Clone":{"properties":{"id":{"type":"integer","description":"The ID of the VM to clone.\n"},"retries":{"type":"integer","description":"The number of retries to perform when cloning the VM (default: 3).\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredOutputs":["id","retries"]}}},"proxmoxve:VM/VirtualMachine2Cpu:VirtualMachine2Cpu":{"properties":{"affinity":{"type":"string","description":"The CPU cores that are used to run the VM’s vCPU. The value is a list of CPU IDs, separated by commas. The CPU IDs are zero-based. For example, `0,1,2,3` (which also can be shortened to `0-3`) means that the VM’s vCPUs are run on the first four CPU cores. Setting `affinity` 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 `affinity` is only allowed for `root@pam` authenticated user.\n"},"cores":{"type":"integer","description":"The number of CPU cores per socket (defaults to `1`).\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: `pcid`, `spec-ctrl`, `ibpb`, `ssbd`, `virt-ssbd`, `amd-ssbd`, `amd-no-ssb`, `pdpe1gb`, `md-clear`, `hv-tlbflush`, `hv-evmcs`, `aes`.\n"},"hotplugged":{"type":"integer","description":"The number of hotplugged vCPUs (defaults to `0`).\n"},"limit":{"type":"integer","description":"Limit of CPU usage (defaults to `0` which means no limit).\n"},"numa":{"type":"boolean","description":"Enable NUMA (defaults to `false`).\n"},"sockets":{"type":"integer","description":"The number of CPU sockets (defaults to `1`).\n"},"type":{"type":"string","description":"Emulated CPU type, it's recommended to use `x86-64-v2-AES` or higher (defaults to `kvm64`). See https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm*virtual*machines_settings for more information.\n"},"units":{"type":"integer","description":"CPU weight for a VM. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this VM gets. Number is relative to weights of all the other running VMs.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["affinity","architecture","cores","flags","hotplugged","limit","numa","sockets","type","units"]}}},"proxmoxve:VM/VirtualMachine2Timeouts:VirtualMachine2Timeouts":{"properties":{"create":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"},"delete":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"},"read":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"},"update":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachine2Vga:VirtualMachine2Vga":{"properties":{"clipboard":{"type":"string","description":"Enable a specific clipboard. If not set, depending on the display type the SPICE one will be added. Currently only `vnc` 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 `std`).\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["clipboard","memory","type"]}}},"proxmoxve:VM/VirtualMachineAgent:VirtualMachineAgent":{"properties":{"enabled":{"type":"boolean","description":"Whether to enable the QEMU agent (defaults\nto `false`).\n"},"timeout":{"type":"string","description":"The maximum amount of time to wait for data from\nthe QEMU agent to become available ( defaults to `15m`).\n"},"trim":{"type":"boolean","description":"Whether to enable the FSTRIM feature in the QEMU agent\n(defaults to `false`).\n"},"type":{"type":"string","description":"The QEMU agent interface type (defaults to `virtio`).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineAudioDevice:VirtualMachineAudioDevice":{"properties":{"device":{"type":"string","description":"The device (defaults to `intel-hda`).\n- `AC97` - Intel 82801AA AC97 Audio.\n- `ich9-intel-hda` - Intel HD Audio Controller (ich9).\n- `intel-hda` - Intel HD Audio.\n"},"driver":{"type":"string","description":"The driver (defaults to `spice`).\n"},"enabled":{"type":"boolean","description":"Whether to enable the audio device (defaults\nto `true`).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineCdrom:VirtualMachineCdrom":{"properties":{"enabled":{"type":"boolean","description":"Whether to enable the CDROM drive (defaults\nto `false`).\n"},"fileId":{"type":"string","description":"A file ID for an ISO file (defaults to `cdrom` as\nin the physical drive). Use `none` to leave the CDROM drive empty.\n"},"interface":{"type":"string","description":"A hardware interface to connect CDROM drive to,\nmust be `ideN` (defaults to `ide3`). Note that `q35` machine type only\nsupports `ide0` and `ide2`.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineClone:VirtualMachineClone":{"properties":{"datastoreId":{"type":"string","description":"The identifier for the target datastore.\n","willReplaceOnChanges":true},"full":{"type":"boolean","description":"Full or linked clone (defaults to `true`).\n","willReplaceOnChanges":true},"nodeName":{"type":"string","description":"The name of the source node (leave blank, if\nequal to the `node_name` argument).\n","willReplaceOnChanges":true},"retries":{"type":"integer","description":"Number of retries in Proxmox for clone vm.\nSometimes Proxmox errors with timeout when creating multiple clones at\nonce.\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"The identifier for the source VM.\n","willReplaceOnChanges":true}},"type":"object","required":["vmId"]},"proxmoxve:VM/VirtualMachineCpu:VirtualMachineCpu":{"properties":{"affinity":{"type":"string","description":"The CPU cores that are used to run the VM’s vCPU. The\nvalue is a list of CPU IDs, separated by commas. The CPU IDs are zero-based.\nFor example, `0,1,2,3` (which also can be shortened to `0-3`) means that the VM’s vCPUs are run on the first four\nCPU cores. Setting `affinity` is only allowed for `root@pam` authenticated user.\n"},"architecture":{"type":"string","description":"The CPU architecture (defaults to `x86_64`).\n"},"cores":{"type":"integer","description":"The number of CPU cores (defaults to `1`).\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 `0`).\n"},"limit":{"type":"integer","description":"Limit of CPU usage, `0...128`. (defaults to `0` -- no limit).\n"},"numa":{"type":"boolean","description":"Enable/disable NUMA. (default to `false`)\n"},"sockets":{"type":"integer","description":"The number of CPU sockets (defaults to `1`).\n"},"type":{"type":"string","description":"The emulated CPU type, it's recommended to\nuse `x86-64-v2-AES` (defaults to `qemu64`).\n"},"units":{"type":"integer","description":"The CPU units (defaults to `1024`).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineDisk:VirtualMachineDisk":{"properties":{"aio":{"type":"string","description":"The disk AIO mode (defaults to `io_uring`).\n"},"backup":{"type":"boolean","description":"Whether the drive should be included when making backups (defaults to `true`).\n"},"cache":{"type":"string","description":"The cache type (defaults to `none`).\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 `on`/`ignore` (defaults\nto `ignore`).\n"},"fileFormat":{"type":"string","description":"The file format (defaults to `qcow2`).\n"},"fileId":{"type":"string","description":"The file ID for a disk image. 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`proxmoxve.Download.File` resource.\n","willReplaceOnChanges":true},"interface":{"type":"string","description":"The disk interface for Proxmox, currently `scsi`,\n`sata` and `virtio` interfaces are supported. Append the disk index at\nthe end, for example, `virtio0` for the first virtio disk, `virtio1` for\nthe second, etc.\n"},"iothread":{"type":"boolean","description":"Whether to use iothreads for this disk (defaults\nto `false`).\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 (`datastore_id` empty string).\nSee \"*Example: Attached disks*\".\n"},"replicate":{"type":"boolean","description":"Whether the drive should be considered for replication jobs (defaults to `true`).\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 `8`).\n"},"speed":{"$ref":"#/types/proxmoxve:VM/VirtualMachineDiskSpeed:VirtualMachineDiskSpeed","description":"The speed limits.\n"},"ssd":{"type":"boolean","description":"Whether to use an SSD emulation option for this disk (\ndefaults to `false`). Note that SSD emulation is not supported on VirtIO\nBlock drives.\n"}},"type":"object","required":["interface"],"language":{"nodejs":{"requiredOutputs":["fileFormat","interface","pathInDatastore"]}}},"proxmoxve:VM/VirtualMachineDiskSpeed:VirtualMachineDiskSpeed":{"properties":{"iopsRead":{"type":"integer","description":"The maximum read I/O in operations per second.\n"},"iopsReadBurstable":{"type":"integer","description":"The maximum unthrottled read I/O pool in operations per second.\n"},"iopsWrite":{"type":"integer","description":"The maximum write I/O in operations per second.\n"},"iopsWriteBurstable":{"type":"integer","description":"The maximum unthrottled write I/O pool in operations per second.\n"},"read":{"type":"integer","description":"The maximum read speed in megabytes per second.\n"},"readBurstable":{"type":"integer","description":"The maximum burstable read speed in\nmegabytes per second.\n"},"write":{"type":"integer","description":"The maximum write speed in megabytes per second.\n"},"writeBurstable":{"type":"integer","description":"The maximum burstable write speed in\nmegabytes per second.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineEfiDisk:VirtualMachineEfiDisk":{"properties":{"datastoreId":{"type":"string","description":"The identifier for the datastore to create\nthe disk in (defaults to `local-lvm`).\n"},"fileFormat":{"type":"string","description":"The file format (defaults to `raw`).\n","willReplaceOnChanges":true},"preEnrolledKeys":{"type":"boolean","description":"Use am EFI vars template with\ndistribution-specific and Microsoft Standard keys enrolled, if used with\nEFI type=`4m`. Ignored for VMs with cpu.architecture=`aarch64` (defaults\nto `false`).\n","willReplaceOnChanges":true},"type":{"type":"string","description":"Size and type of the OVMF EFI disk. `4m` is newer and\nrecommended, and required for Secure Boot. For backwards compatibility\nuse `2m`. Ignored for VMs with cpu.architecture=`aarch64` (defaults\nto `2m`).\n","willReplaceOnChanges":true}},"type":"object","language":{"nodejs":{"requiredOutputs":["fileFormat"]}}},"proxmoxve:VM/VirtualMachineHostpci:VirtualMachineHostpci":{"properties":{"device":{"type":"string","description":"The PCI device name for Proxmox, in form\nof `hostpciX` where `X` is a sequential number from 0 to 15.\n"},"id":{"type":"string","description":"The PCI device ID. This parameter is not compatible\nwith `api_token` and requires the root `username` and `password`\nconfigured in the proxmox provider. Use either this or `mapping`.\n"},"mapping":{"type":"string","description":"The resource mapping name of the device, for\nexample gpu. Use either this or `id`.\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 `true`).\n"},"xvga":{"type":"boolean","description":"Marks the PCI(e) device as the primary GPU of the VM.\nWith this enabled the `vga` configuration argument will be ignored.\n"}},"type":"object","required":["device"]},"proxmoxve:VM/VirtualMachineInitialization:VirtualMachineInitialization":{"properties":{"datastoreId":{"type":"string","description":"The identifier for the datastore to create the\ncloud-init disk in (defaults to `local-lvm`).\n"},"dns":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitializationDns:VirtualMachineInitializationDns","description":"The DNS configuration.\n"},"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 `ide2`.\n"},"ipConfigs":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitializationIpConfig:VirtualMachineInitializationIpConfig"},"description":"The IP configuration (one block per network\ndevice).\n"},"metaDataFileId":{"type":"string","description":"The identifier for a file containing\nall meta data passed to the VM via cloud-init.\n","willReplaceOnChanges":true},"networkDataFileId":{"type":"string","description":"The identifier for a file containing\nnetwork configuration data passed to the VM via cloud-init (conflicts\nwith `ip_config`).\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 the first boot\n","deprecationMessage":"The `upgrade` attribute is deprecated and will be removed in a future release."},"userAccount":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitializationUserAccount:VirtualMachineInitializationUserAccount","description":"The user account configuration (conflicts\nwith `user_data_file_id`).\n","willReplaceOnChanges":true},"userDataFileId":{"type":"string","description":"The identifier for a file containing\ncustom user data (conflicts with `user_account`).\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":["upgrade"]}}},"proxmoxve:VM/VirtualMachineInitializationDns:VirtualMachineInitializationDns":{"properties":{"domain":{"type":"string","description":"The DNS search domain.\n"},"server":{"type":"string","description":"The DNS server. The `server` attribute is\ndeprecated and will be removed in a future release. Please use the\n`servers` attribute instead.\n","deprecationMessage":"The `server` attribute is deprecated and will be removed in a future release. Please use the `servers` attribute instead."},"servers":{"type":"array","items":{"type":"string"},"description":"The list of DNS servers.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineInitializationIpConfig:VirtualMachineInitializationIpConfig":{"properties":{"ipv4":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitializationIpConfigIpv4:VirtualMachineInitializationIpConfigIpv4","description":"The IPv4 configuration.\n"},"ipv6":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitializationIpConfigIpv6:VirtualMachineInitializationIpConfigIpv6","description":"The IPv6 configuration.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineInitializationIpConfigIpv4:VirtualMachineInitializationIpConfigIpv4":{"properties":{"address":{"type":"string","description":"The IPv4 address in CIDR notation\n(e.g. 192.168.2.2/24). Alternatively, set this to `dhcp` for\nautodiscovery.\n"},"gateway":{"type":"string","description":"The IPv4 gateway (must be omitted\nwhen `dhcp` is used as the address).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineInitializationIpConfigIpv6:VirtualMachineInitializationIpConfigIpv6":{"properties":{"address":{"type":"string","description":"The IPv6 address in CIDR notation\n(e.g. fd1c:000:0000::0000:000:7334/64). Alternatively, set this\nto `dhcp` for autodiscovery.\n"},"gateway":{"type":"string","description":"The IPv6 gateway (must be omitted\nwhen `dhcp` is used as the address).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineInitializationUserAccount:VirtualMachineInitializationUserAccount":{"properties":{"keys":{"type":"array","items":{"type":"string"},"description":"The SSH keys.\n","willReplaceOnChanges":true},"password":{"type":"string","description":"The SSH password.\n","secret":true,"willReplaceOnChanges":true},"username":{"type":"string","description":"The SSH username.\n","willReplaceOnChanges":true}},"type":"object"},"proxmoxve:VM/VirtualMachineMemory:VirtualMachineMemory":{"properties":{"dedicated":{"type":"integer","description":"The dedicated memory in megabytes (defaults to `512`).\n"},"floating":{"type":"integer","description":"The floating memory in megabytes. The default is `0`, which disables \"ballooning device\" for the VM.\nPlease note that Proxmox has ballooning enabled by default. To enable it, set `floating` to the same value as `dedicated`.\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 `false`).\n\nSettings `hugepages` and `keep_hugepages` 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 `0`).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineNetworkDevice:VirtualMachineNetworkDevice":{"properties":{"bridge":{"type":"string","description":"The name of the network bridge (defaults to `vmbr0`).\n"},"disconnected":{"type":"boolean","description":"Whether to disconnect the network device from the network (defaults to `false`).\n"},"enabled":{"type":"boolean","description":"Whether to enable the network device (defaults to `true`).\n"},"firewall":{"type":"boolean","description":"Whether this interface's firewall rules should be used (defaults to `false`).\n"},"macAddress":{"type":"string","description":"The MAC address.\n"},"model":{"type":"string","description":"The network device model (defaults to `virtio`).\n"},"mtu":{"type":"integer","description":"Force MTU, for VirtIO only. Set to 1 to use the bridge MTU. Cannot be larger than the bridge MTU.\n"},"queues":{"type":"integer","description":"The number of queues for VirtIO (1..64).\n"},"rateLimit":{"type":"number","description":"The rate limit in megabytes per second.\n"},"trunks":{"type":"string","description":"String containing a `;` separated list of VLAN trunks\n(\"10;20;30\"). Note that the VLAN-aware feature need to be enabled on the PVE\nLinux Bridge to use trunks.\n"},"vlanId":{"type":"integer","description":"The VLAN identifier.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["macAddress"]}}},"proxmoxve:VM/VirtualMachineNuma:VirtualMachineNuma":{"properties":{"cpus":{"type":"string","description":"The CPU cores to assign to the NUMA node (format is `0-7;16-31`).\n"},"device":{"type":"string","description":"The NUMA device name for Proxmox, in form\nof `numaX` where `X` is a sequential number from 0 to 7.\n"},"hostnodes":{"type":"string","description":"The NUMA host nodes.\n"},"memory":{"type":"integer","description":"The memory in megabytes to assign to the NUMA node.\n"},"policy":{"type":"string","description":"The NUMA policy (defaults to `preferred`).\n"}},"type":"object","required":["cpus","device","memory"]},"proxmoxve:VM/VirtualMachineOperatingSystem:VirtualMachineOperatingSystem":{"properties":{"type":{"type":"string","description":"The type (defaults to `other`).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineSerialDevice:VirtualMachineSerialDevice":{"properties":{"device":{"type":"string","description":"The device (defaults to `socket`).\n- `/dev/*` - A host serial device.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineSmbios:VirtualMachineSmbios":{"properties":{"family":{"type":"string","description":"The family string.\n"},"manufacturer":{"type":"string","description":"The manufacturer.\n"},"product":{"type":"string","description":"The product ID.\n"},"serial":{"type":"string","description":"The serial number.\n"},"sku":{"type":"string","description":"The SKU number.\n"},"uuid":{"type":"string","description":"The UUID (defaults to randomly generated UUID).\n"},"version":{"type":"string","description":"The version.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["uuid"]}}},"proxmoxve:VM/VirtualMachineStartup:VirtualMachineStartup":{"properties":{"downDelay":{"type":"integer","description":"A non-negative number defining the delay in\nseconds before the next VM is shut down.\n"},"order":{"type":"integer","description":"A non-negative number defining the general startup\norder.\n"},"upDelay":{"type":"integer","description":"A non-negative number defining the delay in\nseconds before the next VM is started.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineTpmState:VirtualMachineTpmState":{"properties":{"datastoreId":{"type":"string","description":"The identifier for the datastore to create\nthe disk in (defaults to `local-lvm`).\n"},"version":{"type":"string","description":"TPM state device version. Can be `v1.2` or `v2.0`.\n(defaults to `v2.0`).\n","willReplaceOnChanges":true}},"type":"object"},"proxmoxve:VM/VirtualMachineUsb:VirtualMachineUsb":{"properties":{"host":{"type":"string","description":"The Host USB device or port or the value `spice`. Use either this or `mapping`.\n"},"mapping":{"type":"string","description":"The cluster-wide resource mapping name of the device, for example \"usbdevice\". Use either this or `host`.\n"},"usb3":{"type":"boolean","description":"Makes the USB device a USB3 device for the VM\n(defaults to `false`).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineVga:VirtualMachineVga":{"properties":{"clipboard":{"type":"string","description":"Enable VNC clipboard by setting to `vnc`. 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 `16`).\n"},"type":{"type":"string","description":"The VGA type (defaults to `std`).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineWatchdog:VirtualMachineWatchdog":{"properties":{"action":{"type":"string","description":"The action to perform if after activation the guest fails to poll the watchdog in time (defaults to `none`).\n"},"enabled":{"type":"boolean","description":"Whether the watchdog is enabled (defaults to `false`).\n"},"model":{"type":"string","description":"The watchdog type to emulate (defaults to `i6300esb`).\n"}},"type":"object"},"proxmoxve:VM/getVirtualMachinesFilter:getVirtualMachinesFilter":{"properties":{"name":{"type":"string","description":"Name of the VM attribute to filter on. One of [`name`, `template`, `status`, `node_name`]\n"},"regex":{"type":"boolean","description":"Treat values as regex patterns\n"},"values":{"type":"array","items":{"type":"string"},"description":"List of values to pass the filter. VM's attribute should match at least one value in the list.\n"}},"type":"object","required":["name","values"]},"proxmoxve:VM/getVirtualMachinesVm:getVirtualMachinesVm":{"properties":{"name":{"type":"string","description":"The virtual machine name.\n"},"nodeName":{"type":"string","description":"The node name. All cluster nodes will be queried in case this is omitted\n"},"status":{"type":"string","description":"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":"Is VM a template (true) or a regular VM (false)\n"},"vmId":{"type":"integer","description":"The VM identifier.\n"}},"type":"object","required":["name","nodeName","tags","vmId"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:config/ssh:ssh":{"properties":{"agent":{"type":"boolean","description":"Whether to use the SSH agent for authentication. Takes precedence over the `private_key` and `password` fields. Defaults to the value of the `PROXMOX_VE_SSH_AGENT` environment variable, or `false` if not set.\n"},"agentSocket":{"type":"string","description":"The path to the SSH agent socket. Defaults to the value of the `SSH_AUTH_SOCK` environment variable.\n"},"nodes":{"type":"array","items":{"$ref":"#/types/proxmoxve:config/sshNode:sshNode"},"description":"Overrides for SSH connection configuration for a Proxmox VE node.\n"},"password":{"type":"string","description":"The password used for the SSH connection. Defaults to the value of the `password` field of the `provider` block.\n","secret":true},"privateKey":{"type":"string","description":"The unencrypted private key (in PEM format) used for the SSH connection. Defaults to the value of the `PROXMOX_VE_SSH_PRIVATE_KEY` environment variable.\n","secret":true},"socks5Password":{"type":"string","description":"The password for the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_PASSWORD` environment variable.\n","secret":true},"socks5Server":{"type":"string","description":"The address:port of the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_SERVER` environment variable.\n"},"socks5Username":{"type":"string","description":"The username for the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_USERNAME` environment variable.\n"},"username":{"type":"string","description":"The username used for the SSH connection. Defaults to the value of the `username` field of the `provider` block.\n"}},"type":"object"},"proxmoxve:config/sshNode:sshNode":{"properties":{"address":{"type":"string","description":"The address of the Proxmox VE node.\n"},"name":{"type":"string","description":"The name of the Proxmox VE node.\n"},"port":{"type":"integer","description":"The port of the Proxmox VE node.\n"}},"type":"object","required":["address","name"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:index/HostsEntry:HostsEntry":{"properties":{"address":{"type":"string","description":"The IP address.\n"},"hostnames":{"type":"array","items":{"type":"string"},"description":"The hostnames.\n"}},"type":"object","required":["address","hostnames"]},"proxmoxve:index/ProviderSsh:ProviderSsh":{"properties":{"agent":{"type":"boolean","description":"Whether to use the SSH agent for authentication. Takes precedence over the `private_key` and `password` fields. Defaults to the value of the `PROXMOX_VE_SSH_AGENT` environment variable, or `false` if not set.\n"},"agentSocket":{"type":"string","description":"The path to the SSH agent socket. Defaults to the value of the `SSH_AUTH_SOCK` environment variable.\n"},"nodes":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/ProviderSshNode:ProviderSshNode"},"description":"Overrides for SSH connection configuration for a Proxmox VE node.\n"},"password":{"type":"string","description":"The password used for the SSH connection. Defaults to the value of the `password` field of the `provider` block.\n","secret":true},"privateKey":{"type":"string","description":"The unencrypted private key (in PEM format) used for the SSH connection. Defaults to the value of the `PROXMOX_VE_SSH_PRIVATE_KEY` environment variable.\n","secret":true},"socks5Password":{"type":"string","description":"The password for the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_PASSWORD` environment variable.\n","secret":true},"socks5Server":{"type":"string","description":"The address:port of the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_SERVER` environment variable.\n"},"socks5Username":{"type":"string","description":"The username for the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_USERNAME` environment variable.\n"},"username":{"type":"string","description":"The username used for the SSH connection. Defaults to the value of the `username` field of the `provider` 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/Vm2Cdrom:Vm2Cdrom":{"properties":{"fileId":{"type":"string","description":"The file ID of the CD-ROM, or `cdrom|none`. Defaults to `none` to leave the CD-ROM empty. Use `cdrom` to connect to the physical drive.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["fileId"]}}},"proxmoxve:index/Vm2Clone:Vm2Clone":{"properties":{"id":{"type":"integer","description":"The ID of the VM to clone.\n"},"retries":{"type":"integer","description":"The number of retries to perform when cloning the VM (default: 3).\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredOutputs":["id","retries"]}}},"proxmoxve:index/Vm2Cpu:Vm2Cpu":{"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 `affinity` 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 `affinity` is only allowed for `root@pam` authenticated user.\n"},"cores":{"type":"integer","description":"The number of CPU cores per socket (defaults to `1`).\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: `pcid`, `spec-ctrl`, `ibpb`, `ssbd`, `virt-ssbd`, `amd-ssbd`, `amd-no-ssb`, `pdpe1gb`, `md-clear`, `hv-tlbflush`, `hv-evmcs`, `aes`.\n"},"hotplugged":{"type":"integer","description":"The number of hotplugged vCPUs (defaults to `0`).\n"},"limit":{"type":"integer","description":"Limit of CPU usage (defaults to `0` which means no limit).\n"},"numa":{"type":"boolean","description":"Enable NUMA (defaults to `false`).\n"},"sockets":{"type":"integer","description":"The number of CPU sockets (defaults to `1`).\n"},"type":{"type":"string","description":"Emulated CPU type, it's recommended to use `x86-64-v2-AES` or higher (defaults to `kvm64`). See https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm*virtual*machines_settings for more information.\n"},"units":{"type":"integer","description":"CPU weight for a VM. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this VM gets. Number is relative to weights of all the other running VMs.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["affinity","architecture","cores","flags","hotplugged","limit","numa","sockets","type","units"]}}},"proxmoxve:index/Vm2Timeouts:Vm2Timeouts":{"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/Vm2Vga:Vm2Vga":{"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 `vnc` 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 `std`).\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["clipboard","memory","type"]}}},"proxmoxve:index/getVm2Clone:getVm2Clone":{"properties":{"id":{"type":"integer","description":"The ID of the VM to clone.\n"},"retries":{"type":"integer","description":"The number of retries to perform when cloning the VM (default: 3).\n"}},"type":"object","required":["id","retries"],"language":{"nodejs":{"requiredInputs":["id"]}}},"proxmoxve:index/getVm2Cpu:getVm2Cpu":{"properties":{"affinity":{"type":"string","description":"List of host cores used to execute guest processes, for example: '0,5,8-11'\n"},"architecture":{"type":"string","description":"The CPU architecture.\n"},"cores":{"type":"integer","description":"The number of CPU cores per socket.\n"},"flags":{"type":"array","items":{"type":"string"},"description":"Set of additional CPU flags.\n"},"hotplugged":{"type":"integer","description":"The number of hotplugged vCPUs.\n"},"limit":{"type":"integer","description":"Limit of CPU usage.\n"},"numa":{"type":"boolean","description":"Enable NUMA.\n"},"sockets":{"type":"integer","description":"The number of CPU sockets.\n"},"type":{"type":"string","description":"Emulated CPU type.\n"},"units":{"type":"integer","description":"CPU weight for a VM\n"}},"type":"object","required":["affinity","architecture","cores","flags","hotplugged","limit","numa","sockets","type","units"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:index/getVm2Timeouts:getVm2Timeouts":{"properties":{"read":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"}},"type":"object"},"proxmoxve:index/getVm2Vga:getVm2Vga":{"properties":{"clipboard":{"type":"string","description":"Enable a specific clipboard.\n"},"memory":{"type":"integer","description":"The VGA memory in megabytes (4-512 MB). Has no effect with serial display.\n"},"type":{"type":"string","description":"The VGA type.\n"}},"type":"object","required":["clipboard","memory","type"],"language":{"nodejs":{"requiredInputs":[]}}}},"provider":{"description":"The provider type for the proxmox package. By default, resources use package-wide configuration\nsettings, however an explicit `Provider` instance may be created and passed during resource\nconstruction to achieve fine-grained programmatic control over provider settings. See the\n[documentation](https://www.pulumi.com/docs/reference/programming-model/#providers) for more information.\n","properties":{"apiToken":{"type":"string","description":"The API token for the Proxmox VE API.\n","secret":true},"authTicket":{"type":"string","description":"The pre-authenticated Ticket for the Proxmox VE API.\n","secret":true},"csrfPreventionToken":{"type":"string","description":"The pre-authenticated CSRF Prevention Token for the Proxmox VE API.\n","secret":true},"endpoint":{"type":"string","description":"The endpoint for the Proxmox VE API.\n"},"insecure":{"type":"boolean","description":"Whether to skip the TLS verification step.\n"},"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`.\n"},"otp":{"type":"string","description":"The one-time password for the Proxmox VE API.\n","deprecationMessage":"The `otp` attribute is deprecated and will be removed in a future release. Please use the `api_token` attribute instead."},"password":{"type":"string","description":"The password for the Proxmox VE API.\n","secret":true},"randomVmIdEnd":{"type":"integer","description":"The ending number for random VM / Container IDs.\n"},"randomVmIdStart":{"type":"integer","description":"The starting number for random VM / Container IDs.\n"},"randomVmIds":{"type":"boolean","description":"Whether to generate random VM / Container IDs.\n"},"ssh":{"$ref":"#/types/proxmoxve:index/ProviderSsh:ProviderSsh","description":"The SSH configuration for the Proxmox nodes.\n"},"tmpDir":{"type":"string","description":"The alternative temporary directory.\n"},"username":{"type":"string","description":"The username for the Proxmox VE API.\n"}},"inputProperties":{"apiToken":{"type":"string","description":"The API token for the Proxmox VE API.\n","secret":true},"authTicket":{"type":"string","description":"The pre-authenticated Ticket for the Proxmox VE API.\n","secret":true},"csrfPreventionToken":{"type":"string","description":"The pre-authenticated CSRF Prevention Token for the Proxmox VE API.\n","secret":true},"endpoint":{"type":"string","description":"The endpoint for the Proxmox VE API.\n"},"insecure":{"type":"boolean","description":"Whether to skip the TLS verification step.\n"},"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`.\n"},"otp":{"type":"string","description":"The one-time password for the Proxmox VE API.\n","deprecationMessage":"The `otp` attribute is deprecated and will be removed in a future release. Please use the `api_token` attribute instead."},"password":{"type":"string","description":"The password for the Proxmox VE API.\n","secret":true},"randomVmIdEnd":{"type":"integer","description":"The ending number for random VM / Container IDs.\n"},"randomVmIdStart":{"type":"integer","description":"The starting number for random VM / Container IDs.\n"},"randomVmIds":{"type":"boolean","description":"Whether to generate random VM / Container IDs.\n"},"ssh":{"$ref":"#/types/proxmoxve:index/ProviderSsh:ProviderSsh","description":"The SSH configuration for the Proxmox nodes.\n"},"tmpDir":{"type":"string","description":"The alternative temporary directory.\n"},"username":{"type":"string","description":"The username for the Proxmox VE API.\n"}}},"resources":{"proxmoxve:Apt/repository:Repository":{"description":"Manages an APT repository of a Proxmox VE node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.apt.Repository(\"example\", {\n enabled: true,\n filePath: \"/etc/apt/sources.list\",\n index: 0,\n node: \"pve\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.apt.Repository(\"example\",\n enabled=True,\n file_path=\"/etc/apt/sources.list\",\n index=0,\n node=\"pve\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new ProxmoxVE.Apt.Repository(\"example\", new()\n {\n Enabled = true,\n FilePath = \"/etc/apt/sources.list\",\n Index = 0,\n Node = \"pve\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/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 com.pulumi.proxmoxve.Apt.Repository;\nimport com.pulumi.proxmoxve.Apt.RepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Repository(\"example\", RepositoryArgs.builder()\n .enabled(true)\n .filePath(\"/etc/apt/sources.list\")\n .index(0)\n .node(\"pve\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:Apt:Repository\n properties:\n enabled: true\n filePath: /etc/apt/sources.list\n index: 0\n node: pve\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nAn APT repository can be imported using a comma-separated list consisting of the name of the Proxmox VE node,\n\nthe absolute source list file path, and the index in the exact same order, e.g.:\n\n```sh\n$ pulumi import proxmoxve:Apt/repository:Repository example pve,/etc/apt/sources.list,0\n```\n\n","properties":{"comment":{"type":"string","description":"The associated comment.\n"},"components":{"type":"array","items":{"type":"string"},"description":"The list of components.\n"},"enabled":{"type":"boolean","description":"Indicates the activation status.\n"},"filePath":{"type":"string","description":"The absolute path of the source list file that contains this repository.\n"},"fileType":{"type":"string","description":"The format of the defining source list file.\n"},"index":{"type":"integer","description":"The index within the defining source list file.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"},"packageTypes":{"type":"array","items":{"type":"string"},"description":"The list of package types.\n"},"suites":{"type":"array","items":{"type":"string"},"description":"The list of package distributions.\n"},"uris":{"type":"array","items":{"type":"string"},"description":"The list of repository URIs.\n"}},"required":["comment","components","enabled","filePath","fileType","index","node","packageTypes","suites","uris"],"inputProperties":{"enabled":{"type":"boolean","description":"Indicates the activation status.\n"},"filePath":{"type":"string","description":"The absolute path of the source list file that contains this repository.\n"},"index":{"type":"integer","description":"The index within the defining source list file.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"}},"requiredInputs":["filePath","index","node"],"stateInputs":{"description":"Input properties used for looking up and filtering Repository resources.\n","properties":{"comment":{"type":"string","description":"The associated comment.\n"},"components":{"type":"array","items":{"type":"string"},"description":"The list of components.\n"},"enabled":{"type":"boolean","description":"Indicates the activation status.\n"},"filePath":{"type":"string","description":"The absolute path of the source list file that contains this repository.\n"},"fileType":{"type":"string","description":"The format of the defining source list file.\n"},"index":{"type":"integer","description":"The index within the defining source list file.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"},"packageTypes":{"type":"array","items":{"type":"string"},"description":"The list of package types.\n"},"suites":{"type":"array","items":{"type":"string"},"description":"The list of package distributions.\n"},"uris":{"type":"array","items":{"type":"string"},"description":"The list of repository URIs.\n"}},"type":"object"}},"proxmoxve:Apt/standard/repository:Repository":{"description":"Manages an APT standard repository of a Proxmox VE node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst exampleRepository = new proxmoxve.apt.standard.Repository(\"exampleRepository\", {\n handle: \"no-subscription\",\n node: \"pve\",\n});\nconst exampleApt_repositoryRepository = new proxmoxve.apt.Repository(\"exampleApt/repositoryRepository\", {\n enabled: true,\n filePath: exampleRepository.filePath,\n index: exampleRepository.index,\n node: exampleRepository.node,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample_repository = proxmoxve.apt.standard.Repository(\"exampleRepository\",\n handle=\"no-subscription\",\n node=\"pve\")\nexample_apt_repository_repository = proxmoxve.apt.Repository(\"exampleApt/repositoryRepository\",\n enabled=True,\n file_path=example_repository.file_path,\n index=example_repository.index,\n node=example_repository.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 exampleRepository = new ProxmoxVE.Apt.Standard.Repository(\"exampleRepository\", new()\n {\n Handle = \"no-subscription\",\n Node = \"pve\",\n });\n\n var exampleApt_repositoryRepository = new ProxmoxVE.Apt.Repository(\"exampleApt/repositoryRepository\", new()\n {\n Enabled = true,\n FilePath = exampleRepository.FilePath,\n Index = exampleRepository.Index,\n Node = exampleRepository.Node,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/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\texampleRepository, err := Apt.NewRepository(ctx, \"exampleRepository\", \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, \"exampleApt/repositoryRepository\", \u0026Apt.RepositoryArgs{\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tFilePath: exampleRepository.FilePath,\n\t\t\tIndex: exampleRepository.Index,\n\t\t\tNode: exampleRepository.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 com.pulumi.proxmoxve.Apt.Repository;\nimport com.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 exampleRepository = new Repository(\"exampleRepository\", RepositoryArgs.builder()\n .handle(\"no-subscription\")\n .node(\"pve\")\n .build());\n\n var exampleApt_repositoryRepository = new Repository(\"exampleApt/repositoryRepository\", RepositoryArgs.builder()\n .enabled(true)\n .filePath(exampleRepository.filePath())\n .index(exampleRepository.index())\n .node(exampleRepository.node())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleRepository:\n type: proxmoxve:Apt/standard:Repository\n properties:\n handle: no-subscription\n node: pve\n exampleApt/repositoryRepository:\n type: proxmoxve:Apt:Repository\n properties:\n enabled: true\n filePath: ${exampleRepository.filePath}\n index: ${exampleRepository.index}\n node: ${exampleRepository.node}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nAn APT standard repository can be imported using a comma-separated list consisting of the name of the Proxmox VE node,\n\nand the standard repository handle in the exact same order, e.g.:\n\n```sh\n$ pulumi import proxmoxve:Apt/standard/repository:Repository example pve,no-subscription\n```\n\n","properties":{"description":{"type":"string","description":"The description of the APT standard repository.\n"},"filePath":{"type":"string","description":"The absolute path of the source list file that contains this standard repository.\n"},"handle":{"type":"string","description":"The handle of the APT standard repository. Must be `ceph-quincy-enterprise` | `ceph-quincy-no-subscription` | `ceph-quincy-test` | `ceph-reef-enterprise` | `ceph-reef-no-subscription` | `ceph-reef-test` | `enterprise` | `no-subscription` | `test`.\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-quincy-enterprise` | `ceph-quincy-no-subscription` | `ceph-quincy-test` | `ceph-reef-enterprise` | `ceph-reef-no-subscription` | `ceph-reef-test` | `enterprise` | `no-subscription` | `test`.\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-quincy-enterprise` | `ceph-quincy-no-subscription` | `ceph-quincy-test` | `ceph-reef-enterprise` | `ceph-reef-no-subscription` | `ceph-reef-test` | `enterprise` | `no-subscription` | `test`.\n"},"index":{"type":"integer","description":"The index within the defining source list file.\n"},"name":{"type":"string","description":"The name of the APT standard repository.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"},"status":{"type":"integer","description":"Indicates the activation status.\n"}},"type":"object"}},"proxmoxve:CT/container:Container":{"description":"Manages a container.\n\n## Import\n\nInstances can be imported using the `node_name` and the `vm_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:CT/container:Container ubuntu_container first-node/1234\n```\n\n","properties":{"clone":{"$ref":"#/types/proxmoxve:CT/ContainerClone:ContainerClone","description":"The cloning configuration.\n"},"console":{"$ref":"#/types/proxmoxve:CT/ContainerConsole:ContainerConsole","description":"The console configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:CT/ContainerCpu:ContainerCpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description.\n"},"disk":{"$ref":"#/types/proxmoxve:CT/ContainerDisk:ContainerDisk","description":"The disk configuration.\n"},"features":{"$ref":"#/types/proxmoxve:CT/ContainerFeatures:ContainerFeatures","description":"The container feature flags. Changing flags (except nesting) is only allowed for `root@pam` authenticated user.\n"},"hookScriptFileId":{"type":"string","description":"The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).\n"},"initialization":{"$ref":"#/types/proxmoxve:CT/ContainerInitialization:ContainerInitialization","description":"The initialization configuration.\n"},"memory":{"$ref":"#/types/proxmoxve:CT/ContainerMemory:ContainerMemory","description":"The memory configuration.\n"},"mountPoints":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerMountPoint:ContainerMountPoint"},"description":"A mount point\n"},"networkInterfaces":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerNetworkInterface:ContainerNetworkInterface"},"description":"A network interface (multiple blocks\nsupported).\n"},"nodeName":{"type":"string","description":"The name of the node to assign the container to.\n"},"operatingSystem":{"$ref":"#/types/proxmoxve:CT/ContainerOperatingSystem:ContainerOperatingSystem","description":"The Operating System configuration.\n"},"poolId":{"type":"string","description":"The identifier for a pool to assign the container to.\n"},"protection":{"type":"boolean","description":"Whether to set the protection flag of the container (defaults to `false`). 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 `true`).\n"},"started":{"type":"boolean","description":"Whether to start the container (defaults to `true`).\n"},"startup":{"$ref":"#/types/proxmoxve:CT/ContainerStartup:ContainerStartup","description":"Defines startup and shutdown behavior of the container.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags the container tags. This is only meta\ninformation (defaults to `[]`). Note: Proxmox always sorts the container tags.\nIf the list in template is not sorted, then Proxmox will always report a\ndifference on the resource. You may use the `ignore_changes` lifecycle\nmeta-argument to ignore changes to this attribute.\n"},"template":{"type":"boolean","description":"Whether to create a template (defaults to `false`).\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\n","deprecationMessage":"This field is deprecated and will be removed in a future release. An overall operation timeout (`timeout_create` / `timeout_clone`) 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\nthe host (defaults to `false`).\n"},"vmId":{"type":"integer","description":"The container identifier\n"}},"required":["nodeName","vmId"],"inputProperties":{"clone":{"$ref":"#/types/proxmoxve:CT/ContainerClone:ContainerClone","description":"The cloning configuration.\n"},"console":{"$ref":"#/types/proxmoxve:CT/ContainerConsole:ContainerConsole","description":"The console configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:CT/ContainerCpu:ContainerCpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description.\n"},"disk":{"$ref":"#/types/proxmoxve:CT/ContainerDisk:ContainerDisk","description":"The disk configuration.\n","willReplaceOnChanges":true},"features":{"$ref":"#/types/proxmoxve:CT/ContainerFeatures:ContainerFeatures","description":"The container feature flags. Changing flags (except nesting) is only allowed for `root@pam` authenticated user.\n"},"hookScriptFileId":{"type":"string","description":"The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).\n"},"initialization":{"$ref":"#/types/proxmoxve:CT/ContainerInitialization:ContainerInitialization","description":"The initialization configuration.\n"},"memory":{"$ref":"#/types/proxmoxve:CT/ContainerMemory:ContainerMemory","description":"The memory configuration.\n"},"mountPoints":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerMountPoint:ContainerMountPoint"},"description":"A mount point\n"},"networkInterfaces":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerNetworkInterface:ContainerNetworkInterface"},"description":"A network interface (multiple blocks\nsupported).\n"},"nodeName":{"type":"string","description":"The name of the node to assign the container to.\n","willReplaceOnChanges":true},"operatingSystem":{"$ref":"#/types/proxmoxve:CT/ContainerOperatingSystem:ContainerOperatingSystem","description":"The Operating System configuration.\n","willReplaceOnChanges":true},"poolId":{"type":"string","description":"The identifier for a pool to assign the container to.\n","willReplaceOnChanges":true},"protection":{"type":"boolean","description":"Whether to set the protection flag of the container (defaults to `false`). 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 `true`).\n"},"started":{"type":"boolean","description":"Whether to start the container (defaults to `true`).\n"},"startup":{"$ref":"#/types/proxmoxve:CT/ContainerStartup:ContainerStartup","description":"Defines startup and shutdown behavior of the container.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags the container tags. This is only meta\ninformation (defaults to `[]`). Note: Proxmox always sorts the container tags.\nIf the list in template is not sorted, then Proxmox will always report a\ndifference on the resource. You may use the `ignore_changes` lifecycle\nmeta-argument to ignore changes to this attribute.\n"},"template":{"type":"boolean","description":"Whether to create a template (defaults to `false`).\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\n","deprecationMessage":"This field is deprecated and will be removed in a future release. An overall operation timeout (`timeout_create` / `timeout_clone`) 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\nthe host (defaults to `false`).\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"The container identifier\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering Container resources.\n","properties":{"clone":{"$ref":"#/types/proxmoxve:CT/ContainerClone:ContainerClone","description":"The cloning configuration.\n"},"console":{"$ref":"#/types/proxmoxve:CT/ContainerConsole:ContainerConsole","description":"The console configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:CT/ContainerCpu:ContainerCpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description.\n"},"disk":{"$ref":"#/types/proxmoxve:CT/ContainerDisk:ContainerDisk","description":"The disk configuration.\n","willReplaceOnChanges":true},"features":{"$ref":"#/types/proxmoxve:CT/ContainerFeatures:ContainerFeatures","description":"The container feature flags. Changing flags (except nesting) is only allowed for `root@pam` authenticated user.\n"},"hookScriptFileId":{"type":"string","description":"The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).\n"},"initialization":{"$ref":"#/types/proxmoxve:CT/ContainerInitialization:ContainerInitialization","description":"The initialization configuration.\n"},"memory":{"$ref":"#/types/proxmoxve:CT/ContainerMemory:ContainerMemory","description":"The memory configuration.\n"},"mountPoints":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerMountPoint:ContainerMountPoint"},"description":"A mount point\n"},"networkInterfaces":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerNetworkInterface:ContainerNetworkInterface"},"description":"A network interface (multiple blocks\nsupported).\n"},"nodeName":{"type":"string","description":"The name of the node to assign the container to.\n","willReplaceOnChanges":true},"operatingSystem":{"$ref":"#/types/proxmoxve:CT/ContainerOperatingSystem:ContainerOperatingSystem","description":"The Operating System configuration.\n","willReplaceOnChanges":true},"poolId":{"type":"string","description":"The identifier for a pool to assign the container to.\n","willReplaceOnChanges":true},"protection":{"type":"boolean","description":"Whether to set the protection flag of the container (defaults to `false`). 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 `true`).\n"},"started":{"type":"boolean","description":"Whether to start the container (defaults to `true`).\n"},"startup":{"$ref":"#/types/proxmoxve:CT/ContainerStartup:ContainerStartup","description":"Defines startup and shutdown behavior of the container.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags the container tags. This is only meta\ninformation (defaults to `[]`). Note: Proxmox always sorts the container tags.\nIf the list in template is not sorted, then Proxmox will always report a\ndifference on the resource. You may use the `ignore_changes` lifecycle\nmeta-argument to ignore changes to this attribute.\n"},"template":{"type":"boolean","description":"Whether to create a template (defaults to `false`).\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\n","deprecationMessage":"This field is deprecated and will be removed in a future release. An overall operation timeout (`timeout_create` / `timeout_clone`) 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\nthe host (defaults to `false`).\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"The container identifier\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Cluster.Options;\nimport com.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 .bandwidthLimitDefault(666666)\n .bandwidthLimitMigration(555555)\n .emailFrom(\"ged@gont.earthsea\")\n .keyboard(\"pl\")\n .language(\"en\")\n .maxWorkers(5)\n .migrationCidr(\"10.0.0.0/8\")\n .migrationType(\"secure\")\n .nextId(OptionsNextIdArgs.builder()\n .lower(100)\n .upper(999999999)\n .build())\n .notify(OptionsNotifyArgs.builder()\n .ha_fencing_mode(\"never\")\n .ha_fencing_target(\"default-matcher\")\n .package_replication(\"always\")\n .package_replication_target(\"default-matcher\")\n .package_updates(\"always\")\n .package_updates_target(\"default-matcher\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n options:\n type: proxmoxve:Cluster:Options\n properties:\n bandwidthLimitDefault: 666666\n bandwidthLimitMigration: 555555\n emailFrom: ged@gont.earthsea\n keyboard: pl\n language: en\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 ha_fencing_mode: never\n ha_fencing_target: default-matcher\n package_replication: always\n package_replication_target: default-matcher\n package_updates: always\n package_updates_target: default-matcher\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nCluster options are global and can be imported using e.g.:\n\n```sh\n$ pulumi import proxmoxve:Cluster/options:Options options cluster\n```\n\n","properties":{"bandwidthLimitClone":{"type":"integer","description":"Clone I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitDefault":{"type":"integer","description":"Default I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitMigration":{"type":"integer","description":"Migration I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitMove":{"type":"integer","description":"Move I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitRestore":{"type":"integer","description":"Restore I/O bandwidth limit in KiB/s.\n"},"console":{"type":"string","description":"Select the default Console viewer. Must be `applet` | `vv`| `html5` | `xtermjs`. 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 `static` | `basic` (default is `basic`).\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 `freeze` | `failover` | `migrate` | `conditional` (default is `conditional`).\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 `de` | `de-ch` | `da` | `en-gb` | `en-us` | `es` | `fi` | `fr` | `fr-be` | `fr-ca` | `fr-ch` | `hu` | `is` | `it` | `ja` | `lt` | `mk` | `nl` | `no` | `pl` | `pt` | `pt-br` | `sv` | `sl` | `tr`.\n"},"language":{"type":"string","description":"Default GUI language. Must be `ca` | `da` | `de` | `en` | `es` | `eu` | `fa` | `fr` | `he` | `it` | `ja` | `nb` | `nn` | `pl` | `pt_BR` | `ru` | `sl` | `sv` | `tr` | `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 `secure` | `insecure` (default is `secure`).\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 `applet` | `vv`| `html5` | `xtermjs`. 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 `static` | `basic` (default is `basic`).\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 `freeze` | `failover` | `migrate` | `conditional` (default is `conditional`).\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 `de` | `de-ch` | `da` | `en-gb` | `en-us` | `es` | `fi` | `fr` | `fr-be` | `fr-ca` | `fr-ch` | `hu` | `is` | `it` | `ja` | `lt` | `mk` | `nl` | `no` | `pl` | `pt` | `pt-br` | `sv` | `sl` | `tr`.\n"},"language":{"type":"string","description":"Default GUI language. Must be `ca` | `da` | `de` | `en` | `es` | `eu` | `fa` | `fr` | `he` | `it` | `ja` | `nb` | `nn` | `pl` | `pt_BR` | `ru` | `sl` | `sv` | `tr` | `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 `secure` | `insecure` (default is `secure`).\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 `applet` | `vv`| `html5` | `xtermjs`. 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 `static` | `basic` (default is `basic`).\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 `freeze` | `failover` | `migrate` | `conditional` (default is `conditional`).\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 `de` | `de-ch` | `da` | `en-gb` | `en-us` | `es` | `fi` | `fr` | `fr-be` | `fr-ca` | `fr-ch` | `hu` | `is` | `it` | `ja` | `lt` | `mk` | `nl` | `no` | `pl` | `pt` | `pt-br` | `sv` | `sl` | `tr`.\n"},"language":{"type":"string","description":"Default GUI language. Must be `ca` | `da` | `de` | `en` | `es` | `eu` | `fa` | `fr` | `he` | `it` | `ja` | `nb` | `nn` | `pl` | `pt_BR` | `ru` | `sl` | `sv` | `tr` | `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 `secure` | `insecure` (default is `secure`).\n"},"nextId":{"$ref":"#/types/proxmoxve:Cluster/OptionsNextId:OptionsNextId","description":"The ranges for the next free VM ID auto-selection pool.\n"},"notify":{"$ref":"#/types/proxmoxve:Cluster/OptionsNotify:OptionsNotify","description":"Cluster-wide notification settings.\n"}},"type":"object"}},"proxmoxve:Download/file:File":{"description":"Manages files upload using PVE download-url API. It can be fully compatible and faster replacement for image files created using `proxmoxve.Storage.File`. Supports images for VMs (ISO 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## 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(\"release20231228Debian12BookwormQcow2Img\", {\n checksum: \"d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\",\n checksumAlgorithm: \"sha512\",\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});\nconst latestDebian12BookwormQcow2Img = new proxmoxve.download.File(\"latestDebian12BookwormQcow2Img\", {\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 latestUbuntu22JammyQcow2Img = new proxmoxve.download.File(\"latestUbuntu22JammyQcow2Img\", {\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(\"latestStaticUbuntu24NobleQcow2Img\", {\n contentType: \"iso\",\n datastoreId: \"local\",\n nodeName: \"pve\",\n overwrite: false,\n url: \"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\",\n});\nconst release20231211Ubuntu22JammyLxcImg = new proxmoxve.download.File(\"release20231211Ubuntu22JammyLxcImg\", {\n checksum: \"c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e\",\n checksumAlgorithm: \"sha256\",\n contentType: \"vztmpl\",\n datastoreId: \"local\",\n nodeName: \"pve\",\n uploadTimeout: 4444,\n url: \"https://cloud-images.ubuntu.com/releases/22.04/release-20231211/ubuntu-22.04-server-cloudimg-amd64-root.tar.xz\",\n});\nconst latestUbuntu22JammyLxcImg = new proxmoxve.download.File(\"latestUbuntu22JammyLxcImg\", {\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(\"release20231228Debian12BookwormQcow2Img\",\n checksum=\"d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\",\n checksum_algorithm=\"sha512\",\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\")\nlatest_debian12_bookworm_qcow2_img = proxmoxve.download.File(\"latestDebian12BookwormQcow2Img\",\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_ubuntu22_jammy_qcow2_img = proxmoxve.download.File(\"latestUbuntu22JammyQcow2Img\",\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(\"latestStaticUbuntu24NobleQcow2Img\",\n content_type=\"iso\",\n datastore_id=\"local\",\n node_name=\"pve\",\n overwrite=False,\n url=\"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\")\nrelease20231211_ubuntu22_jammy_lxc_img = proxmoxve.download.File(\"release20231211Ubuntu22JammyLxcImg\",\n checksum=\"c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e\",\n checksum_algorithm=\"sha256\",\n content_type=\"vztmpl\",\n datastore_id=\"local\",\n node_name=\"pve\",\n upload_timeout=4444,\n url=\"https://cloud-images.ubuntu.com/releases/22.04/release-20231211/ubuntu-22.04-server-cloudimg-amd64-root.tar.xz\")\nlatest_ubuntu22_jammy_lxc_img = proxmoxve.download.File(\"latestUbuntu22JammyLxcImg\",\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(\"release20231228Debian12BookwormQcow2Img\", new()\n {\n Checksum = \"d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\",\n ChecksumAlgorithm = \"sha512\",\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 });\n\n var latestDebian12BookwormQcow2Img = new ProxmoxVE.Download.File(\"latestDebian12BookwormQcow2Img\", 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 latestUbuntu22JammyQcow2Img = new ProxmoxVE.Download.File(\"latestUbuntu22JammyQcow2Img\", 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(\"latestStaticUbuntu24NobleQcow2Img\", new()\n {\n ContentType = \"iso\",\n DatastoreId = \"local\",\n NodeName = \"pve\",\n Overwrite = false,\n Url = \"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\",\n });\n\n var release20231211Ubuntu22JammyLxcImg = new ProxmoxVE.Download.File(\"release20231211Ubuntu22JammyLxcImg\", new()\n {\n Checksum = \"c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e\",\n ChecksumAlgorithm = \"sha256\",\n ContentType = \"vztmpl\",\n DatastoreId = \"local\",\n NodeName = \"pve\",\n UploadTimeout = 4444,\n Url = \"https://cloud-images.ubuntu.com/releases/22.04/release-20231211/ubuntu-22.04-server-cloudimg-amd64-root.tar.xz\",\n });\n\n var latestUbuntu22JammyLxcImg = new ProxmoxVE.Download.File(\"latestUbuntu22JammyLxcImg\", 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/v6/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, \"release20231228Debian12BookwormQcow2Img\", \u0026Download.FileArgs{\n\t\t\tChecksum: pulumi.String(\"d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\"),\n\t\t\tChecksumAlgorithm: pulumi.String(\"sha512\"),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Download.NewFile(ctx, \"latestDebian12BookwormQcow2Img\", \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, \"latestUbuntu22JammyQcow2Img\", \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, \"latestStaticUbuntu24NobleQcow2Img\", \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\tOverwrite: pulumi.Bool(false),\n\t\t\tUrl: pulumi.String(\"https://cloud-images.ubuntu.com/noble/current/noble-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, \"release20231211Ubuntu22JammyLxcImg\", \u0026Download.FileArgs{\n\t\t\tChecksum: pulumi.String(\"c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e\"),\n\t\t\tChecksumAlgorithm: pulumi.String(\"sha256\"),\n\t\t\tContentType: pulumi.String(\"vztmpl\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tUploadTimeout: pulumi.Int(4444),\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Download.NewFile(ctx, \"latestUbuntu22JammyLxcImg\", \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 com.pulumi.proxmoxve.Download.File;\nimport com.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 .checksum(\"d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\")\n .checksumAlgorithm(\"sha512\")\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 .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 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 .overwrite(false)\n .url(\"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\")\n .build());\n\n var release20231211Ubuntu22JammyLxcImg = new File(\"release20231211Ubuntu22JammyLxcImg\", FileArgs.builder()\n .checksum(\"c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e\")\n .checksumAlgorithm(\"sha256\")\n .contentType(\"vztmpl\")\n .datastoreId(\"local\")\n .nodeName(\"pve\")\n .uploadTimeout(4444)\n .url(\"https://cloud-images.ubuntu.com/releases/22.04/release-20231211/ubuntu-22.04-server-cloudimg-amd64-root.tar.xz\")\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 properties:\n checksum: d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\n checksumAlgorithm: sha512\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 latestDebian12BookwormQcow2Img:\n type: proxmoxve:Download:File\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 latestUbuntu22JammyQcow2Img:\n type: proxmoxve:Download:File\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 properties:\n contentType: iso\n datastoreId: local\n nodeName: pve\n overwrite: false\n url: https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\n release20231211Ubuntu22JammyLxcImg:\n type: proxmoxve:Download:File\n properties:\n checksum: c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e\n checksumAlgorithm: sha256\n contentType: vztmpl\n datastoreId: local\n nodeName: pve\n uploadTimeout: 4444\n url: https://cloud-images.ubuntu.com/releases/22.04/release-20231211/ubuntu-22.04-server-cloudimg-amd64-root.tar.xz\n latestUbuntu22JammyLxcImg:\n type: proxmoxve:Download:File\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 `md5` | `sha1` | `sha224` | `sha256` | `sha384` | `sha512`.\n"},"contentType":{"type":"string","description":"The file content type. Must be `iso` for VM images or `vztmpl` 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 `gz` | `lzo` | `zst`.\n"},"fileName":{"type":"string","description":"The file name. If not provided, it is calculated using `url`. PVE will raise 'wrong file extension' error for some popular extensions file `.raw` or `.qcow2`. Workaround is to use e.g. `.img` instead.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"overwrite":{"type":"boolean","description":"If `true` and size of uploaded file is different, than size from `url` Content-Length header, file will be downloaded again. If `false`, there will be no checks.\n"},"overwriteUnmanaged":{"type":"boolean","description":"If `true` and a file with the same name already exists in the datastore, it will be deleted and the new file will be downloaded. If `false` and the file already exists, an error will be returned.\n"},"size":{"type":"integer","description":"The file size.\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. Format `https?://.*`.\n"},"verify":{"type":"boolean","description":"By default `true`. If `false`, 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 `md5` | `sha1` | `sha224` | `sha256` | `sha384` | `sha512`.\n"},"contentType":{"type":"string","description":"The file content type. Must be `iso` for VM images or `vztmpl` 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 `gz` | `lzo` | `zst`.\n"},"fileName":{"type":"string","description":"The file name. If not provided, it is calculated using `url`. PVE will raise 'wrong file extension' error for some popular extensions file `.raw` or `.qcow2`. Workaround is to use e.g. `.img` instead.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"overwrite":{"type":"boolean","description":"If `true` and size of uploaded file is different, than size from `url` Content-Length header, file will be downloaded again. If `false`, there will be no checks.\n"},"overwriteUnmanaged":{"type":"boolean","description":"If `true` and a file with the same name already exists in the datastore, it will be deleted and the new file will be downloaded. If `false` 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. Format `https?://.*`.\n"},"verify":{"type":"boolean","description":"By default `true`. If `false`, 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 `md5` | `sha1` | `sha224` | `sha256` | `sha384` | `sha512`.\n"},"contentType":{"type":"string","description":"The file content type. Must be `iso` for VM images or `vztmpl` 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 `gz` | `lzo` | `zst`.\n"},"fileName":{"type":"string","description":"The file name. If not provided, it is calculated using `url`. PVE will raise 'wrong file extension' error for some popular extensions file `.raw` or `.qcow2`. Workaround is to use e.g. `.img` instead.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"overwrite":{"type":"boolean","description":"If `true` and size of uploaded file is different, than size from `url` Content-Length header, file will be downloaded again. If `false`, there will be no checks.\n"},"overwriteUnmanaged":{"type":"boolean","description":"If `true` and a file with the same name already exists in the datastore, it will be deleted and the new file will be downloaded. If `false` and the file already exists, an error will be returned.\n"},"size":{"type":"integer","description":"The file size.\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. Format `https?://.*`.\n"},"verify":{"type":"boolean","description":"By default `true`. If `false`, no SSL/TLS certificates will be verified.\n"}},"type":"object"}},"proxmoxve:HA/hAGroup:HAGroup":{"description":"Manages a High Availability group in a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.ha.HAGroup(\"example\", {\n group: \"example\",\n comment: \"This is a comment.\",\n nodes: {\n node1: undefined,\n node2: 2,\n node3: 1,\n },\n restricted: true,\n noFailback: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.ha.HAGroup(\"example\",\n group=\"example\",\n comment=\"This is a comment.\",\n nodes={\n \"node1\": None,\n \"node2\": 2,\n \"node3\": 1,\n },\n restricted=True,\n no_failback=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new ProxmoxVE.HA.HAGroup(\"example\", new()\n {\n Group = \"example\",\n Comment = \"This is a comment.\",\n Nodes = \n {\n { \"node1\", null },\n { \"node2\", 2 },\n { \"node3\", 1 },\n },\n Restricted = true,\n NoFailback = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/HA\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := HA.NewHAGroup(ctx, \"example\", \u0026HA.HAGroupArgs{\n\t\t\tGroup: pulumi.String(\"example\"),\n\t\t\tComment: pulumi.String(\"This is a comment.\"),\n\t\t\tNodes: pulumi.IntMap{\n\t\t\t\t\"node1\": nil,\n\t\t\t\t\"node2\": pulumi.Int(2),\n\t\t\t\t\"node3\": pulumi.Int(1),\n\t\t\t},\n\t\t\tRestricted: pulumi.Bool(true),\n\t\t\tNoFailback: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.HA.HAGroup;\nimport com.pulumi.proxmoxve.HA.HAGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new HAGroup(\"example\", HAGroupArgs.builder()\n .group(\"example\")\n .comment(\"This is a comment.\")\n .nodes(Map.ofEntries(\n Map.entry(\"node1\", null),\n Map.entry(\"node2\", 2),\n Map.entry(\"node3\", 1)\n ))\n .restricted(true)\n .noFailback(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:HA:HAGroup\n properties:\n group: example\n comment: This is a comment.\n # Member nodes, with or without priority.\n nodes:\n node1: null\n node2: 2\n node3: 1\n restricted: true\n noFailback: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nHA groups can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:HA/hAGroup:HAGroup example example\n```\n\n","properties":{"comment":{"type":"string","description":"The comment associated with this group\n"},"group":{"type":"string","description":"The identifier of the High Availability group to manage.\n"},"noFailback":{"type":"boolean","description":"A flag that indicates that failing back to a higher priority node is disabled for this HA group. Defaults to `false`.\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 `null` 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 `false`.\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 `false`.\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 `null` 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 `false`.\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 `false`.\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 `null` 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 `false`.\n"}},"type":"object"}},"proxmoxve:HA/hAResource:HAResource":{"description":"Manages Proxmox HA resources.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.ha.HAResource(\"example\", {\n resourceId: \"vm:123\",\n state: \"started\",\n group: \"example\",\n comment: \"Managed by Terraform\",\n}, {\n dependsOn: [proxmox_virtual_environment_hagroup.example],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.ha.HAResource(\"example\",\n resource_id=\"vm:123\",\n state=\"started\",\n group=\"example\",\n comment=\"Managed by Terraform\",\n opts = pulumi.ResourceOptions(depends_on=[proxmox_virtual_environment_hagroup[\"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 = new ProxmoxVE.HA.HAResource(\"example\", new()\n {\n ResourceId = \"vm:123\",\n State = \"started\",\n Group = \"example\",\n Comment = \"Managed by Terraform\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxmox_virtual_environment_hagroup.Example,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/HA\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := HA.NewHAResource(ctx, \"example\", \u0026HA.HAResourceArgs{\n\t\t\tResourceId: pulumi.String(\"vm:123\"),\n\t\t\tState: pulumi.String(\"started\"),\n\t\t\tGroup: pulumi.String(\"example\"),\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxmox_virtual_environment_hagroup.Example,\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.HA.HAResource;\nimport com.pulumi.proxmoxve.HA.HAResourceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new HAResource(\"example\", HAResourceArgs.builder()\n .resourceId(\"vm:123\")\n .state(\"started\")\n .group(\"example\")\n .comment(\"Managed by Terraform\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxmox_virtual_environment_hagroup.example())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:HA:HAResource\n properties:\n resourceId: vm:123\n state: started\n group: example\n comment: Managed by Terraform\n options:\n dependson:\n - ${proxmox_virtual_environment_hagroup.example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nHA resources can be imported using their identifiers, e.g.:\n\n```sh\n$ pulumi import proxmoxve:HA/hAResource:HAResource example vm:123\n```\n\n","properties":{"comment":{"type":"string","description":"The comment associated with this resource.\n"},"group":{"type":"string","description":"The identifier of the High Availability group this resource is a member of.\n"},"maxRelocate":{"type":"integer","description":"The maximal number of relocation attempts.\n"},"maxRestart":{"type":"integer","description":"The maximal number of restart attempts.\n"},"resourceId":{"type":"string","description":"The Proxmox HA resource identifier\n"},"state":{"type":"string","description":"The desired state of the resource.\n"},"type":{"type":"string","description":"The type of HA resources to create. If unset, it will be deduced from the `resource_id`.\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 `resource_id`.\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 `resource_id`.\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```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Hardware.Pci;\nimport com.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 .maps(PciMapArgs.builder()\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 .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 # The actual map of devices.\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 mediatedDevices: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nA PCI hardware mapping can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:Hardware/mapping/pci:Pci example example\n```\n\n","properties":{"comment":{"type":"string","description":"The comment of this PCI hardware mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/PciMap:PciMap"},"description":"The actual map of devices for the PCI hardware mapping.\n"},"mediatedDevices":{"type":"boolean","description":"Indicates whether to enable mediated devices.\n"},"name":{"type":"string","description":"The name of this PCI hardware mapping.\n"}},"required":["maps","mediatedDevices","name"],"inputProperties":{"comment":{"type":"string","description":"The comment of this PCI hardware mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/PciMap:PciMap"},"description":"The actual map of devices for the PCI hardware mapping.\n"},"mediatedDevices":{"type":"boolean","description":"Indicates whether to enable mediated devices.\n"},"name":{"type":"string","description":"The name of this PCI hardware mapping.\n"}},"requiredInputs":["maps"],"stateInputs":{"description":"Input properties used for looking up and filtering Pci resources.\n","properties":{"comment":{"type":"string","description":"The comment of this PCI hardware mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/PciMap:PciMap"},"description":"The actual map of devices for the PCI hardware mapping.\n"},"mediatedDevices":{"type":"boolean","description":"Indicates whether to enable mediated devices.\n"},"name":{"type":"string","description":"The name of this PCI hardware mapping.\n"}},"type":"object"}},"proxmoxve:Hardware/mapping/usb:Usb":{"description":"Manages a USB hardware mapping in a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.hardware.mapping.Usb(\"example\", {\n comment: \"This is a comment\",\n 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 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 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/v6/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\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 com.pulumi.proxmoxve.Hardware.Usb;\nimport com.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 .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 # The actual map of devices.\n maps:\n - comment: This is a device specific comment\n id: 8087:0a2b\n node: pve\n path: 1-8.2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nA USB hardware mapping can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:Hardware/mapping/usb:Usb example example\n```\n\n","properties":{"comment":{"type":"string","description":"The comment of this USB hardware mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/UsbMap:UsbMap"},"description":"The actual map of devices for the hardware mapping.\n"},"name":{"type":"string","description":"The name of this hardware mapping.\n"}},"required":["maps","name"],"inputProperties":{"comment":{"type":"string","description":"The comment of this USB hardware mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/UsbMap:UsbMap"},"description":"The actual map of devices for the hardware mapping.\n"},"name":{"type":"string","description":"The name of this hardware mapping.\n"}},"requiredInputs":["maps"],"stateInputs":{"description":"Input properties used for looking up and filtering Usb resources.\n","properties":{"comment":{"type":"string","description":"The comment of this USB hardware mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/UsbMap:UsbMap"},"description":"The actual map of devices for the hardware mapping.\n"},"name":{"type":"string","description":"The name of this hardware mapping.\n"}},"type":"object"}},"proxmoxve:Network/firewall:Firewall":{"description":"Manages firewall options on the cluster level.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.network.Firewall(\"example\", {\n ebtables: false,\n enabled: false,\n inputPolicy: \"DROP\",\n logRatelimit: {\n burst: 10,\n enabled: false,\n rate: \"5/second\",\n },\n outputPolicy: \"ACCEPT\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.network.Firewall(\"example\",\n ebtables=False,\n enabled=False,\n input_policy=\"DROP\",\n log_ratelimit={\n \"burst\": 10,\n \"enabled\": False,\n \"rate\": \"5/second\",\n },\n output_policy=\"ACCEPT\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new ProxmoxVE.Network.Firewall(\"example\", new()\n {\n Ebtables = false,\n Enabled = false,\n InputPolicy = \"DROP\",\n LogRatelimit = new ProxmoxVE.Network.Inputs.FirewallLogRatelimitArgs\n {\n Burst = 10,\n Enabled = false,\n Rate = \"5/second\",\n },\n OutputPolicy = \"ACCEPT\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.NewFirewall(ctx, \"example\", \u0026Network.FirewallArgs{\n\t\t\tEbtables: pulumi.Bool(false),\n\t\t\tEnabled: pulumi.Bool(false),\n\t\t\tInputPolicy: pulumi.String(\"DROP\"),\n\t\t\tLogRatelimit: \u0026network.FirewallLogRatelimitArgs{\n\t\t\t\tBurst: pulumi.Int(10),\n\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t\tRate: pulumi.String(\"5/second\"),\n\t\t\t},\n\t\t\tOutputPolicy: pulumi.String(\"ACCEPT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.Firewall;\nimport com.pulumi.proxmoxve.Network.FirewallArgs;\nimport com.pulumi.proxmoxve.Network.inputs.FirewallLogRatelimitArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Firewall(\"example\", FirewallArgs.builder()\n .ebtables(false)\n .enabled(false)\n .inputPolicy(\"DROP\")\n .logRatelimit(FirewallLogRatelimitArgs.builder()\n .burst(10)\n .enabled(false)\n .rate(\"5/second\")\n .build())\n .outputPolicy(\"ACCEPT\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:Network:Firewall\n properties:\n ebtables: false\n enabled: false\n inputPolicy: DROP\n logRatelimit:\n burst: 10\n enabled: false\n rate: 5/second\n outputPolicy: ACCEPT\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Important Notes\n\nBe careful not to use this resource multiple times for the same node.\n\n## Import\n\nInstances can be imported without an ID, but you still need to pass one, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Network/firewall:Firewall example example\n```\n\n","properties":{"ebtables":{"type":"boolean","description":"Enable ebtables rules cluster wide.\n"},"enabled":{"type":"boolean","description":"Enable or disable the firewall cluster wide.\n"},"inputPolicy":{"type":"string","description":"The default input policy (`ACCEPT`, `DROP`, `REJECT`).\n"},"logRatelimit":{"$ref":"#/types/proxmoxve:Network/FirewallLogRatelimit:FirewallLogRatelimit","description":"The log rate limit.\n"},"outputPolicy":{"type":"string","description":"The default output policy (`ACCEPT`, `DROP`, `REJECT`).\n"}},"inputProperties":{"ebtables":{"type":"boolean","description":"Enable ebtables rules cluster wide.\n"},"enabled":{"type":"boolean","description":"Enable or disable the firewall cluster wide.\n"},"inputPolicy":{"type":"string","description":"The default input policy (`ACCEPT`, `DROP`, `REJECT`).\n"},"logRatelimit":{"$ref":"#/types/proxmoxve:Network/FirewallLogRatelimit:FirewallLogRatelimit","description":"The log rate limit.\n"},"outputPolicy":{"type":"string","description":"The default output policy (`ACCEPT`, `DROP`, `REJECT`).\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering Firewall resources.\n","properties":{"ebtables":{"type":"boolean","description":"Enable ebtables rules cluster wide.\n"},"enabled":{"type":"boolean","description":"Enable or disable the firewall cluster wide.\n"},"inputPolicy":{"type":"string","description":"The default input policy (`ACCEPT`, `DROP`, `REJECT`).\n"},"logRatelimit":{"$ref":"#/types/proxmoxve:Network/FirewallLogRatelimit:FirewallLogRatelimit","description":"The log rate limit.\n"},"outputPolicy":{"type":"string","description":"The default output policy (`ACCEPT`, `DROP`, `REJECT`).\n"}},"type":"object"}},"proxmoxve:Network/firewallAlias:FirewallAlias":{"description":"Aliases are used to see what devices or group of devices are affected by a rule.\nWe can create aliases to identify an IP address or a network. Aliases can be\ncreated on the cluster level, on VM / Container level.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst localNetwork = new proxmoxve.network.FirewallAlias(\"localNetwork\", {\n nodeName: proxmox_virtual_environment_vm.example.node_name,\n vmId: proxmox_virtual_environment_vm.example.vm_id,\n cidr: \"192.168.0.0/23\",\n comment: \"Managed by Terraform\",\n}, {\n dependsOn: [proxmox_virtual_environment_vm.example],\n});\nconst ubuntuVm = new proxmoxve.network.FirewallAlias(\"ubuntuVm\", {\n cidr: \"192.168.0.1\",\n comment: \"Managed by Terraform\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nlocal_network = proxmoxve.network.FirewallAlias(\"localNetwork\",\n node_name=proxmox_virtual_environment_vm[\"example\"][\"node_name\"],\n vm_id=proxmox_virtual_environment_vm[\"example\"][\"vm_id\"],\n cidr=\"192.168.0.0/23\",\n comment=\"Managed by Terraform\",\n opts = pulumi.ResourceOptions(depends_on=[proxmox_virtual_environment_vm[\"example\"]]))\nubuntu_vm = proxmoxve.network.FirewallAlias(\"ubuntuVm\",\n cidr=\"192.168.0.1\",\n comment=\"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 localNetwork = new ProxmoxVE.Network.FirewallAlias(\"localNetwork\", new()\n {\n NodeName = proxmox_virtual_environment_vm.Example.Node_name,\n VmId = proxmox_virtual_environment_vm.Example.Vm_id,\n Cidr = \"192.168.0.0/23\",\n Comment = \"Managed by Terraform\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxmox_virtual_environment_vm.Example,\n },\n });\n\n var ubuntuVm = new ProxmoxVE.Network.FirewallAlias(\"ubuntuVm\", new()\n {\n Cidr = \"192.168.0.1\",\n Comment = \"Managed by Terraform\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.NewFirewallAlias(ctx, \"localNetwork\", \u0026Network.FirewallAliasArgs{\n\t\t\tNodeName: pulumi.Any(proxmox_virtual_environment_vm.Example.Node_name),\n\t\t\tVmId: pulumi.Any(proxmox_virtual_environment_vm.Example.Vm_id),\n\t\t\tCidr: pulumi.String(\"192.168.0.0/23\"),\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxmox_virtual_environment_vm.Example,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Network.NewFirewallAlias(ctx, \"ubuntuVm\", \u0026Network.FirewallAliasArgs{\n\t\t\tCidr: pulumi.String(\"192.168.0.1\"),\n\t\t\tComment: pulumi.String(\"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 com.pulumi.proxmoxve.Network.FirewallAlias;\nimport com.pulumi.proxmoxve.Network.FirewallAliasArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var localNetwork = new FirewallAlias(\"localNetwork\", FirewallAliasArgs.builder()\n .nodeName(proxmox_virtual_environment_vm.example().node_name())\n .vmId(proxmox_virtual_environment_vm.example().vm_id())\n .cidr(\"192.168.0.0/23\")\n .comment(\"Managed by Terraform\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxmox_virtual_environment_vm.example())\n .build());\n\n var ubuntuVm = new FirewallAlias(\"ubuntuVm\", FirewallAliasArgs.builder()\n .cidr(\"192.168.0.1\")\n .comment(\"Managed by Terraform\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n localNetwork:\n type: proxmoxve:Network:FirewallAlias\n properties:\n nodeName: ${proxmox_virtual_environment_vm.example.node_name}\n vmId: ${proxmox_virtual_environment_vm.example.vm_id}\n cidr: 192.168.0.0/23\n comment: Managed by Terraform\n options:\n dependson:\n - ${proxmox_virtual_environment_vm.example}\n ubuntuVm:\n type: proxmoxve:Network:FirewallAlias\n properties:\n cidr: 192.168.0.1\n comment: Managed by Terraform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"cidr":{"type":"string","description":"Network/IP specification in CIDR format.\n"},"comment":{"type":"string","description":"Alias comment.\n"},"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"name":{"type":"string","description":"Alias name.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level aliases.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level aliases.\n"}},"required":["cidr","name"],"inputProperties":{"cidr":{"type":"string","description":"Network/IP specification in CIDR format.\n"},"comment":{"type":"string","description":"Alias comment.\n"},"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"name":{"type":"string","description":"Alias name.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level aliases.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level aliases.\n"}},"requiredInputs":["cidr"],"stateInputs":{"description":"Input properties used for looking up and filtering FirewallAlias resources.\n","properties":{"cidr":{"type":"string","description":"Network/IP specification in CIDR format.\n"},"comment":{"type":"string","description":"Alias comment.\n"},"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"name":{"type":"string","description":"Alias name.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level aliases.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level aliases.\n"}},"type":"object"}},"proxmoxve:Network/firewallIPSet:FirewallIPSet":{"description":"An IPSet allows us to group multiple IP addresses, IP subnets and aliases. 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 ipset = new proxmoxve.network.FirewallIPSet(\"ipset\", {\n nodeName: proxmox_virtual_environment_vm.example.node_name,\n vmId: proxmox_virtual_environment_vm.example.vm_id,\n comment: \"Managed by Terraform\",\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: [proxmox_virtual_environment_vm.example],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nipset = proxmoxve.network.FirewallIPSet(\"ipset\",\n node_name=proxmox_virtual_environment_vm[\"example\"][\"node_name\"],\n vm_id=proxmox_virtual_environment_vm[\"example\"][\"vm_id\"],\n comment=\"Managed by Terraform\",\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=[proxmox_virtual_environment_vm[\"example\"]]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ipset = new ProxmoxVE.Network.FirewallIPSet(\"ipset\", new()\n {\n NodeName = proxmox_virtual_environment_vm.Example.Node_name,\n VmId = proxmox_virtual_environment_vm.Example.Vm_id,\n Comment = \"Managed by Terraform\",\n Cidrs = new[]\n {\n new ProxmoxVE.Network.Inputs.FirewallIPSetCidrArgs\n {\n Name = \"192.168.0.0/23\",\n Comment = \"Local network 1\",\n },\n new ProxmoxVE.Network.Inputs.FirewallIPSetCidrArgs\n {\n Name = \"192.168.0.1\",\n Comment = \"Server 1\",\n Nomatch = true,\n },\n new ProxmoxVE.Network.Inputs.FirewallIPSetCidrArgs\n {\n Name = \"192.168.2.1\",\n Comment = \"Server 1\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxmox_virtual_environment_vm.Example,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.NewFirewallIPSet(ctx, \"ipset\", \u0026Network.FirewallIPSetArgs{\n\t\t\tNodeName: pulumi.Any(proxmox_virtual_environment_vm.Example.Node_name),\n\t\t\tVmId: pulumi.Any(proxmox_virtual_environment_vm.Example.Vm_id),\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t\tCidrs: network.FirewallIPSetCidrArray{\n\t\t\t\t\u0026network.FirewallIPSetCidrArgs{\n\t\t\t\t\tName: pulumi.String(\"192.168.0.0/23\"),\n\t\t\t\t\tComment: pulumi.String(\"Local network 1\"),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallIPSetCidrArgs{\n\t\t\t\t\tName: pulumi.String(\"192.168.0.1\"),\n\t\t\t\t\tComment: pulumi.String(\"Server 1\"),\n\t\t\t\t\tNomatch: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallIPSetCidrArgs{\n\t\t\t\t\tName: pulumi.String(\"192.168.2.1\"),\n\t\t\t\t\tComment: pulumi.String(\"Server 1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxmox_virtual_environment_vm.Example,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.FirewallIPSet;\nimport com.pulumi.proxmoxve.Network.FirewallIPSetArgs;\nimport com.pulumi.proxmoxve.Network.inputs.FirewallIPSetCidrArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ipset = new FirewallIPSet(\"ipset\", FirewallIPSetArgs.builder()\n .nodeName(proxmox_virtual_environment_vm.example().node_name())\n .vmId(proxmox_virtual_environment_vm.example().vm_id())\n .comment(\"Managed by Terraform\")\n .cidrs( \n FirewallIPSetCidrArgs.builder()\n .name(\"192.168.0.0/23\")\n .comment(\"Local network 1\")\n .build(),\n FirewallIPSetCidrArgs.builder()\n .name(\"192.168.0.1\")\n .comment(\"Server 1\")\n .nomatch(true)\n .build(),\n FirewallIPSetCidrArgs.builder()\n .name(\"192.168.2.1\")\n .comment(\"Server 1\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxmox_virtual_environment_vm.example())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ipset:\n type: proxmoxve:Network:FirewallIPSet\n properties:\n nodeName: ${proxmox_virtual_environment_vm.example.node_name}\n vmId: ${proxmox_virtual_environment_vm.example.vm_id}\n comment: Managed by Terraform\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 - ${proxmox_virtual_environment_vm.example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"cidrs":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallIPSetCidr:FirewallIPSetCidr"},"description":"IP/CIDR block (multiple blocks supported).\n"},"comment":{"type":"string","description":"IPSet comment.\n"},"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"name":{"type":"string","description":"IPSet 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":["name"],"inputProperties":{"cidrs":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallIPSetCidr:FirewallIPSetCidr"},"description":"IP/CIDR block (multiple blocks supported).\n","willReplaceOnChanges":true},"comment":{"type":"string","description":"IPSet comment.\n"},"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"name":{"type":"string","description":"IPSet 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"}},"stateInputs":{"description":"Input properties used for looking up and filtering FirewallIPSet resources.\n","properties":{"cidrs":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallIPSetCidr:FirewallIPSetCidr"},"description":"IP/CIDR block (multiple blocks supported).\n","willReplaceOnChanges":true},"comment":{"type":"string","description":"IPSet comment.\n"},"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"name":{"type":"string","description":"IPSet name.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level aliases.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level aliases.\n"}},"type":"object"}},"proxmoxve:Network/firewallOptions:FirewallOptions":{"description":"Manages firewall options on VM / Container level.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.network.FirewallOptions(\"example\", {\n nodeName: proxmox_virtual_environment_vm.example.node_name,\n vmId: proxmox_virtual_environment_vm.example.vm_id,\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: [proxmox_virtual_environment_vm.example],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.network.FirewallOptions(\"example\",\n node_name=proxmox_virtual_environment_vm[\"example\"][\"node_name\"],\n vm_id=proxmox_virtual_environment_vm[\"example\"][\"vm_id\"],\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=[proxmox_virtual_environment_vm[\"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 = new ProxmoxVE.Network.FirewallOptions(\"example\", new()\n {\n NodeName = proxmox_virtual_environment_vm.Example.Node_name,\n VmId = proxmox_virtual_environment_vm.Example.Vm_id,\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 proxmox_virtual_environment_vm.Example,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.NewFirewallOptions(ctx, \"example\", \u0026Network.FirewallOptionsArgs{\n\t\t\tNodeName: pulumi.Any(proxmox_virtual_environment_vm.Example.Node_name),\n\t\t\tVmId: pulumi.Any(proxmox_virtual_environment_vm.Example.Vm_id),\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\tproxmox_virtual_environment_vm.Example,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.FirewallOptions;\nimport com.pulumi.proxmoxve.Network.FirewallOptionsArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new FirewallOptions(\"example\", FirewallOptionsArgs.builder()\n .nodeName(proxmox_virtual_environment_vm.example().node_name())\n .vmId(proxmox_virtual_environment_vm.example().vm_id())\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(proxmox_virtual_environment_vm.example())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:Network:FirewallOptions\n properties:\n nodeName: ${proxmox_virtual_environment_vm.example.node_name}\n vmId: ${proxmox_virtual_environment_vm.example.vm_id}\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 - ${proxmox_virtual_environment_vm.example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\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 (`emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`,\n`debug`, `nolog`).\n"},"logLevelOut":{"type":"string","description":"Log level for outgoing\npackets (`emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`,\n`debug`, `nolog`).\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. Leave empty for cluster level aliases.\n"}},"required":["nodeName"],"inputProperties":{"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\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 (`emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`,\n`debug`, `nolog`).\n"},"logLevelOut":{"type":"string","description":"Log level for outgoing\npackets (`emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`,\n`debug`, `nolog`).\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. Leave empty for cluster level aliases.\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering FirewallOptions resources.\n","properties":{"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\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 (`emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`,\n`debug`, `nolog`).\n"},"logLevelOut":{"type":"string","description":"Log level for outgoing\npackets (`emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`,\n`debug`, `nolog`).\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. Leave empty for cluster level aliases.\n"}},"type":"object"}},"proxmoxve:Network/firewallRules:FirewallRules":{"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. Rules can be created on the cluster\nlevel, 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 inbound = new proxmoxve.network.FirewallRules(\"inbound\", {\n nodeName: proxmox_virtual_environment_vm.example.node_name,\n vmId: proxmox_virtual_environment_vm.example.vm_id,\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: proxmox_virtual_environment_cluster_firewall_security_group.example.name,\n comment: \"From security group\",\n iface: \"net0\",\n },\n ],\n}, {\n dependsOn: [\n proxmox_virtual_environment_vm.example,\n proxmox_virtual_environment_cluster_firewall_security_group.example,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\ninbound = proxmoxve.network.FirewallRules(\"inbound\",\n node_name=proxmox_virtual_environment_vm[\"example\"][\"node_name\"],\n vm_id=proxmox_virtual_environment_vm[\"example\"][\"vm_id\"],\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\": proxmox_virtual_environment_cluster_firewall_security_group[\"example\"][\"name\"],\n \"comment\": \"From security group\",\n \"iface\": \"net0\",\n },\n ],\n opts = pulumi.ResourceOptions(depends_on=[\n proxmox_virtual_environment_vm[\"example\"],\n proxmox_virtual_environment_cluster_firewall_security_group[\"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 inbound = new ProxmoxVE.Network.FirewallRules(\"inbound\", new()\n {\n NodeName = proxmox_virtual_environment_vm.Example.Node_name,\n VmId = proxmox_virtual_environment_vm.Example.Vm_id,\n Rules = new[]\n {\n new ProxmoxVE.Network.Inputs.FirewallRulesRuleArgs\n {\n Type = \"in\",\n Action = \"ACCEPT\",\n Comment = \"Allow HTTP\",\n Dest = \"192.168.1.5\",\n Dport = \"80\",\n Proto = \"tcp\",\n Log = \"info\",\n },\n new ProxmoxVE.Network.Inputs.FirewallRulesRuleArgs\n {\n Type = \"in\",\n Action = \"ACCEPT\",\n Comment = \"Allow HTTPS\",\n Dest = \"192.168.1.5\",\n Dport = \"443\",\n Proto = \"tcp\",\n Log = \"info\",\n },\n new ProxmoxVE.Network.Inputs.FirewallRulesRuleArgs\n {\n SecurityGroup = proxmox_virtual_environment_cluster_firewall_security_group.Example.Name,\n Comment = \"From security group\",\n Iface = \"net0\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxmox_virtual_environment_vm.Example,\n proxmox_virtual_environment_cluster_firewall_security_group.Example,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.NewFirewallRules(ctx, \"inbound\", \u0026Network.FirewallRulesArgs{\n\t\t\tNodeName: pulumi.Any(proxmox_virtual_environment_vm.Example.Node_name),\n\t\t\tVmId: pulumi.Any(proxmox_virtual_environment_vm.Example.Vm_id),\n\t\t\tRules: network.FirewallRulesRuleArray{\n\t\t\t\t\u0026network.FirewallRulesRuleArgs{\n\t\t\t\t\tType: pulumi.String(\"in\"),\n\t\t\t\t\tAction: pulumi.String(\"ACCEPT\"),\n\t\t\t\t\tComment: pulumi.String(\"Allow HTTP\"),\n\t\t\t\t\tDest: pulumi.String(\"192.168.1.5\"),\n\t\t\t\t\tDport: pulumi.String(\"80\"),\n\t\t\t\t\tProto: pulumi.String(\"tcp\"),\n\t\t\t\t\tLog: pulumi.String(\"info\"),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallRulesRuleArgs{\n\t\t\t\t\tType: pulumi.String(\"in\"),\n\t\t\t\t\tAction: pulumi.String(\"ACCEPT\"),\n\t\t\t\t\tComment: pulumi.String(\"Allow HTTPS\"),\n\t\t\t\t\tDest: pulumi.String(\"192.168.1.5\"),\n\t\t\t\t\tDport: pulumi.String(\"443\"),\n\t\t\t\t\tProto: pulumi.String(\"tcp\"),\n\t\t\t\t\tLog: pulumi.String(\"info\"),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallRulesRuleArgs{\n\t\t\t\t\tSecurityGroup: pulumi.Any(proxmox_virtual_environment_cluster_firewall_security_group.Example.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\tproxmox_virtual_environment_vm.Example,\n\t\t\tproxmox_virtual_environment_cluster_firewall_security_group.Example,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.FirewallRules;\nimport com.pulumi.proxmoxve.Network.FirewallRulesArgs;\nimport com.pulumi.proxmoxve.Network.inputs.FirewallRulesRuleArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var inbound = new FirewallRules(\"inbound\", FirewallRulesArgs.builder()\n .nodeName(proxmox_virtual_environment_vm.example().node_name())\n .vmId(proxmox_virtual_environment_vm.example().vm_id())\n .rules( \n FirewallRulesRuleArgs.builder()\n .type(\"in\")\n .action(\"ACCEPT\")\n .comment(\"Allow HTTP\")\n .dest(\"192.168.1.5\")\n .dport(\"80\")\n .proto(\"tcp\")\n .log(\"info\")\n .build(),\n FirewallRulesRuleArgs.builder()\n .type(\"in\")\n .action(\"ACCEPT\")\n .comment(\"Allow HTTPS\")\n .dest(\"192.168.1.5\")\n .dport(\"443\")\n .proto(\"tcp\")\n .log(\"info\")\n .build(),\n FirewallRulesRuleArgs.builder()\n .securityGroup(proxmox_virtual_environment_cluster_firewall_security_group.example().name())\n .comment(\"From security group\")\n .iface(\"net0\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n proxmox_virtual_environment_vm.example(),\n proxmox_virtual_environment_cluster_firewall_security_group.example())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n inbound:\n type: proxmoxve:Network:FirewallRules\n properties:\n nodeName: ${proxmox_virtual_environment_vm.example.node_name}\n vmId: ${proxmox_virtual_environment_vm.example.vm_id}\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: ${proxmox_virtual_environment_cluster_firewall_security_group.example.name}\n comment: From security group\n iface: net0\n options:\n dependson:\n - ${proxmox_virtual_environment_vm.example}\n - ${proxmox_virtual_environment_cluster_firewall_security_group.example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level\nrules.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level rules.\n"},"rules":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallRulesRule:FirewallRulesRule"},"description":"Firewall rule block (multiple blocks supported).\nThe provider supports two types of the `rule` blocks:\n- A rule definition block, which includes the following arguments:\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level rules.\n"}},"required":["rules"],"inputProperties":{"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level\nrules.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level rules.\n"},"rules":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallRulesRule:FirewallRulesRule"},"description":"Firewall rule block (multiple blocks supported).\nThe provider supports two types of the `rule` blocks:\n- A rule definition block, which includes the following arguments:\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level rules.\n"}},"requiredInputs":["rules"],"stateInputs":{"description":"Input properties used for looking up and filtering FirewallRules resources.\n","properties":{"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level\nrules.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level rules.\n"},"rules":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallRulesRule:FirewallRulesRule"},"description":"Firewall rule block (multiple blocks supported).\nThe provider supports two types of the `rule` blocks:\n- A rule definition block, which includes the following arguments:\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level rules.\n"}},"type":"object"}},"proxmoxve:Network/firewallSecurityGroup:FirewallSecurityGroup":{"description":"A security group is a collection of rules, defined at cluster level, which can\nbe used in all VMs' rules. For example, you can define a group named “webserver”\nwith rules to open the http and https ports.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst webserver = new proxmoxve.network.FirewallSecurityGroup(\"webserver\", {\n comment: \"Managed by Terraform\",\n rules: [\n {\n action: \"ACCEPT\",\n comment: \"Allow HTTP\",\n dest: \"192.168.1.5\",\n dport: \"80\",\n log: \"info\",\n proto: \"tcp\",\n type: \"in\",\n },\n {\n action: \"ACCEPT\",\n comment: \"Allow HTTPS\",\n dest: \"192.168.1.5\",\n dport: \"443\",\n log: \"info\",\n proto: \"tcp\",\n type: \"in\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nwebserver = proxmoxve.network.FirewallSecurityGroup(\"webserver\",\n comment=\"Managed by Terraform\",\n rules=[\n {\n \"action\": \"ACCEPT\",\n \"comment\": \"Allow HTTP\",\n \"dest\": \"192.168.1.5\",\n \"dport\": \"80\",\n \"log\": \"info\",\n \"proto\": \"tcp\",\n \"type\": \"in\",\n },\n {\n \"action\": \"ACCEPT\",\n \"comment\": \"Allow HTTPS\",\n \"dest\": \"192.168.1.5\",\n \"dport\": \"443\",\n \"log\": \"info\",\n \"proto\": \"tcp\",\n \"type\": \"in\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var webserver = new ProxmoxVE.Network.FirewallSecurityGroup(\"webserver\", new()\n {\n Comment = \"Managed by Terraform\",\n Rules = new[]\n {\n new ProxmoxVE.Network.Inputs.FirewallSecurityGroupRuleArgs\n {\n Action = \"ACCEPT\",\n Comment = \"Allow HTTP\",\n Dest = \"192.168.1.5\",\n Dport = \"80\",\n Log = \"info\",\n Proto = \"tcp\",\n Type = \"in\",\n },\n new ProxmoxVE.Network.Inputs.FirewallSecurityGroupRuleArgs\n {\n Action = \"ACCEPT\",\n Comment = \"Allow HTTPS\",\n Dest = \"192.168.1.5\",\n Dport = \"443\",\n Log = \"info\",\n Proto = \"tcp\",\n Type = \"in\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.NewFirewallSecurityGroup(ctx, \"webserver\", \u0026Network.FirewallSecurityGroupArgs{\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t\tRules: network.FirewallSecurityGroupRuleArray{\n\t\t\t\t\u0026network.FirewallSecurityGroupRuleArgs{\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\tLog: pulumi.String(\"info\"),\n\t\t\t\t\tProto: pulumi.String(\"tcp\"),\n\t\t\t\t\tType: pulumi.String(\"in\"),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallSecurityGroupRuleArgs{\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\tLog: pulumi.String(\"info\"),\n\t\t\t\t\tProto: pulumi.String(\"tcp\"),\n\t\t\t\t\tType: pulumi.String(\"in\"),\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.Network.FirewallSecurityGroup;\nimport com.pulumi.proxmoxve.Network.FirewallSecurityGroupArgs;\nimport com.pulumi.proxmoxve.Network.inputs.FirewallSecurityGroupRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var webserver = new FirewallSecurityGroup(\"webserver\", FirewallSecurityGroupArgs.builder()\n .comment(\"Managed by Terraform\")\n .rules( \n FirewallSecurityGroupRuleArgs.builder()\n .action(\"ACCEPT\")\n .comment(\"Allow HTTP\")\n .dest(\"192.168.1.5\")\n .dport(\"80\")\n .log(\"info\")\n .proto(\"tcp\")\n .type(\"in\")\n .build(),\n FirewallSecurityGroupRuleArgs.builder()\n .action(\"ACCEPT\")\n .comment(\"Allow HTTPS\")\n .dest(\"192.168.1.5\")\n .dport(\"443\")\n .log(\"info\")\n .proto(\"tcp\")\n .type(\"in\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n webserver:\n type: proxmoxve:Network:FirewallSecurityGroup\n properties:\n comment: Managed by Terraform\n rules:\n - action: ACCEPT\n comment: Allow HTTP\n dest: 192.168.1.5\n dport: '80'\n log: info\n proto: tcp\n type: in\n - action: ACCEPT\n comment: Allow HTTPS\n dest: 192.168.1.5\n dport: '443'\n log: info\n proto: tcp\n type: in\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `name`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Network/firewallSecurityGroup:FirewallSecurityGroup webserver webserver\n```\n\n","properties":{"comment":{"type":"string","description":"Security group comment.\n"},"containerId":{"type":"integer","description":"The ID of the container to manage the firewall for.\n"},"name":{"type":"string","description":"Security group name.\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"rules":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallSecurityGroupRule:FirewallSecurityGroupRule"},"description":"Firewall rule block (multiple blocks supported).\n"},"vmId":{"type":"integer","description":"The ID of the VM to manage the firewall for.\n"}},"required":["name","rules"],"inputProperties":{"comment":{"type":"string","description":"Security group comment.\n"},"containerId":{"type":"integer","description":"The ID of the container to manage the firewall for.\n"},"name":{"type":"string","description":"Security group name.\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"rules":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallSecurityGroupRule:FirewallSecurityGroupRule"},"description":"Firewall rule block (multiple blocks supported).\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"The ID of the VM to manage the firewall for.\n"}},"requiredInputs":["rules"],"stateInputs":{"description":"Input properties used for looking up and filtering FirewallSecurityGroup resources.\n","properties":{"comment":{"type":"string","description":"Security group comment.\n"},"containerId":{"type":"integer","description":"The ID of the container to manage the firewall for.\n"},"name":{"type":"string","description":"Security group name.\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"rules":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallSecurityGroupRule:FirewallSecurityGroupRule"},"description":"Firewall rule block (multiple blocks supported).\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"The ID of the VM to manage the firewall for.\n"}},"type":"object"}},"proxmoxve:Network/networkBridge:NetworkBridge":{"description":"Manages a Linux Bridge network interface in a Proxmox VE node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst vlan99 = new proxmoxve.network.NetworkVlan(\"vlan99\", {nodeName: \"pve\"});\n//# or alternatively, use custom name:\n// name = \"vlan_lab\"\n// interface = \"eno0\"\n// vlan = 98\nconst vmbr99 = new proxmoxve.network.NetworkBridge(\"vmbr99\", {\n nodeName: \"pve\",\n address: \"99.99.99.99/16\",\n comment: \"vmbr99 comment\",\n ports: [\"ens18.99\"],\n}, {\n dependsOn: [vlan99],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nvlan99 = proxmoxve.network.NetworkVlan(\"vlan99\", node_name=\"pve\")\n## or alternatively, use custom name:\n# name = \"vlan_lab\"\n# interface = \"eno0\"\n# vlan = 98\nvmbr99 = proxmoxve.network.NetworkBridge(\"vmbr99\",\n node_name=\"pve\",\n address=\"99.99.99.99/16\",\n comment=\"vmbr99 comment\",\n ports=[\"ens18.99\"],\n opts = pulumi.ResourceOptions(depends_on=[vlan99]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var vlan99 = new ProxmoxVE.Network.NetworkVlan(\"vlan99\", new()\n {\n NodeName = \"pve\",\n });\n\n //# or alternatively, use custom name:\n // name = \"vlan_lab\"\n // interface = \"eno0\"\n // vlan = 98\n var vmbr99 = new ProxmoxVE.Network.NetworkBridge(\"vmbr99\", new()\n {\n NodeName = \"pve\",\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/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvlan99, err := Network.NewNetworkVlan(ctx, \"vlan99\", \u0026Network.NetworkVlanArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Network.NewNetworkBridge(ctx, \"vmbr99\", \u0026Network.NetworkBridgeArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\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 com.pulumi.proxmoxve.Network.NetworkVlan;\nimport com.pulumi.proxmoxve.Network.NetworkVlanArgs;\nimport com.pulumi.proxmoxve.Network.NetworkBridge;\nimport com.pulumi.proxmoxve.Network.NetworkBridgeArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var vlan99 = new NetworkVlan(\"vlan99\", NetworkVlanArgs.builder()\n .nodeName(\"pve\")\n .build());\n\n //# or alternatively, use custom name:\n // name = \"vlan_lab\"\n // interface = \"eno0\"\n // vlan = 98\n var vmbr99 = new NetworkBridge(\"vmbr99\", NetworkBridgeArgs.builder()\n .nodeName(\"pve\")\n .address(\"99.99.99.99/16\")\n .comment(\"vmbr99 comment\")\n .ports(\"ens18.99\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(vlan99)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n vmbr99:\n type: proxmoxve:Network:NetworkBridge\n properties:\n nodeName: pve\n address: 99.99.99.99/16\n comment: vmbr99 comment\n ports:\n - ens18.99\n options:\n dependson:\n - ${vlan99}\n vlan99:\n type: proxmoxve:Network:NetworkVlan\n properties:\n nodeName: pve\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\n#Interfaces can be imported using the `node_name:iface` format, e.g.\n\n```sh\n$ pulumi import proxmoxve:Network/networkBridge:NetworkBridge vmbr99 pve:vmbr99\n```\n\n","properties":{"address":{"type":"string","description":"The interface IPv4/CIDR address.\n"},"address6":{"type":"string","description":"The interface IPv6/CIDR address.\n"},"autostart":{"type":"boolean","description":"Automatically start interface on boot (defaults to `true`).\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 `vmbrN`, where N is a number between 0 and 9999.\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"ports":{"type":"array","items":{"type":"string"},"description":"The interface bridge ports.\n"},"vlanAware":{"type":"boolean","description":"Whether the interface bridge is VLAN aware (defaults to `false`).\n"}},"required":["autostart","name","nodeName","vlanAware"],"inputProperties":{"address":{"type":"string","description":"The interface IPv4/CIDR address.\n"},"address6":{"type":"string","description":"The interface IPv6/CIDR address.\n"},"autostart":{"type":"boolean","description":"Automatically start interface on boot (defaults to `true`).\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 `vmbrN`, where N is a number between 0 and 9999.\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"ports":{"type":"array","items":{"type":"string"},"description":"The interface bridge ports.\n"},"vlanAware":{"type":"boolean","description":"Whether the interface bridge is VLAN aware (defaults to `false`).\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering NetworkBridge resources.\n","properties":{"address":{"type":"string","description":"The interface IPv4/CIDR address.\n"},"address6":{"type":"string","description":"The interface IPv6/CIDR address.\n"},"autostart":{"type":"boolean","description":"Automatically start interface on boot (defaults to `true`).\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 `vmbrN`, where N is a number between 0 and 9999.\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"ports":{"type":"array","items":{"type":"string"},"description":"The interface bridge ports.\n"},"vlanAware":{"type":"boolean","description":"Whether the interface bridge is VLAN aware (defaults to `false`).\n"}},"type":"object"}},"proxmoxve:Network/networkVlan:NetworkVlan":{"description":"Manages a Linux VLAN network interface in a Proxmox VE node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\n// using VLAN tag\nconst vlan99 = new proxmoxve.network.NetworkVlan(\"vlan99\", {\n comment: \"VLAN 99\",\n nodeName: \"pve\",\n});\n// using custom network interface name\nconst vlan98 = new proxmoxve.network.NetworkVlan(\"vlan98\", {\n comment: \"VLAN 98\",\n \"interface\": \"eno0\",\n nodeName: \"pve\",\n vlan: 98,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# using VLAN tag\nvlan99 = proxmoxve.network.NetworkVlan(\"vlan99\",\n comment=\"VLAN 99\",\n node_name=\"pve\")\n# using custom network interface name\nvlan98 = proxmoxve.network.NetworkVlan(\"vlan98\",\n comment=\"VLAN 98\",\n interface=\"eno0\",\n node_name=\"pve\",\n vlan=98)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // using VLAN tag\n var vlan99 = new ProxmoxVE.Network.NetworkVlan(\"vlan99\", new()\n {\n Comment = \"VLAN 99\",\n NodeName = \"pve\",\n });\n\n // using custom network interface name\n var vlan98 = new ProxmoxVE.Network.NetworkVlan(\"vlan98\", new()\n {\n Comment = \"VLAN 98\",\n Interface = \"eno0\",\n NodeName = \"pve\",\n Vlan = 98,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// using VLAN tag\n\t\t_, err := Network.NewNetworkVlan(ctx, \"vlan99\", \u0026Network.NetworkVlanArgs{\n\t\t\tComment: pulumi.String(\"VLAN 99\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// using custom network interface name\n\t\t_, err = Network.NewNetworkVlan(ctx, \"vlan98\", \u0026Network.NetworkVlanArgs{\n\t\t\tComment: pulumi.String(\"VLAN 98\"),\n\t\t\tInterface: pulumi.String(\"eno0\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tVlan: pulumi.Int(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 com.pulumi.proxmoxve.Network.NetworkVlan;\nimport com.pulumi.proxmoxve.Network.NetworkVlanArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // using VLAN tag\n var vlan99 = new NetworkVlan(\"vlan99\", NetworkVlanArgs.builder()\n .comment(\"VLAN 99\")\n .nodeName(\"pve\")\n .build());\n\n // using custom network interface name\n var vlan98 = new NetworkVlan(\"vlan98\", NetworkVlanArgs.builder()\n .comment(\"VLAN 98\")\n .interface_(\"eno0\")\n .nodeName(\"pve\")\n .vlan(98)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # using VLAN tag\n vlan99:\n type: proxmoxve:Network:NetworkVlan\n properties:\n comment: VLAN 99\n nodeName: pve\n # using custom network interface name\n vlan98:\n type: proxmoxve:Network:NetworkVlan\n properties:\n comment: VLAN 98\n interface: eno0\n nodeName: pve\n vlan: 98\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\n#Interfaces can be imported using the `node_name:iface` format, e.g.\n\n```sh\n$ pulumi import proxmoxve:Network/networkVlan:NetworkVlan vlan99 pve:vlan99\n```\n\n","properties":{"address":{"type":"string","description":"The interface IPv4/CIDR address.\n"},"address6":{"type":"string","description":"The interface IPv6/CIDR address.\n"},"autostart":{"type":"boolean","description":"Automatically start interface on boot (defaults to `true`).\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 `name`.\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 `interface` and `vlan`), or use custom name, e.g. `vlan_lab` (`interface` and `vlan` are then required).\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"vlan":{"type":"integer","description":"The VLAN tag. See also `name`.\n"}},"required":["autostart","interface","name","nodeName","vlan"],"inputProperties":{"address":{"type":"string","description":"The interface IPv4/CIDR address.\n"},"address6":{"type":"string","description":"The interface IPv6/CIDR address.\n"},"autostart":{"type":"boolean","description":"Automatically start interface on boot (defaults to `true`).\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 `name`.\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 `interface` and `vlan`), or use custom name, e.g. `vlan_lab` (`interface` and `vlan` are then required).\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"vlan":{"type":"integer","description":"The VLAN tag. See also `name`.\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering NetworkVlan resources.\n","properties":{"address":{"type":"string","description":"The interface IPv4/CIDR address.\n"},"address6":{"type":"string","description":"The interface IPv6/CIDR address.\n"},"autostart":{"type":"boolean","description":"Automatically start interface on boot (defaults to `true`).\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 `name`.\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 `interface` and `vlan`), or use custom name, e.g. `vlan_lab` (`interface` and `vlan` are then required).\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"vlan":{"type":"integer","description":"The VLAN tag. See also `name`.\n"}},"type":"object"}},"proxmoxve:Permission/group:Group":{"description":"Manages a user group.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsTeam = new proxmoxve.permission.Group(\"operationsTeam\", {\n comment: \"Managed by Terraform\",\n groupId: \"operations-team\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_team = proxmoxve.permission.Group(\"operationsTeam\",\n comment=\"Managed by Terraform\",\n group_id=\"operations-team\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsTeam = new ProxmoxVE.Permission.Group(\"operationsTeam\", new()\n {\n Comment = \"Managed by Terraform\",\n GroupId = \"operations-team\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.NewGroup(ctx, \"operationsTeam\", \u0026Permission.GroupArgs{\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\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 com.pulumi.proxmoxve.Permission.Group;\nimport com.pulumi.proxmoxve.Permission.GroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var operationsTeam = new Group(\"operationsTeam\", GroupArgs.builder()\n .comment(\"Managed by Terraform\")\n .groupId(\"operations-team\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n operationsTeam:\n type: proxmoxve:Permission:Group\n properties:\n comment: Managed by Terraform\n groupId: operations-team\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `group_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Permission/group:Group operations_team operations-team\n```\n\n","properties":{"acls":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/GroupAcl:GroupAcl"},"description":"The access control list (multiple blocks supported).\n"},"comment":{"type":"string","description":"The group comment.\n"},"groupId":{"type":"string","description":"The group identifier.\n"},"members":{"type":"array","items":{"type":"string"},"description":"The group members as a list of `username@realm` entries\n"}},"required":["groupId","members"],"inputProperties":{"acls":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/GroupAcl:GroupAcl"},"description":"The access control list (multiple blocks supported).\n"},"comment":{"type":"string","description":"The group comment.\n"},"groupId":{"type":"string","description":"The group identifier.\n","willReplaceOnChanges":true}},"requiredInputs":["groupId"],"stateInputs":{"description":"Input properties used for looking up and filtering Group resources.\n","properties":{"acls":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/GroupAcl:GroupAcl"},"description":"The access control list (multiple blocks supported).\n"},"comment":{"type":"string","description":"The group comment.\n"},"groupId":{"type":"string","description":"The group identifier.\n","willReplaceOnChanges":true},"members":{"type":"array","items":{"type":"string"},"description":"The group members as a list of `username@realm` entries\n"}},"type":"object"}},"proxmoxve:Permission/pool:Pool":{"description":"Manages a resource pool.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsPool = new proxmoxve.permission.Pool(\"operationsPool\", {\n comment: \"Managed by Terraform\",\n poolId: \"operations-pool\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_pool = proxmoxve.permission.Pool(\"operationsPool\",\n comment=\"Managed by Terraform\",\n pool_id=\"operations-pool\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsPool = new ProxmoxVE.Permission.Pool(\"operationsPool\", new()\n {\n Comment = \"Managed by Terraform\",\n PoolId = \"operations-pool\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.NewPool(ctx, \"operationsPool\", \u0026Permission.PoolArgs{\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\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 com.pulumi.proxmoxve.Permission.Pool;\nimport com.pulumi.proxmoxve.Permission.PoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var operationsPool = new Pool(\"operationsPool\", PoolArgs.builder()\n .comment(\"Managed by Terraform\")\n .poolId(\"operations-pool\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n operationsPool:\n type: proxmoxve:Permission:Pool\n properties:\n comment: Managed by Terraform\n poolId: operations-pool\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `pool_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Permission/pool:Pool operations_pool operations-pool\n```\n\n","properties":{"comment":{"type":"string","description":"The pool comment.\n"},"members":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/PoolMember:PoolMember"},"description":"The pool members.\n"},"poolId":{"type":"string","description":"The pool identifier.\n"}},"required":["members","poolId"],"inputProperties":{"comment":{"type":"string","description":"The pool comment.\n"},"poolId":{"type":"string","description":"The pool identifier.\n","willReplaceOnChanges":true}},"requiredInputs":["poolId"],"stateInputs":{"description":"Input properties used for looking up and filtering Pool resources.\n","properties":{"comment":{"type":"string","description":"The pool comment.\n"},"members":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/PoolMember:PoolMember"},"description":"The pool members.\n"},"poolId":{"type":"string","description":"The pool identifier.\n","willReplaceOnChanges":true}},"type":"object"}},"proxmoxve:Permission/role:Role":{"description":"Manages a role.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsMonitoring = new proxmoxve.permission.Role(\"operationsMonitoring\", {\n privileges: [\"VM.Monitor\"],\n roleId: \"operations-monitoring\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_monitoring = proxmoxve.permission.Role(\"operationsMonitoring\",\n privileges=[\"VM.Monitor\"],\n role_id=\"operations-monitoring\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsMonitoring = new ProxmoxVE.Permission.Role(\"operationsMonitoring\", new()\n {\n Privileges = new[]\n {\n \"VM.Monitor\",\n },\n RoleId = \"operations-monitoring\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.NewRole(ctx, \"operationsMonitoring\", \u0026Permission.RoleArgs{\n\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"VM.Monitor\"),\n\t\t\t},\n\t\t\tRoleId: pulumi.String(\"operations-monitoring\"),\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.Permission.Role;\nimport com.pulumi.proxmoxve.Permission.RoleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var operationsMonitoring = new Role(\"operationsMonitoring\", RoleArgs.builder()\n .privileges(\"VM.Monitor\")\n .roleId(\"operations-monitoring\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n operationsMonitoring:\n type: proxmoxve:Permission:Role\n properties:\n privileges:\n - VM.Monitor\n roleId: operations-monitoring\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `role_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Permission/role:Role operations_monitoring operations-monitoring\n```\n\n","properties":{"privileges":{"type":"array","items":{"type":"string"},"description":"The role privileges.\n"},"roleId":{"type":"string","description":"The role identifier.\n"}},"required":["privileges","roleId"],"inputProperties":{"privileges":{"type":"array","items":{"type":"string"},"description":"The role privileges.\n"},"roleId":{"type":"string","description":"The role identifier.\n","willReplaceOnChanges":true}},"requiredInputs":["privileges","roleId"],"stateInputs":{"description":"Input properties used for looking up and filtering Role resources.\n","properties":{"privileges":{"type":"array","items":{"type":"string"},"description":"The role privileges.\n"},"roleId":{"type":"string","description":"The role identifier.\n","willReplaceOnChanges":true}},"type":"object"}},"proxmoxve:Permission/user:User":{"description":"Manages a user.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsMonitoring = new proxmoxve.permission.Role(\"operationsMonitoring\", {\n roleId: \"operations-monitoring\",\n privileges: [\"VM.Monitor\"],\n});\nconst operationsAutomation = new proxmoxve.permission.User(\"operationsAutomation\", {\n acls: [{\n path: \"/vms/1234\",\n propagate: true,\n roleId: operationsMonitoring.roleId,\n }],\n comment: \"Managed by Terraform\",\n password: \"a-strong-password\",\n userId: \"operations-automation@pve\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_monitoring = proxmoxve.permission.Role(\"operationsMonitoring\",\n role_id=\"operations-monitoring\",\n privileges=[\"VM.Monitor\"])\noperations_automation = proxmoxve.permission.User(\"operationsAutomation\",\n acls=[{\n \"path\": \"/vms/1234\",\n \"propagate\": True,\n \"role_id\": operations_monitoring.role_id,\n }],\n comment=\"Managed by Terraform\",\n password=\"a-strong-password\",\n user_id=\"operations-automation@pve\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsMonitoring = new ProxmoxVE.Permission.Role(\"operationsMonitoring\", new()\n {\n RoleId = \"operations-monitoring\",\n Privileges = new[]\n {\n \"VM.Monitor\",\n },\n });\n\n var operationsAutomation = new ProxmoxVE.Permission.User(\"operationsAutomation\", new()\n {\n Acls = new[]\n {\n new ProxmoxVE.Permission.Inputs.UserAclArgs\n {\n Path = \"/vms/1234\",\n Propagate = true,\n RoleId = operationsMonitoring.RoleId,\n },\n },\n Comment = \"Managed by Terraform\",\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/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\toperationsMonitoring, err := Permission.NewRole(ctx, \"operationsMonitoring\", \u0026Permission.RoleArgs{\n\t\t\tRoleId: pulumi.String(\"operations-monitoring\"),\n\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"VM.Monitor\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Permission.NewUser(ctx, \"operationsAutomation\", \u0026Permission.UserArgs{\n\t\t\tAcls: permission.UserAclArray{\n\t\t\t\t\u0026permission.UserAclArgs{\n\t\t\t\t\tPath: pulumi.String(\"/vms/1234\"),\n\t\t\t\t\tPropagate: pulumi.Bool(true),\n\t\t\t\t\tRoleId: operationsMonitoring.RoleId,\n\t\t\t\t},\n\t\t\t},\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\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 com.pulumi.proxmoxve.Permission.Role;\nimport com.pulumi.proxmoxve.Permission.RoleArgs;\nimport com.pulumi.proxmoxve.Permission.User;\nimport com.pulumi.proxmoxve.Permission.UserArgs;\nimport com.pulumi.proxmoxve.Permission.inputs.UserAclArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var operationsMonitoring = new Role(\"operationsMonitoring\", RoleArgs.builder()\n .roleId(\"operations-monitoring\")\n .privileges(\"VM.Monitor\")\n .build());\n\n var operationsAutomation = new User(\"operationsAutomation\", UserArgs.builder()\n .acls(UserAclArgs.builder()\n .path(\"/vms/1234\")\n .propagate(true)\n .roleId(operationsMonitoring.roleId())\n .build())\n .comment(\"Managed by Terraform\")\n .password(\"a-strong-password\")\n .userId(\"operations-automation@pve\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n operationsAutomation:\n type: proxmoxve:Permission:User\n properties:\n acls:\n - path: /vms/1234\n propagate: true\n roleId: ${operationsMonitoring.roleId}\n comment: Managed by Terraform\n password: a-strong-password\n userId: operations-automation@pve\n operationsMonitoring:\n type: proxmoxve:Permission:Role\n properties:\n roleId: operations-monitoring\n privileges:\n - VM.Monitor\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `user_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Permission/user:User operations_automation operations-automation@pve\n```\n\n","properties":{"acls":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/UserAcl:UserAcl"},"description":"The access control list (multiple blocks supported).\n"},"comment":{"type":"string","description":"The user comment.\n"},"email":{"type":"string","description":"The user's email address.\n"},"enabled":{"type":"boolean","description":"Whether the user account is enabled.\n"},"expirationDate":{"type":"string","description":"The user account's expiration date (RFC 3339).\n"},"firstName":{"type":"string","description":"The user's first name.\n"},"groups":{"type":"array","items":{"type":"string"},"description":"The user's groups.\n"},"keys":{"type":"string","description":"The user's keys.\n"},"lastName":{"type":"string","description":"The user's last name.\n"},"password":{"type":"string","description":"The user's password. Required for PVE or PAM realms.\n","secret":true},"userId":{"type":"string","description":"The user identifier.\n"}},"required":["userId"],"inputProperties":{"acls":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/UserAcl:UserAcl"},"description":"The access control list (multiple blocks supported).\n"},"comment":{"type":"string","description":"The user comment.\n"},"email":{"type":"string","description":"The user's email address.\n"},"enabled":{"type":"boolean","description":"Whether the user account is enabled.\n"},"expirationDate":{"type":"string","description":"The user account's expiration date (RFC 3339).\n"},"firstName":{"type":"string","description":"The user's first name.\n"},"groups":{"type":"array","items":{"type":"string"},"description":"The user's groups.\n"},"keys":{"type":"string","description":"The user's keys.\n"},"lastName":{"type":"string","description":"The user's last name.\n"},"password":{"type":"string","description":"The user's password. Required for PVE or PAM realms.\n","secret":true},"userId":{"type":"string","description":"The user identifier.\n","willReplaceOnChanges":true}},"requiredInputs":["userId"],"stateInputs":{"description":"Input properties used for looking up and filtering User resources.\n","properties":{"acls":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/UserAcl:UserAcl"},"description":"The access control list (multiple blocks supported).\n"},"comment":{"type":"string","description":"The user comment.\n"},"email":{"type":"string","description":"The user's email address.\n"},"enabled":{"type":"boolean","description":"Whether the user account is enabled.\n"},"expirationDate":{"type":"string","description":"The user account's expiration date (RFC 3339).\n"},"firstName":{"type":"string","description":"The user's first name.\n"},"groups":{"type":"array","items":{"type":"string"},"description":"The user's groups.\n"},"keys":{"type":"string","description":"The user's keys.\n"},"lastName":{"type":"string","description":"The user's last name.\n"},"password":{"type":"string","description":"The user's password. Required for PVE or PAM realms.\n","secret":true},"userId":{"type":"string","description":"The user identifier.\n","willReplaceOnChanges":true}},"type":"object"}},"proxmoxve:Storage/file:File":{"description":"Use this resource to upload files to a Proxmox VE node. The file can be a backup, an ISO image, a snippet, or a container template depending on the `content_type` attribute.\n\n## Example Usage\n\n### Backups (`dump`)\n\n\u003e The resource with this content type uses SSH access to the node. You might need to configure the `ssh` option in the `provider` section.\n\n\u003e The provider currently does not support restoring backups. You can use the Proxmox VE web interface or the `qmrestore` / `pct restore` command to restore VM / Container from a backup.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst backup = new proxmoxve.storage.File(\"backup\", {\n contentType: \"dump\",\n datastoreId: \"local\",\n nodeName: \"pve\",\n sourceFile: {\n path: \"vzdump-lxc-100-2023_11_08-23_10_05.tar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nbackup = proxmoxve.storage.File(\"backup\",\n content_type=\"dump\",\n datastore_id=\"local\",\n node_name=\"pve\",\n source_file={\n \"path\": \"vzdump-lxc-100-2023_11_08-23_10_05.tar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var backup = new ProxmoxVE.Storage.File(\"backup\", new()\n {\n ContentType = \"dump\",\n DatastoreId = \"local\",\n NodeName = \"pve\",\n SourceFile = new ProxmoxVE.Storage.Inputs.FileSourceFileArgs\n {\n Path = \"vzdump-lxc-100-2023_11_08-23_10_05.tar\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Storage.NewFile(ctx, \"backup\", \u0026Storage.FileArgs{\n\t\t\tContentType: pulumi.String(\"dump\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tSourceFile: \u0026storage.FileSourceFileArgs{\n\t\t\t\tPath: pulumi.String(\"vzdump-lxc-100-2023_11_08-23_10_05.tar\"),\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.Storage.File;\nimport com.pulumi.proxmoxve.Storage.FileArgs;\nimport com.pulumi.proxmoxve.Storage.inputs.FileSourceFileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var backup = new File(\"backup\", FileArgs.builder()\n .contentType(\"dump\")\n .datastoreId(\"local\")\n .nodeName(\"pve\")\n .sourceFile(FileSourceFileArgs.builder()\n .path(\"vzdump-lxc-100-2023_11_08-23_10_05.tar\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n backup:\n type: proxmoxve:Storage:File\n properties:\n contentType: dump\n datastoreId: local\n nodeName: pve\n sourceFile:\n path: vzdump-lxc-100-2023_11_08-23_10_05.tar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Images\n\n\u003e Consider using `proxmoxve.Download.File` resource instead. Using this resource for images is less efficient (requires to transfer uploaded image to node) though still supported.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst ubuntuContainerTemplate = new proxmoxve.storage.File(\"ubuntuContainerTemplate\", {\n contentType: \"iso\",\n datastoreId: \"local\",\n nodeName: \"pve\",\n sourceFile: {\n path: \"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nubuntu_container_template = proxmoxve.storage.File(\"ubuntuContainerTemplate\",\n content_type=\"iso\",\n datastore_id=\"local\",\n node_name=\"pve\",\n source_file={\n \"path\": \"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ubuntuContainerTemplate = new ProxmoxVE.Storage.File(\"ubuntuContainerTemplate\", new()\n {\n ContentType = \"iso\",\n DatastoreId = \"local\",\n NodeName = \"pve\",\n SourceFile = new ProxmoxVE.Storage.Inputs.FileSourceFileArgs\n {\n Path = \"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Storage.NewFile(ctx, \"ubuntuContainerTemplate\", \u0026Storage.FileArgs{\n\t\t\tContentType: pulumi.String(\"iso\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tSourceFile: \u0026storage.FileSourceFileArgs{\n\t\t\t\tPath: pulumi.String(\"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Storage.File;\nimport com.pulumi.proxmoxve.Storage.FileArgs;\nimport com.pulumi.proxmoxve.Storage.inputs.FileSourceFileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ubuntuContainerTemplate = new File(\"ubuntuContainerTemplate\", FileArgs.builder()\n .contentType(\"iso\")\n .datastoreId(\"local\")\n .nodeName(\"pve\")\n .sourceFile(FileSourceFileArgs.builder()\n .path(\"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ubuntuContainerTemplate:\n type: proxmoxve:Storage:File\n 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### Container Template (`vztmpl`)\n\n\u003e Consider using `proxmoxve.Download.File` resource instead. Using this resource for container images is less efficient (requires to transfer uploaded image to node) though still supported.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst ubuntuContainerTemplate = new proxmoxve.storage.File(\"ubuntuContainerTemplate\", {\n contentType: \"vztmpl\",\n datastoreId: \"local\",\n nodeName: \"first-node\",\n sourceFile: {\n path: \"https://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nubuntu_container_template = proxmoxve.storage.File(\"ubuntuContainerTemplate\",\n content_type=\"vztmpl\",\n datastore_id=\"local\",\n node_name=\"first-node\",\n source_file={\n \"path\": \"https://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ubuntuContainerTemplate = new ProxmoxVE.Storage.File(\"ubuntuContainerTemplate\", new()\n {\n ContentType = \"vztmpl\",\n DatastoreId = \"local\",\n NodeName = \"first-node\",\n SourceFile = new ProxmoxVE.Storage.Inputs.FileSourceFileArgs\n {\n Path = \"https://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/v6/go/proxmoxve/Storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Storage.NewFile(ctx, \"ubuntuContainerTemplate\", \u0026Storage.FileArgs{\n\t\t\tContentType: pulumi.String(\"vztmpl\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName: pulumi.String(\"first-node\"),\n\t\t\tSourceFile: \u0026storage.FileSourceFileArgs{\n\t\t\t\tPath: pulumi.String(\"https://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 com.pulumi.proxmoxve.Storage.File;\nimport com.pulumi.proxmoxve.Storage.FileArgs;\nimport com.pulumi.proxmoxve.Storage.inputs.FileSourceFileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ubuntuContainerTemplate = new File(\"ubuntuContainerTemplate\", FileArgs.builder()\n .contentType(\"vztmpl\")\n .datastoreId(\"local\")\n .nodeName(\"first-node\")\n .sourceFile(FileSourceFileArgs.builder()\n .path(\"https://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ubuntuContainerTemplate:\n type: proxmoxve:Storage:File\n properties:\n contentType: vztmpl\n datastoreId: local\n nodeName: first-node\n sourceFile:\n path: https://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 `overwrite` to `false`.\n\n## Import\n\nInstances can be imported using the `node_name`, `datastore_id`, `content_type`\n\nand the `file_name` in the following format:\n\ntext\n\nnode_name:datastore_id/content_type/file_name\n\nExample:\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Storage/file:File cloud_config pve/local:snippets/example.cloud-config.yaml\n```\n\n","properties":{"contentType":{"type":"string","description":"The content type. If not specified, the content\ntype will be inferred from the file extension. Valid values are:\n"},"datastoreId":{"type":"string","description":"The datastore id.\n"},"fileMode":{"type":"string","description":"The file mode in octal format, e.g. `0700` or `600`. Note that the prefixes `0o` and `0x` 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`true`).\n"},"sourceFile":{"$ref":"#/types/proxmoxve:Storage/FileSourceFile:FileSourceFile","description":"The source file (conflicts with `source_raw`),\ncould be a local file or a URL. If the source file is a URL, the file will\nbe downloaded and stored locally before uploading it to Proxmox VE.\n"},"sourceRaw":{"$ref":"#/types/proxmoxve:Storage/FileSourceRaw:FileSourceRaw","description":"The raw source (conflicts with `source_file`).\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. `0700` or `600`. Note that the prefixes `0o` and `0x` 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`true`).\n"},"sourceFile":{"$ref":"#/types/proxmoxve:Storage/FileSourceFile:FileSourceFile","description":"The source file (conflicts with `source_raw`),\ncould be a local file or a URL. If the source file is a URL, the file will\nbe downloaded and stored locally before uploading it to Proxmox VE.\n","willReplaceOnChanges":true},"sourceRaw":{"$ref":"#/types/proxmoxve:Storage/FileSourceRaw:FileSourceRaw","description":"The raw source (conflicts with `source_file`).\n","willReplaceOnChanges":true},"timeoutUpload":{"type":"integer","description":"Timeout for uploading ISO/VSTMPL files in\nseconds (defaults to 1800).\n"}},"requiredInputs":["datastoreId","nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering File resources.\n","properties":{"contentType":{"type":"string","description":"The content type. If not specified, the content\ntype will be inferred from the file extension. Valid values are:\n","willReplaceOnChanges":true},"datastoreId":{"type":"string","description":"The datastore id.\n","willReplaceOnChanges":true},"fileMode":{"type":"string","description":"The file mode in octal format, e.g. `0700` or `600`. Note that the prefixes `0o` and `0x` 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`true`).\n"},"sourceFile":{"$ref":"#/types/proxmoxve:Storage/FileSourceFile:FileSourceFile","description":"The source file (conflicts with `source_raw`),\ncould be a local file or a URL. If the source file is a URL, the file will\nbe downloaded and stored locally before uploading it to Proxmox VE.\n","willReplaceOnChanges":true},"sourceRaw":{"$ref":"#/types/proxmoxve:Storage/FileSourceRaw:FileSourceRaw","description":"The raw source (conflicts with `source_file`).\n","willReplaceOnChanges":true},"timeoutUpload":{"type":"integer","description":"Timeout for uploading ISO/VSTMPL files in\nseconds (defaults to 1800).\n"}},"type":"object"}},"proxmoxve:User/token:Token":{"description":"User API tokens.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\n// if creating a user token, the user must be created first\nconst user = new proxmoxve.permission.User(\"user\", {\n comment: \"Managed by Terraform\",\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(\"userToken\", {\n comment: \"Managed by Terraform\",\n expirationDate: \"2033-01-01T22:00:00Z\",\n tokenName: \"tk1\",\n userId: user.userId,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# if creating a user token, the user must be created first\nuser = proxmoxve.permission.User(\"user\",\n comment=\"Managed by Terraform\",\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(\"userToken\",\n comment=\"Managed by Terraform\",\n expiration_date=\"2033-01-01T22:00:00Z\",\n token_name=\"tk1\",\n user_id=user.user_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // if creating a user token, the user must be created first\n var user = new ProxmoxVE.Permission.User(\"user\", new()\n {\n Comment = \"Managed by Terraform\",\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(\"userToken\", new()\n {\n Comment = \"Managed by Terraform\",\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/v6/go/proxmoxve/Permission\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/User\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// if creating a user token, the user must be created first\n\t\tuser, err := Permission.NewUser(ctx, \"user\", \u0026Permission.UserArgs{\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\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, \"userToken\", \u0026User.TokenArgs{\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\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 com.pulumi.proxmoxve.Permission.User;\nimport com.pulumi.proxmoxve.Permission.UserArgs;\nimport com.pulumi.proxmoxve.User.Token;\nimport com.pulumi.proxmoxve.User.TokenArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // if creating a user token, the user must be created first\n var user = new User(\"user\", UserArgs.builder()\n .comment(\"Managed by Terraform\")\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 Terraform\")\n .expirationDate(\"2033-01-01T22:00:00Z\")\n .tokenName(\"tk1\")\n .userId(user.userId())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # if creating a user token, the user must be created first\n user:\n type: proxmoxve:Permission:User\n properties:\n comment: Managed by Terraform\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 properties:\n comment: Managed by Terraform\n expirationDate: 2033-01-01T22:00:00Z\n tokenName: tk1\n userId: ${user.userId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\n#Tokens can be imported using they identifiers in format `user_id!token_name` format, e.g.:\n\n```sh\n$ pulumi import proxmoxve:User/token:Token token1 user@pve!token1\n```\n\n","properties":{"comment":{"type":"string","description":"Comment for the token.\n"},"expirationDate":{"type":"string","description":"Expiration date for the token.\n"},"privilegesSeparation":{"type":"boolean","description":"Restrict API token privileges with separate ACLs (default), or give full privileges of corresponding user.\n"},"tokenName":{"type":"string","description":"User-specific token identifier.\n"},"userId":{"type":"string","description":"User identifier.\n"},"value":{"type":"string","description":"API token value used for authentication. It is populated only when creating a new token, and can't be retrieved at import.\n","secret":true}},"required":["privilegesSeparation","tokenName","userId","value"],"inputProperties":{"comment":{"type":"string","description":"Comment for the token.\n"},"expirationDate":{"type":"string","description":"Expiration date for the token.\n"},"privilegesSeparation":{"type":"boolean","description":"Restrict API token privileges with separate ACLs (default), or give full privileges of corresponding user.\n"},"tokenName":{"type":"string","description":"User-specific token identifier.\n"},"userId":{"type":"string","description":"User identifier.\n"}},"requiredInputs":["tokenName","userId"],"stateInputs":{"description":"Input properties used for looking up and filtering Token resources.\n","properties":{"comment":{"type":"string","description":"Comment for the token.\n"},"expirationDate":{"type":"string","description":"Expiration date for the token.\n"},"privilegesSeparation":{"type":"boolean","description":"Restrict API token privileges with separate ACLs (default), or give full privileges of corresponding user.\n"},"tokenName":{"type":"string","description":"User-specific token identifier.\n"},"userId":{"type":"string","description":"User identifier.\n"},"value":{"type":"string","description":"API token value used for authentication. It is populated only when creating a new token, and can't be retrieved at import.\n","secret":true}},"type":"object"}},"proxmoxve:VM/virtualMachine2:VirtualMachine2":{"description":"!\u003e **DO NOT USE**\nThis is an experimental implementation of a Proxmox VM resource using Plugin Framework.\u003cbr\u003e\u003cbr\u003eIt is a Proof of Concept, highly experimental and **will** change in future. It does not support all features of the Proxmox API for VMs and **MUST NOT** be used in production.\n\n\u003e Many attributes are marked as **optional** _and_ **computed** in the schema,\nhence you may seem added to the plan with \"(known after apply)\" status, even if they are not set in the configuration.\nThis is done to support the `clone` operation, when a VM is created from an existing VM or template,\nand the source attributes are copied to the clone.\u003cbr\u003e\u003cbr\u003e\nComputed attributes allow the provider to set those attributes without user input.\nThe attributes are also marked as optional to allow the practitioner to set (or overwrite) them if needed.\n","properties":{"cdrom":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Cdrom:VirtualMachine2Cdrom"},"description":"The CD-ROM configuration. The key is the interface of the CD-ROM, could be one of `ideN`, `sataN`, `scsiN`, where N is the index of the interface. Note that `q35` machine type only supports `ide0` and `ide2` of IDE interfaces.\n"},"clone":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Clone:VirtualMachine2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Cpu:VirtualMachine2Cpu","description":"The CPU configuration.\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"},"stopOnDestroy":{"type":"boolean","description":"Set to true to stop (rather than shutdown) the VM on destroy (defaults to `false`).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags assigned to the VM.\n"},"template":{"type":"boolean","description":"Set to true to create a VM template.\n"},"timeouts":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Timeouts:VirtualMachine2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Vga:VirtualMachine2Vga","description":"Configure the VGA Hardware. If you want to use high resolution modes (\u003e= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is `std` for all OS types besides some Windows versions (XP and older) which use `cirrus`. The `qxl` option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays themself. You can also run without any graphic card, using a serial device as terminal. See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) section 10.2.8 for more information and available configuration parameters.\n"}},"required":["cdrom","cpu","name","nodeName","stopOnDestroy","tags","vga"],"inputProperties":{"cdrom":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Cdrom:VirtualMachine2Cdrom"},"description":"The CD-ROM configuration. The key is the interface of the CD-ROM, could be one of `ideN`, `sataN`, `scsiN`, where N is the index of the interface. Note that `q35` machine type only supports `ide0` and `ide2` of IDE interfaces.\n"},"clone":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Clone:VirtualMachine2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Cpu:VirtualMachine2Cpu","description":"The CPU configuration.\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"},"stopOnDestroy":{"type":"boolean","description":"Set to true to stop (rather than shutdown) the VM on destroy (defaults to `false`).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags assigned to the VM.\n"},"template":{"type":"boolean","description":"Set to true to create a VM template.\n"},"timeouts":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Timeouts:VirtualMachine2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Vga:VirtualMachine2Vga","description":"Configure the VGA Hardware. If you want to use high resolution modes (\u003e= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is `std` for all OS types besides some Windows versions (XP and older) which use `cirrus`. The `qxl` option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays themself. You can also run without any graphic card, using a serial device as terminal. See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) section 10.2.8 for more information and available configuration parameters.\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering VirtualMachine2 resources.\n","properties":{"cdrom":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Cdrom:VirtualMachine2Cdrom"},"description":"The CD-ROM configuration. The key is the interface of the CD-ROM, could be one of `ideN`, `sataN`, `scsiN`, where N is the index of the interface. Note that `q35` machine type only supports `ide0` and `ide2` of IDE interfaces.\n"},"clone":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Clone:VirtualMachine2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Cpu:VirtualMachine2Cpu","description":"The CPU configuration.\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"},"stopOnDestroy":{"type":"boolean","description":"Set to true to stop (rather than shutdown) the VM on destroy (defaults to `false`).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags assigned to the VM.\n"},"template":{"type":"boolean","description":"Set to true to create a VM template.\n"},"timeouts":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Timeouts:VirtualMachine2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Vga:VirtualMachine2Vga","description":"Configure the VGA Hardware. If you want to use high resolution modes (\u003e= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is `std` for all OS types besides some Windows versions (XP and older) which use `cirrus`. The `qxl` 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":"proxmoxve:index/vm2:Vm2"}]},"proxmoxve:VM/virtualMachine:VirtualMachine":{"description":"Manages a virtual machine.\n\n\u003e This resource uses SSH access to the node. You might need to configure the `ssh` option in the `provider` section.\n\n## Import\n\nInstances can be imported using the `node_name` and the `vm_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:VM/virtualMachine:VirtualMachine ubuntu_vm first-node/4321\n```\n\n","properties":{"acpi":{"type":"boolean","description":"Whether to enable ACPI (defaults to `true`).\n"},"agent":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAgent:VirtualMachineAgent","description":"The QEMU agent configuration.\n"},"audioDevice":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAudioDevice:VirtualMachineAudioDevice","description":"An audio device.\n"},"bios":{"type":"string","description":"The BIOS implementation (defaults to `seabios`).\n"},"bootOrders":{"type":"array","items":{"type":"string"},"description":"Specify a list of devices to boot from in the order\nthey appear in the list (defaults to `[]`).\n"},"cdrom":{"$ref":"#/types/proxmoxve:VM/VirtualMachineCdrom:VirtualMachineCdrom","description":"The CDROM configuration.\n"},"clone":{"$ref":"#/types/proxmoxve:VM/VirtualMachineClone:VirtualMachineClone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/VirtualMachineCpu:VirtualMachineCpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description.\n"},"disks":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineDisk:VirtualMachineDisk"},"description":"A disk (multiple blocks supported).\n"},"efiDisk":{"$ref":"#/types/proxmoxve:VM/VirtualMachineEfiDisk:VirtualMachineEfiDisk","description":"The efi disk device (required if `bios` is set\nto `ovmf`)\n"},"hookScriptFileId":{"type":"string","description":"The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).\n"},"hostpcis":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineHostpci:VirtualMachineHostpci"},"description":"A host PCI device mapping (multiple blocks supported).\n"},"initialization":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitialization:VirtualMachineInitialization","description":"The cloud-init configuration.\n"},"ipv4Addresses":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"The IPv4 addresses per network interface published by the\nQEMU agent (empty list when `agent.enabled` is `false`)\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 `false`)\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 `pc`).\n"},"memory":{"$ref":"#/types/proxmoxve:VM/VirtualMachineMemory:VirtualMachineMemory","description":"The memory configuration.\n"},"migrate":{"type":"boolean","description":"Migrate the VM on node change instead of re-creating\nit (defaults to `false`).\n"},"name":{"type":"string","description":"The virtual machine name.\n"},"networkDevices":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineNetworkDevice:VirtualMachineNetworkDevice"},"description":"A network device (multiple blocks supported).\n"},"networkInterfaceNames":{"type":"array","items":{"type":"string"},"description":"The network interface names published by the QEMU\nagent (empty list when `agent.enabled` is `false`)\n"},"nodeName":{"type":"string","description":"The name of the node to assign the virtual machine\nto.\n"},"numas":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineNuma:VirtualMachineNuma"},"description":"The NUMA configuration.\n"},"onBoot":{"type":"boolean","description":"Specifies whether a VM will be started during system\nboot. (defaults to `true`)\n"},"operatingSystem":{"$ref":"#/types/proxmoxve:VM/VirtualMachineOperatingSystem:VirtualMachineOperatingSystem","description":"The Operating System configuration.\n"},"poolId":{"type":"string","description":"The identifier for a pool to assign the virtual machine to.\n"},"protection":{"type":"boolean","description":"Sets the protection flag of the VM. This will disable the remove VM and remove disk operations (defaults to `false`).\n"},"reboot":{"type":"boolean","description":"Reboot the VM after initial creation. (defaults to `false`)\n"},"scsiHardware":{"type":"string","description":"The SCSI hardware type (defaults to\n`virtio-scsi-pci`).\n"},"serialDevices":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineSerialDevice:VirtualMachineSerialDevice"},"description":"A serial device (multiple blocks supported).\n"},"smbios":{"$ref":"#/types/proxmoxve:VM/VirtualMachineSmbios:VirtualMachineSmbios","description":"The SMBIOS (type1) settings for the VM.\n"},"started":{"type":"boolean","description":"Whether to start the virtual machine (defaults\nto `true`).\n"},"startup":{"$ref":"#/types/proxmoxve:VM/VirtualMachineStartup:VirtualMachineStartup","description":"Defines startup and shutdown behavior of the VM.\n"},"stopOnDestroy":{"type":"boolean","description":"Whether to stop rather than shutdown on VM destroy (defaults to `false`)\n"},"tabletDevice":{"type":"boolean","description":"Whether to enable the USB tablet device (defaults\nto `true`).\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 `ignore_changes` lifecycle meta-argument to ignore\nchanges to this attribute.\n"},"template":{"type":"boolean","description":"Whether to create a template (defaults to `false`).\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":"MoveDisk timeout\n","deprecationMessage":"This field is deprecated and will be removed in a future release. An overall operation timeout (timeout_create / timeout_clone / timeout_migrate) is used instead."},"timeoutReboot":{"type":"integer","description":"Timeout for rebooting a VM in seconds (defaults\nto 1800).\n"},"timeoutShutdownVm":{"type":"integer","description":"Timeout for shutting down a VM in seconds (\ndefaults to 1800).\n"},"timeoutStartVm":{"type":"integer","description":"Timeout for starting a VM in seconds (defaults\nto 1800).\n"},"timeoutStopVm":{"type":"integer","description":"Timeout for stopping a VM in seconds (defaults\nto 300).\n"},"tpmState":{"$ref":"#/types/proxmoxve:VM/VirtualMachineTpmState:VirtualMachineTpmState","description":"The TPM state device.\n"},"usbs":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineUsb:VirtualMachineUsb"},"description":"A host USB device mapping (multiple blocks supported).\n"},"vga":{"$ref":"#/types/proxmoxve:VM/VirtualMachineVga:VirtualMachineVga","description":"The VGA configuration.\n"},"vmId":{"type":"integer","description":"The VM identifier.\n"},"watchdog":{"$ref":"#/types/proxmoxve:VM/VirtualMachineWatchdog:VirtualMachineWatchdog","description":"The watchdog configuration. Once enabled (by a guest action), the watchdog must be periodically polled by an agent inside the guest or else the watchdog will reset the guest (or execute the respective action specified).\n"}},"required":["ipv4Addresses","ipv6Addresses","macAddresses","name","networkInterfaceNames","nodeName","vmId"],"inputProperties":{"acpi":{"type":"boolean","description":"Whether to enable ACPI (defaults to `true`).\n"},"agent":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAgent:VirtualMachineAgent","description":"The QEMU agent configuration.\n"},"audioDevice":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAudioDevice:VirtualMachineAudioDevice","description":"An audio device.\n"},"bios":{"type":"string","description":"The BIOS implementation (defaults to `seabios`).\n"},"bootOrders":{"type":"array","items":{"type":"string"},"description":"Specify a list of devices to boot from in the order\nthey appear in the list (defaults to `[]`).\n"},"cdrom":{"$ref":"#/types/proxmoxve:VM/VirtualMachineCdrom:VirtualMachineCdrom","description":"The CDROM configuration.\n"},"clone":{"$ref":"#/types/proxmoxve:VM/VirtualMachineClone:VirtualMachineClone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/VirtualMachineCpu:VirtualMachineCpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description.\n"},"disks":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineDisk:VirtualMachineDisk"},"description":"A disk (multiple blocks supported).\n"},"efiDisk":{"$ref":"#/types/proxmoxve:VM/VirtualMachineEfiDisk:VirtualMachineEfiDisk","description":"The efi disk device (required if `bios` is set\nto `ovmf`)\n","willReplaceOnChanges":true},"hookScriptFileId":{"type":"string","description":"The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).\n"},"hostpcis":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineHostpci:VirtualMachineHostpci"},"description":"A host PCI device mapping (multiple blocks supported).\n"},"initialization":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitialization:VirtualMachineInitialization","description":"The cloud-init configuration.\n"},"keyboardLayout":{"type":"string","description":"The keyboard layout (defaults to `en-us`).\n"},"kvmArguments":{"type":"string","description":"Arbitrary arguments passed to kvm.\n"},"macAddresses":{"type":"array","items":{"type":"string"},"description":"The MAC addresses published by the QEMU agent with fallback\nto the network device configuration, if the agent is disabled\n"},"machine":{"type":"string","description":"The VM machine type (defaults to `pc`).\n"},"memory":{"$ref":"#/types/proxmoxve:VM/VirtualMachineMemory:VirtualMachineMemory","description":"The memory configuration.\n"},"migrate":{"type":"boolean","description":"Migrate the VM on node change instead of re-creating\nit (defaults to `false`).\n"},"name":{"type":"string","description":"The virtual machine name.\n"},"networkDevices":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineNetworkDevice:VirtualMachineNetworkDevice"},"description":"A network device (multiple blocks supported).\n"},"nodeName":{"type":"string","description":"The name of the node to assign the virtual machine\nto.\n"},"numas":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineNuma:VirtualMachineNuma"},"description":"The NUMA configuration.\n"},"onBoot":{"type":"boolean","description":"Specifies whether a VM will be started during system\nboot. (defaults to `true`)\n"},"operatingSystem":{"$ref":"#/types/proxmoxve:VM/VirtualMachineOperatingSystem:VirtualMachineOperatingSystem","description":"The Operating System configuration.\n"},"poolId":{"type":"string","description":"The identifier for a pool to assign the virtual machine to.\n"},"protection":{"type":"boolean","description":"Sets the protection flag of the VM. This will disable the remove VM and remove disk operations (defaults to `false`).\n"},"reboot":{"type":"boolean","description":"Reboot the VM after initial creation. (defaults to `false`)\n"},"scsiHardware":{"type":"string","description":"The SCSI hardware type (defaults to\n`virtio-scsi-pci`).\n"},"serialDevices":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineSerialDevice:VirtualMachineSerialDevice"},"description":"A serial device (multiple blocks supported).\n"},"smbios":{"$ref":"#/types/proxmoxve:VM/VirtualMachineSmbios:VirtualMachineSmbios","description":"The SMBIOS (type1) settings for the VM.\n"},"started":{"type":"boolean","description":"Whether to start the virtual machine (defaults\nto `true`).\n"},"startup":{"$ref":"#/types/proxmoxve:VM/VirtualMachineStartup:VirtualMachineStartup","description":"Defines startup and shutdown behavior of the VM.\n"},"stopOnDestroy":{"type":"boolean","description":"Whether to stop rather than shutdown on VM destroy (defaults to `false`)\n"},"tabletDevice":{"type":"boolean","description":"Whether to enable the USB tablet device (defaults\nto `true`).\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 `ignore_changes` lifecycle meta-argument to ignore\nchanges to this attribute.\n"},"template":{"type":"boolean","description":"Whether to create a template (defaults to `false`).\n","willReplaceOnChanges":true},"timeoutClone":{"type":"integer","description":"Timeout for cloning a VM in seconds (defaults to\n1800).\n"},"timeoutCreate":{"type":"integer","description":"Timeout for creating a VM in seconds (defaults to\n1800).\n"},"timeoutMigrate":{"type":"integer","description":"Timeout for migrating the VM (defaults to\n1800).\n"},"timeoutMoveDisk":{"type":"integer","description":"MoveDisk timeout\n","deprecationMessage":"This field is deprecated and will be removed in a future release. An overall operation timeout (timeout_create / timeout_clone / timeout_migrate) is used instead."},"timeoutReboot":{"type":"integer","description":"Timeout for rebooting a VM in seconds (defaults\nto 1800).\n"},"timeoutShutdownVm":{"type":"integer","description":"Timeout for shutting down a VM in seconds (\ndefaults to 1800).\n"},"timeoutStartVm":{"type":"integer","description":"Timeout for starting a VM in seconds (defaults\nto 1800).\n"},"timeoutStopVm":{"type":"integer","description":"Timeout for stopping a VM in seconds (defaults\nto 300).\n"},"tpmState":{"$ref":"#/types/proxmoxve:VM/VirtualMachineTpmState:VirtualMachineTpmState","description":"The TPM state device.\n","willReplaceOnChanges":true},"usbs":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineUsb:VirtualMachineUsb"},"description":"A host USB device mapping (multiple blocks supported).\n"},"vga":{"$ref":"#/types/proxmoxve:VM/VirtualMachineVga:VirtualMachineVga","description":"The VGA configuration.\n"},"vmId":{"type":"integer","description":"The VM identifier.\n"},"watchdog":{"$ref":"#/types/proxmoxve:VM/VirtualMachineWatchdog:VirtualMachineWatchdog","description":"The watchdog configuration. Once enabled (by a guest action), the watchdog must be periodically polled by an agent inside the guest or else the watchdog will reset the guest (or execute the respective action specified).\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering VirtualMachine resources.\n","properties":{"acpi":{"type":"boolean","description":"Whether to enable ACPI (defaults to `true`).\n"},"agent":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAgent:VirtualMachineAgent","description":"The QEMU agent configuration.\n"},"audioDevice":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAudioDevice:VirtualMachineAudioDevice","description":"An audio device.\n"},"bios":{"type":"string","description":"The BIOS implementation (defaults to `seabios`).\n"},"bootOrders":{"type":"array","items":{"type":"string"},"description":"Specify a list of devices to boot from in the order\nthey appear in the list (defaults to `[]`).\n"},"cdrom":{"$ref":"#/types/proxmoxve:VM/VirtualMachineCdrom:VirtualMachineCdrom","description":"The CDROM configuration.\n"},"clone":{"$ref":"#/types/proxmoxve:VM/VirtualMachineClone:VirtualMachineClone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/VirtualMachineCpu:VirtualMachineCpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description.\n"},"disks":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineDisk:VirtualMachineDisk"},"description":"A disk (multiple blocks supported).\n"},"efiDisk":{"$ref":"#/types/proxmoxve:VM/VirtualMachineEfiDisk:VirtualMachineEfiDisk","description":"The efi disk device (required if `bios` is set\nto `ovmf`)\n","willReplaceOnChanges":true},"hookScriptFileId":{"type":"string","description":"The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).\n"},"hostpcis":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineHostpci:VirtualMachineHostpci"},"description":"A host PCI device mapping (multiple blocks supported).\n"},"initialization":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitialization:VirtualMachineInitialization","description":"The cloud-init configuration.\n"},"ipv4Addresses":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"The IPv4 addresses per network interface published by the\nQEMU agent (empty list when `agent.enabled` is `false`)\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 `false`)\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 `pc`).\n"},"memory":{"$ref":"#/types/proxmoxve:VM/VirtualMachineMemory:VirtualMachineMemory","description":"The memory configuration.\n"},"migrate":{"type":"boolean","description":"Migrate the VM on node change instead of re-creating\nit (defaults to `false`).\n"},"name":{"type":"string","description":"The virtual machine name.\n"},"networkDevices":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineNetworkDevice:VirtualMachineNetworkDevice"},"description":"A network device (multiple blocks supported).\n"},"networkInterfaceNames":{"type":"array","items":{"type":"string"},"description":"The network interface names published by the QEMU\nagent (empty list when `agent.enabled` is `false`)\n"},"nodeName":{"type":"string","description":"The name of the node to assign the virtual machine\nto.\n"},"numas":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineNuma:VirtualMachineNuma"},"description":"The NUMA configuration.\n"},"onBoot":{"type":"boolean","description":"Specifies whether a VM will be started during system\nboot. (defaults to `true`)\n"},"operatingSystem":{"$ref":"#/types/proxmoxve:VM/VirtualMachineOperatingSystem:VirtualMachineOperatingSystem","description":"The Operating System configuration.\n"},"poolId":{"type":"string","description":"The identifier for a pool to assign the virtual machine to.\n"},"protection":{"type":"boolean","description":"Sets the protection flag of the VM. This will disable the remove VM and remove disk operations (defaults to `false`).\n"},"reboot":{"type":"boolean","description":"Reboot the VM after initial creation. (defaults to `false`)\n"},"scsiHardware":{"type":"string","description":"The SCSI hardware type (defaults to\n`virtio-scsi-pci`).\n"},"serialDevices":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineSerialDevice:VirtualMachineSerialDevice"},"description":"A serial device (multiple blocks supported).\n"},"smbios":{"$ref":"#/types/proxmoxve:VM/VirtualMachineSmbios:VirtualMachineSmbios","description":"The SMBIOS (type1) settings for the VM.\n"},"started":{"type":"boolean","description":"Whether to start the virtual machine (defaults\nto `true`).\n"},"startup":{"$ref":"#/types/proxmoxve:VM/VirtualMachineStartup:VirtualMachineStartup","description":"Defines startup and shutdown behavior of the VM.\n"},"stopOnDestroy":{"type":"boolean","description":"Whether to stop rather than shutdown on VM destroy (defaults to `false`)\n"},"tabletDevice":{"type":"boolean","description":"Whether to enable the USB tablet device (defaults\nto `true`).\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 `ignore_changes` lifecycle meta-argument to ignore\nchanges to this attribute.\n"},"template":{"type":"boolean","description":"Whether to create a template (defaults to `false`).\n","willReplaceOnChanges":true},"timeoutClone":{"type":"integer","description":"Timeout for cloning a VM in seconds (defaults to\n1800).\n"},"timeoutCreate":{"type":"integer","description":"Timeout for creating a VM in seconds (defaults to\n1800).\n"},"timeoutMigrate":{"type":"integer","description":"Timeout for migrating the VM (defaults to\n1800).\n"},"timeoutMoveDisk":{"type":"integer","description":"MoveDisk timeout\n","deprecationMessage":"This field is deprecated and will be removed in a future release. An overall operation timeout (timeout_create / timeout_clone / timeout_migrate) is used instead."},"timeoutReboot":{"type":"integer","description":"Timeout for rebooting a VM in seconds (defaults\nto 1800).\n"},"timeoutShutdownVm":{"type":"integer","description":"Timeout for shutting down a VM in seconds (\ndefaults to 1800).\n"},"timeoutStartVm":{"type":"integer","description":"Timeout for starting a VM in seconds (defaults\nto 1800).\n"},"timeoutStopVm":{"type":"integer","description":"Timeout for stopping a VM in seconds (defaults\nto 300).\n"},"tpmState":{"$ref":"#/types/proxmoxve:VM/VirtualMachineTpmState:VirtualMachineTpmState","description":"The TPM state device.\n","willReplaceOnChanges":true},"usbs":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineUsb:VirtualMachineUsb"},"description":"A host USB device mapping (multiple blocks supported).\n"},"vga":{"$ref":"#/types/proxmoxve:VM/VirtualMachineVga:VirtualMachineVga","description":"The VGA configuration.\n"},"vmId":{"type":"integer","description":"The VM identifier.\n"},"watchdog":{"$ref":"#/types/proxmoxve:VM/VirtualMachineWatchdog:VirtualMachineWatchdog","description":"The watchdog configuration. Once enabled (by a guest action), the watchdog must be periodically polled by an agent inside the guest or else the watchdog will reset the guest (or execute the respective action specified).\n"}},"type":"object"}},"proxmoxve:index/acl:Acl":{"description":"Manages ACLs on the Proxmox cluster.\n\nACLs are used to control access to resources in the Proxmox cluster.\nEach ACL consists of a path, a user, group or token, a role, and a flag to allow propagation of permissions.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsAutomation = new proxmoxve.permission.User(\"operationsAutomation\", {\n comment: \"Managed by Terraform\",\n password: \"a-strong-password\",\n userId: \"operations-automation@pve\",\n});\nconst operationsMonitoring = new proxmoxve.permission.Role(\"operationsMonitoring\", {\n roleId: \"operations-monitoring\",\n privileges: [\"VM.Monitor\"],\n});\nconst operationsAutomationMonitoring = new proxmoxve.Acl(\"operationsAutomationMonitoring\", {\n userId: operationsAutomation.userId,\n roleId: operationsMonitoring.roleId,\n path: \"/vms/1234\",\n propagate: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_automation = proxmoxve.permission.User(\"operationsAutomation\",\n comment=\"Managed by Terraform\",\n password=\"a-strong-password\",\n user_id=\"operations-automation@pve\")\noperations_monitoring = proxmoxve.permission.Role(\"operationsMonitoring\",\n role_id=\"operations-monitoring\",\n privileges=[\"VM.Monitor\"])\noperations_automation_monitoring = proxmoxve.Acl(\"operationsAutomationMonitoring\",\n user_id=operations_automation.user_id,\n role_id=operations_monitoring.role_id,\n path=\"/vms/1234\",\n propagate=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsAutomation = new ProxmoxVE.Permission.User(\"operationsAutomation\", new()\n {\n Comment = \"Managed by Terraform\",\n Password = \"a-strong-password\",\n UserId = \"operations-automation@pve\",\n });\n\n var operationsMonitoring = new ProxmoxVE.Permission.Role(\"operationsMonitoring\", new()\n {\n RoleId = \"operations-monitoring\",\n Privileges = new[]\n {\n \"VM.Monitor\",\n },\n });\n\n var operationsAutomationMonitoring = new ProxmoxVE.Acl(\"operationsAutomationMonitoring\", 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/v6/go/proxmoxve\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\toperationsAutomation, err := Permission.NewUser(ctx, \"operationsAutomation\", \u0026Permission.UserArgs{\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t\tPassword: pulumi.String(\"a-strong-password\"),\n\t\t\tUserId: pulumi.String(\"operations-automation@pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\toperationsMonitoring, err := Permission.NewRole(ctx, \"operationsMonitoring\", \u0026Permission.RoleArgs{\n\t\t\tRoleId: pulumi.String(\"operations-monitoring\"),\n\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"VM.Monitor\"),\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, \"operationsAutomationMonitoring\", \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 com.pulumi.proxmoxve.Permission.User;\nimport com.pulumi.proxmoxve.Permission.UserArgs;\nimport com.pulumi.proxmoxve.Permission.Role;\nimport com.pulumi.proxmoxve.Permission.RoleArgs;\nimport com.pulumi.proxmoxve.Acl;\nimport com.pulumi.proxmoxve.AclArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var operationsAutomation = new User(\"operationsAutomation\", UserArgs.builder()\n .comment(\"Managed by Terraform\")\n .password(\"a-strong-password\")\n .userId(\"operations-automation@pve\")\n .build());\n\n var operationsMonitoring = new Role(\"operationsMonitoring\", RoleArgs.builder()\n .roleId(\"operations-monitoring\")\n .privileges(\"VM.Monitor\")\n .build());\n\n var operationsAutomationMonitoring = new Acl(\"operationsAutomationMonitoring\", AclArgs.builder()\n .userId(operationsAutomation.userId())\n .roleId(operationsMonitoring.roleId())\n .path(\"/vms/1234\")\n .propagate(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n operationsAutomation:\n type: proxmoxve:Permission:User\n properties:\n comment: Managed by Terraform\n password: a-strong-password\n userId: operations-automation@pve\n operationsMonitoring:\n type: proxmoxve:Permission:Role\n properties:\n roleId: operations-monitoring\n privileges:\n - VM.Monitor\n operationsAutomationMonitoring:\n type: proxmoxve:Acl\n properties:\n userId: ${operationsAutomation.userId}\n roleId: ${operationsMonitoring.roleId}\n path: /vms/1234\n propagate: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nACL can be imported using its unique identifier, e.g.: {path}?{group|user@realm|user@realm!token}?{role}\n\n```sh\n$ pulumi import proxmoxve:index/acl:Acl operations_automation_monitoring /?monitor@pve?operations-monitoring\n```\n\n","properties":{"groupId":{"type":"string","description":"The group the ACL should apply to (mutually exclusive with `token_id` and `user_id`)\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 `group_id` and `user_id`)\n"},"userId":{"type":"string","description":"The user the ACL should apply to (mutually exclusive with `group_id` and `token_id`)\n"}},"required":["path","propagate","roleId"],"inputProperties":{"groupId":{"type":"string","description":"The group the ACL should apply to (mutually exclusive with `token_id` and `user_id`)\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 `group_id` and `user_id`)\n"},"userId":{"type":"string","description":"The user the ACL should apply to (mutually exclusive with `group_id` and `token_id`)\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 `token_id` and `user_id`)\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 `group_id` and `user_id`)\n"},"userId":{"type":"string","description":"The user the ACL should apply to (mutually exclusive with `group_id` and `token_id`)\n"}},"type":"object"}},"proxmoxve:index/acmeAccount:AcmeAccount":{"description":"Manages an ACME account in a Proxmox VE cluster.\n\n\u003e This resource requires `root@pam` authentication.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.AcmeAccount(\"example\", {\n contact: \"example@email.com\",\n directory: \"https://acme-staging-v02.api.letsencrypt.org/directory\",\n tos: \"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.AcmeAccount(\"example\",\n contact=\"example@email.com\",\n directory=\"https://acme-staging-v02.api.letsencrypt.org/directory\",\n tos=\"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new ProxmoxVE.AcmeAccount(\"example\", new()\n {\n 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/v6/go/proxmoxve\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := proxmoxve.NewAcmeAccount(ctx, \"example\", \u0026proxmoxve.AcmeAccountArgs{\n\t\t\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 com.pulumi.proxmoxve.AcmeAccount;\nimport com.pulumi.proxmoxve.AcmeAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new AcmeAccount(\"example\", AcmeAccountArgs.builder()\n .contact(\"example@email.com\")\n .directory(\"https://acme-staging-v02.api.letsencrypt.org/directory\")\n .tos(\"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:AcmeAccount\n properties:\n contact: example@email.com\n directory: https://acme-staging-v02.api.letsencrypt.org/directory\n tos: https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nACME accounts can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:index/acmeAccount:AcmeAccount example example\n```\n\n","properties":{"contact":{"type":"string","description":"The contact email addresses.\n"},"createdAt":{"type":"string","description":"The timestamp of the ACME account creation.\n"},"directory":{"type":"string","description":"The URL of the ACME CA directory endpoint.\n"},"eabHmacKey":{"type":"string","description":"The HMAC key for External Account Binding.\n"},"eabKid":{"type":"string","description":"The Key Identifier for External Account Binding.\n"},"location":{"type":"string","description":"The location of the ACME account.\n"},"name":{"type":"string","description":"The ACME account config file name.\n"},"tos":{"type":"string","description":"The URL of CA TermsOfService - setting this indicates agreement.\n"}},"required":["contact","createdAt","location","name"],"inputProperties":{"contact":{"type":"string","description":"The contact email addresses.\n"},"directory":{"type":"string","description":"The URL of the ACME CA directory endpoint.\n"},"eabHmacKey":{"type":"string","description":"The HMAC key for External Account Binding.\n"},"eabKid":{"type":"string","description":"The Key Identifier for External Account Binding.\n"},"name":{"type":"string","description":"The ACME account config file name.\n"},"tos":{"type":"string","description":"The URL of CA TermsOfService - setting this indicates agreement.\n"}},"requiredInputs":["contact"],"stateInputs":{"description":"Input properties used for looking up and filtering AcmeAccount resources.\n","properties":{"contact":{"type":"string","description":"The contact email addresses.\n"},"createdAt":{"type":"string","description":"The timestamp of the ACME account creation.\n"},"directory":{"type":"string","description":"The URL of the ACME CA directory endpoint.\n"},"eabHmacKey":{"type":"string","description":"The HMAC key for External Account Binding.\n"},"eabKid":{"type":"string","description":"The Key Identifier for External Account Binding.\n"},"location":{"type":"string","description":"The location of the ACME account.\n"},"name":{"type":"string","description":"The ACME account config file name.\n"},"tos":{"type":"string","description":"The URL of CA TermsOfService - setting this indicates agreement.\n"}},"type":"object"}},"proxmoxve:index/acmeDnsPlugin:AcmeDnsPlugin":{"description":"Manages an ACME plugin in a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.AcmeDnsPlugin(\"example\", {\n api: \"aws\",\n data: {\n AWS_ACCESS_KEY_ID: \"EXAMPLE\",\n AWS_SECRET_ACCESS_KEY: \"EXAMPLE\",\n },\n plugin: \"test\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.AcmeDnsPlugin(\"example\",\n api=\"aws\",\n data={\n \"AWS_ACCESS_KEY_ID\": \"EXAMPLE\",\n \"AWS_SECRET_ACCESS_KEY\": \"EXAMPLE\",\n },\n plugin=\"test\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new ProxmoxVE.AcmeDnsPlugin(\"example\", new()\n {\n Api = \"aws\",\n Data = \n {\n { \"AWS_ACCESS_KEY_ID\", \"EXAMPLE\" },\n { \"AWS_SECRET_ACCESS_KEY\", \"EXAMPLE\" },\n },\n Plugin = \"test\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := proxmoxve.NewAcmeDnsPlugin(ctx, \"example\", \u0026proxmoxve.AcmeDnsPluginArgs{\n\t\t\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\tPlugin: pulumi.String(\"test\"),\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.AcmeDnsPlugin;\nimport com.pulumi.proxmoxve.AcmeDnsPluginArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new AcmeDnsPlugin(\"example\", AcmeDnsPluginArgs.builder()\n .api(\"aws\")\n .data(Map.ofEntries(\n Map.entry(\"AWS_ACCESS_KEY_ID\", \"EXAMPLE\"),\n Map.entry(\"AWS_SECRET_ACCESS_KEY\", \"EXAMPLE\")\n ))\n .plugin(\"test\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:AcmeDnsPlugin\n properties:\n api: aws\n data:\n AWS_ACCESS_KEY_ID: EXAMPLE\n AWS_SECRET_ACCESS_KEY: EXAMPLE\n plugin: test\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nACME accounts can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:index/acmeDnsPlugin:AcmeDnsPlugin example test\n```\n\n","properties":{"api":{"type":"string","description":"API plugin name.\n"},"data":{"type":"object","additionalProperties":{"type":"string"},"description":"DNS plugin data.\n"},"digest":{"type":"string","description":"SHA1 digest of the current configuration. Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.\n"},"disable":{"type":"boolean","description":"Flag to disable the config.\n"},"plugin":{"type":"string","description":"ACME Plugin ID name.\n"},"validationDelay":{"type":"integer","description":"Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records (0 - 172800).\n"}},"required":["api","digest","plugin","validationDelay"],"inputProperties":{"api":{"type":"string","description":"API plugin name.\n"},"data":{"type":"object","additionalProperties":{"type":"string"},"description":"DNS plugin data.\n"},"digest":{"type":"string","description":"SHA1 digest of the current configuration. Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.\n"},"disable":{"type":"boolean","description":"Flag to disable the config.\n"},"plugin":{"type":"string","description":"ACME Plugin ID name.\n"},"validationDelay":{"type":"integer","description":"Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records (0 - 172800).\n"}},"requiredInputs":["api","plugin"],"stateInputs":{"description":"Input properties used for looking up and filtering AcmeDnsPlugin resources.\n","properties":{"api":{"type":"string","description":"API plugin name.\n"},"data":{"type":"object","additionalProperties":{"type":"string"},"description":"DNS plugin data.\n"},"digest":{"type":"string","description":"SHA1 digest of the current configuration. Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.\n"},"disable":{"type":"boolean","description":"Flag to disable the config.\n"},"plugin":{"type":"string","description":"ACME Plugin ID name.\n"},"validationDelay":{"type":"integer","description":"Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records (0 - 172800).\n"}},"type":"object"}},"proxmoxve:index/certifi:Certifi":{"description":"Manages the custom SSL/TLS certificate for a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n example:\n type: proxmoxve:Certifi\n properties:\n certificate: ${proxmoxVirtualEnvironmentCertificateSelfSignedCert.certPem}\n nodeName: first-node\n privateKey: ${proxmoxVirtualEnvironmentCertificatePrivateKey.privateKeyPem}\n proxmoxVirtualEnvironmentCertificatePrivateKey:\n type: tls:PrivateKey\n properties:\n algorithm: RSA\n rsaBits: 2048\n proxmoxVirtualEnvironmentCertificateSelfSignedCert:\n type: tls:SelfSignedCert\n properties:\n keyAlgorithm: ${proxmoxVirtualEnvironmentCertificatePrivateKey.algorithm}\n privateKeyPem: ${proxmoxVirtualEnvironmentCertificatePrivateKey.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\n"},"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\n"},"privateKey":{"type":"string","description":"The PEM encoded private key.\n","secret":true}},"requiredInputs":["certificate","nodeName","privateKey"],"stateInputs":{"description":"Input properties used for looking up and filtering Certifi resources.\n","properties":{"certificate":{"type":"string","description":"The PEM encoded certificate.\n"},"certificateChain":{"type":"string","description":"The PEM encoded certificate chain.\n"},"expirationDate":{"type":"string","description":"The expiration date (RFC 3339).\n"},"fileName":{"type":"string","description":"The file name.\n"},"issuer":{"type":"string","description":"The issuer.\n"},"nodeName":{"type":"string","description":"A node name.\n","willReplaceOnChanges":true},"overwrite":{"type":"boolean","description":"Whether to overwrite an existing certificate\n"},"privateKey":{"type":"string","description":"The PEM encoded private key.\n","secret":true},"publicKeySize":{"type":"integer","description":"The public key size.\n"},"publicKeyType":{"type":"string","description":"The public key type.\n"},"sslFingerprint":{"type":"string","description":"The SSL fingerprint.\n"},"startDate":{"type":"string","description":"The start date (RFC 3339).\n"},"subject":{"type":"string","description":"The subject.\n"},"subjectAlternativeNames":{"type":"array","items":{"type":"string"},"description":"The subject alternative names.\n"}},"type":"object"}},"proxmoxve:index/dNS:DNS":{"description":"Manages the DNS configuration for a specific node.\n\n## Import\n\nInstances can be imported using the `node_name`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:index/dNS:DNS first_node first-node\n```\n\n","properties":{"domain":{"type":"string","description":"The DNS search domain.\n"},"nodeName":{"type":"string","description":"A node name.\n"},"servers":{"type":"array","items":{"type":"string"},"description":"The DNS servers.\n"}},"required":["domain","nodeName"],"inputProperties":{"domain":{"type":"string","description":"The DNS search domain.\n"},"nodeName":{"type":"string","description":"A node name.\n","willReplaceOnChanges":true},"servers":{"type":"array","items":{"type":"string"},"description":"The DNS servers.\n"}},"requiredInputs":["domain","nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering DNS resources.\n","properties":{"domain":{"type":"string","description":"The DNS search domain.\n"},"nodeName":{"type":"string","description":"A node name.\n","willReplaceOnChanges":true},"servers":{"type":"array","items":{"type":"string"},"description":"The DNS servers.\n"}},"type":"object"}},"proxmoxve:index/hosts:Hosts":{"description":"Manages the host entries on a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n firstNodeHostEntries:\n type: proxmoxve:Hosts\n properties:\n entries:\n - address: 127.0.0.1\n hostnames:\n - localhost\n - localhost.localdomain\n nodeName: first-node\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Important Notes\n\nBe careful not to use this resource multiple times for the same node.\n\n## Import\n\nInstances can be imported using the `node_name`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:index/hosts:Hosts first_node_host_entries first-node\n```\n\n","properties":{"addresses":{"type":"array","items":{"type":"string"},"description":"The IP addresses.\n"},"digest":{"type":"string","description":"The SHA1 digest.\n"},"entries":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/HostsEntry:HostsEntry"},"description":"The host entries (conversion of `addresses` and `hostnames` into\nobjects).\n"},"entry":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/HostsEntry:HostsEntry"},"description":"A host entry (multiple blocks supported).\n"},"hostnames":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"The hostnames associated with each of the IP addresses.\n"},"nodeName":{"type":"string","description":"A node name.\n"}},"required":["addresses","digest","entries","entry","hostnames","nodeName"],"inputProperties":{"entry":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/HostsEntry:HostsEntry"},"description":"A host entry (multiple blocks supported).\n"},"nodeName":{"type":"string","description":"A node name.\n"}},"requiredInputs":["entry","nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering Hosts resources.\n","properties":{"addresses":{"type":"array","items":{"type":"string"},"description":"The IP addresses.\n"},"digest":{"type":"string","description":"The SHA1 digest.\n"},"entries":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/HostsEntry:HostsEntry"},"description":"The host entries (conversion of `addresses` and `hostnames` into\nobjects).\n"},"entry":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/HostsEntry:HostsEntry"},"description":"A host entry (multiple blocks supported).\n"},"hostnames":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"The hostnames associated with each of the IP addresses.\n"},"nodeName":{"type":"string","description":"A node name.\n"}},"type":"object"}},"proxmoxve:index/time:Time":{"description":"Manages the time for a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst firstNodeTime = new proxmoxve.Time(\"firstNodeTime\", {\n nodeName: \"first-node\",\n timeZone: \"UTC\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfirst_node_time = proxmoxve.Time(\"firstNodeTime\",\n node_name=\"first-node\",\n time_zone=\"UTC\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var firstNodeTime = new ProxmoxVE.Time(\"firstNodeTime\", 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/v6/go/proxmoxve\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := proxmoxve.NewTime(ctx, \"firstNodeTime\", \u0026proxmoxve.TimeArgs{\n\t\t\tNodeName: pulumi.String(\"first-node\"),\n\t\t\tTimeZone: pulumi.String(\"UTC\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Time;\nimport com.pulumi.proxmoxve.TimeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var firstNodeTime = new Time(\"firstNodeTime\", TimeArgs.builder()\n .nodeName(\"first-node\")\n .timeZone(\"UTC\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n firstNodeTime:\n type: proxmoxve:Time\n properties:\n nodeName: first-node\n timeZone: UTC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `node_name`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:index/time:Time first_node first-node\n```\n\n","properties":{"localTime":{"type":"string","description":"The node's local time.\n"},"nodeName":{"type":"string","description":"A node name.\n"},"timeZone":{"type":"string","description":"The node's time zone.\n"},"utcTime":{"type":"string","description":"The node's local time formatted as UTC.\n"}},"required":["localTime","nodeName","timeZone","utcTime"],"inputProperties":{"nodeName":{"type":"string","description":"A node name.\n"},"timeZone":{"type":"string","description":"The node's time zone.\n"}},"requiredInputs":["nodeName","timeZone"],"stateInputs":{"description":"Input properties used for looking up and filtering Time resources.\n","properties":{"localTime":{"type":"string","description":"The node's local time.\n"},"nodeName":{"type":"string","description":"A node name.\n"},"timeZone":{"type":"string","description":"The node's time zone.\n"},"utcTime":{"type":"string","description":"The node's local time formatted as UTC.\n"}},"type":"object"}},"proxmoxve:index/vm2:Vm2":{"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 `clone` 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/Vm2Cdrom:Vm2Cdrom"},"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 `q35` machine type only supports `ide0` and `ide2` of IDE interfaces.\n"},"clone":{"$ref":"#/types/proxmoxve:index/Vm2Clone:Vm2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:index/Vm2Cpu:Vm2Cpu","description":"The CPU configuration.\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"},"stopOnDestroy":{"type":"boolean","description":"Set to true to stop (rather than shutdown) the VM on destroy (defaults to `false`).\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/Vm2Timeouts:Vm2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:index/Vm2Vga:Vm2Vga","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 `std` for all OS types besides some Windows versions (XP and older) which use `cirrus`. The `qxl` option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays themself. You can also run without any graphic card, using a serial device as terminal. See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) section 10.2.8 for more information and available configuration parameters.\n"}},"required":["cdrom","cpu","name","nodeName","stopOnDestroy","tags","vga"],"inputProperties":{"cdrom":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:index/Vm2Cdrom:Vm2Cdrom"},"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 `q35` machine type only supports `ide0` and `ide2` of IDE interfaces.\n"},"clone":{"$ref":"#/types/proxmoxve:index/Vm2Clone:Vm2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:index/Vm2Cpu:Vm2Cpu","description":"The CPU configuration.\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"},"stopOnDestroy":{"type":"boolean","description":"Set to true to stop (rather than shutdown) the VM on destroy (defaults to `false`).\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/Vm2Timeouts:Vm2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:index/Vm2Vga:Vm2Vga","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 `std` for all OS types besides some Windows versions (XP and older) which use `cirrus`. The `qxl` 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 Vm2 resources.\n","properties":{"cdrom":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:index/Vm2Cdrom:Vm2Cdrom"},"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 `q35` machine type only supports `ide0` and `ide2` of IDE interfaces.\n"},"clone":{"$ref":"#/types/proxmoxve:index/Vm2Clone:Vm2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:index/Vm2Cpu:Vm2Cpu","description":"The CPU configuration.\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"},"stopOnDestroy":{"type":"boolean","description":"Set to true to stop (rather than shutdown) the VM on destroy (defaults to `false`).\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/Vm2Timeouts:Vm2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:index/Vm2Vga:Vm2Vga","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 `std` for all OS types besides some Windows versions (XP and older) which use `cirrus`. The `qxl` 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"},"deprecationMessage":"proxmoxve.index/vm2.Vm2 has been deprecated in favor of proxmoxve.vm/virtualmachine2.VirtualMachine2"}},"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 \"@pulumi/proxmoxve\";\n\nconst all = proxmoxve.Acme.getAccounts({});\nconst example = all.then(all =\u003e .map(([, ]) =\u003e (proxmoxve.Acme.getAccount({\n name: __value,\n}))));\nexport const dataProxmoxVirtualEnvironmentAcmeAccount = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nall = proxmoxve.Acme.get_accounts()\nexample = [proxmoxve.Acme.get_account(name=__value) for __key, __value in all.accounts]\npulumi.export(\"dataProxmoxVirtualEnvironmentAcmeAccount\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var all = ProxmoxVE.Acme.GetAccounts.Invoke();\n\n var example = .Select(__value =\u003e \n {\n return ProxmoxVE.Acme.GetAccount.Invoke(new()\n {\n Name = __value,\n });\n }).ToList();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentAcmeAccount\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/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\tall, err := Acme.GetAccounts(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample := \"TODO: For expression\"\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentAcmeAccount\", 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 java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 = AcmeFunctions.getAccounts();\n\n final var example = \"TODO: ForExpression\";\n\n ctx.export(\"dataProxmoxVirtualEnvironmentAcmeAccount\", example);\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getAccount.\n","properties":{"name":{"type":"string","description":"The identifier of the ACME account to read.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getAccount.\n","properties":{"account":{"$ref":"#/types/proxmoxve:Acme/getAccountAccount:getAccountAccount","description":"The ACME account information.\n"},"directory":{"description":"The directory URL of the ACME account.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","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 \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Acme.getAccounts({});\nexport const dataProxmoxVirtualEnvironmentAcmeAccounts = example.then(example =\u003e example.accounts);\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Acme.get_accounts()\npulumi.export(\"dataProxmoxVirtualEnvironmentAcmeAccounts\", example.accounts)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Acme.GetAccounts.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentAcmeAccounts\"] = example.Apply(getAccountsResult =\u003e getAccountsResult.Accounts),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Acme\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Acme.GetAccounts(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentAcmeAccounts\", example.Accounts)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Acme.AcmeFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = AcmeFunctions.getAccounts();\n\n ctx.export(\"dataProxmoxVirtualEnvironmentAcmeAccounts\", example.applyValue(getAccountsResult -\u003e getAccountsResult.accounts()));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Acme:getAccounts\n Arguments: {}\noutputs:\n dataProxmoxVirtualEnvironmentAcmeAccounts: ${example.accounts}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getAccounts.\n","properties":{"accounts":{"description":"The identifiers of the ACME accounts.\n","items":{"type":"string"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","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 \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Acme.getPlugin({\n plugin: \"standalone\",\n});\nexport const dataProxmoxVirtualEnvironmentAcmePlugin = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Acme.get_plugin(plugin=\"standalone\")\npulumi.export(\"dataProxmoxVirtualEnvironmentAcmePlugin\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Acme.GetPlugin.Invoke(new()\n {\n Plugin = \"standalone\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentAcmePlugin\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Acme\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Acme.GetPlugin(ctx, \u0026acme.GetPluginArgs{\n\t\t\tPlugin: \"standalone\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentAcmePlugin\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Acme.AcmeFunctions;\nimport com.pulumi.proxmoxve.Acme.inputs.GetPluginArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = AcmeFunctions.getPlugin(GetPluginArgs.builder()\n .plugin(\"standalone\")\n .build());\n\n ctx.export(\"dataProxmoxVirtualEnvironmentAcmePlugin\", example.applyValue(getPluginResult -\u003e getPluginResult));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Acme:getPlugin\n Arguments:\n plugin: standalone\noutputs:\n dataProxmoxVirtualEnvironmentAcmePlugin: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getPlugin.\n","properties":{"plugin":{"type":"string","description":"ACME Plugin ID name.\n"}},"type":"object","required":["plugin"]},"outputs":{"description":"A collection of values returned by getPlugin.\n","properties":{"api":{"description":"API plugin name.\n","type":"string"},"data":{"additionalProperties":{"type":"string"},"description":"DNS plugin data.\n","type":"object"},"digest":{"description":"Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","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 \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Acme.getPlugins({});\nexport const dataProxmoxVirtualEnvironmentAcmePlugins = example.then(example =\u003e example.plugins);\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Acme.get_plugins()\npulumi.export(\"dataProxmoxVirtualEnvironmentAcmePlugins\", example.plugins)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Acme.GetPlugins.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentAcmePlugins\"] = example.Apply(getPluginsResult =\u003e getPluginsResult.Plugins),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Acme\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Acme.GetPlugins(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentAcmePlugins\", example.Plugins)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Acme.AcmeFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = AcmeFunctions.getPlugins();\n\n ctx.export(\"dataProxmoxVirtualEnvironmentAcmePlugins\", example.applyValue(getPluginsResult -\u003e getPluginsResult.plugins()));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Acme:getPlugins\n Arguments: {}\noutputs:\n dataProxmoxVirtualEnvironmentAcmePlugins: ${example.plugins}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getPlugins.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"plugins":{"description":"List of ACME plugins\n","items":{"$ref":"#/types/proxmoxve:Acme/getPluginsPlugin:getPluginsPlugin"},"type":"array"}},"required":["plugins","id"],"type":"object"}},"proxmoxve:Apt/getRepository:getRepository":{"description":"Retrieves an APT repository from a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Apt.getRepository({\n filePath: \"/etc/apt/sources.list\",\n index: 0,\n node: \"pve\",\n});\nexport const proxmoxVirtualEnvironmentAptRepository = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Apt.get_repository(file_path=\"/etc/apt/sources.list\",\n index=0,\n node=\"pve\")\npulumi.export(\"proxmoxVirtualEnvironmentAptRepository\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Apt.GetRepository.Invoke(new()\n {\n FilePath = \"/etc/apt/sources.list\",\n Index = 0,\n Node = \"pve\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"proxmoxVirtualEnvironmentAptRepository\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Apt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Apt.GetRepository(ctx, \u0026apt.GetRepositoryArgs{\n\t\t\tFilePath: \"/etc/apt/sources.list\",\n\t\t\tIndex: 0,\n\t\t\tNode: \"pve\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"proxmoxVirtualEnvironmentAptRepository\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Apt.AptFunctions;\nimport com.pulumi.proxmoxve.Apt.inputs.GetRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = AptFunctions.getRepository(GetRepositoryArgs.builder()\n .filePath(\"/etc/apt/sources.list\")\n .index(0)\n .node(\"pve\")\n .build());\n\n ctx.export(\"proxmoxVirtualEnvironmentAptRepository\", example.applyValue(getRepositoryResult -\u003e getRepositoryResult));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Apt:getRepository\n Arguments:\n filePath: /etc/apt/sources.list\n index: 0\n node: pve\noutputs:\n proxmoxVirtualEnvironmentAptRepository: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getRepository.\n","properties":{"filePath":{"type":"string","description":"The absolute path of the source list file that contains this repository.\n"},"index":{"type":"integer","description":"The index within the defining source list file.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"}},"type":"object","required":["filePath","index","node"]},"outputs":{"description":"A collection of values returned by getRepository.\n","properties":{"comment":{"description":"The associated comment.\n","type":"string"},"components":{"description":"The list of components.\n","items":{"type":"string"},"type":"array"},"enabled":{"description":"Indicates the activation status.\n","type":"boolean"},"filePath":{"description":"The absolute path of the source list file that contains this repository.\n","type":"string"},"fileType":{"description":"The format of the defining source list file.\n","type":"string"},"id":{"description":"The unique identifier of this APT repository data source.\n","type":"string"},"index":{"description":"The index within the defining source list file.\n","type":"integer"},"node":{"description":"The name of the target Proxmox VE node.\n","type":"string"},"packageTypes":{"description":"The list of package types.\n","items":{"type":"string"},"type":"array"},"suites":{"description":"The list of package distributions.\n","items":{"type":"string"},"type":"array"},"uris":{"description":"The list of repository URIs.\n","items":{"type":"string"},"type":"array"}},"required":["comment","components","enabled","filePath","fileType","id","index","node","packageTypes","suites","uris"],"type":"object"}},"proxmoxve:Apt/standard/getRepository:getRepository":{"description":"Retrieves an APT standard repository from a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Apt.standard.getRepository({\n handle: \"no-subscription\",\n node: \"pve\",\n});\nexport const proxmoxVirtualEnvironmentAptStandardRepository = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Apt.standard.get_repository(handle=\"no-subscription\",\n node=\"pve\")\npulumi.export(\"proxmoxVirtualEnvironmentAptStandardRepository\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Apt.Standard.GetRepository.Invoke(new()\n {\n Handle = \"no-subscription\",\n Node = \"pve\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"proxmoxVirtualEnvironmentAptStandardRepository\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Apt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Apt.GetRepository(ctx, \u0026standard.GetRepositoryArgs{\n\t\t\tHandle: \"no-subscription\",\n\t\t\tNode: \"pve\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"proxmoxVirtualEnvironmentAptStandardRepository\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Apt_standard.Apt_standardFunctions;\nimport com.pulumi.proxmoxve.Apt.inputs.GetRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = Apt/standardFunctions.getRepository(GetRepositoryArgs.builder()\n .handle(\"no-subscription\")\n .node(\"pve\")\n .build());\n\n ctx.export(\"proxmoxVirtualEnvironmentAptStandardRepository\", example.applyValue(getRepositoryResult -\u003e getRepositoryResult));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Apt/standard:getRepository\n Arguments:\n handle: no-subscription\n node: pve\noutputs:\n proxmoxVirtualEnvironmentAptStandardRepository: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getRepository.\n","properties":{"handle":{"type":"string","description":"The handle of the APT standard repository.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"}},"type":"object","required":["handle","node"]},"outputs":{"description":"A collection of values returned by getRepository.\n","properties":{"description":{"description":"The description of the APT standard repository.\n","type":"string"},"filePath":{"description":"The absolute path of the source list file that contains this standard repository.\n","type":"string"},"handle":{"description":"The handle of the APT standard repository.\n","type":"string"},"id":{"description":"The unique identifier of this APT standard repository data source.\n","type":"string"},"index":{"description":"The index within the defining source list file.\n","type":"integer"},"name":{"description":"The name of the APT standard repository.\n","type":"string"},"node":{"description":"The name of the target Proxmox VE node.\n","type":"string"},"status":{"description":"Indicates the activation status.\n","type":"integer"}},"required":["description","filePath","handle","id","index","name","node","status"],"type":"object"}},"proxmoxve:Cluster/getNodes:getNodes":{"description":"Retrieves information about all available nodes.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst availableNodes = proxmoxve.Cluster.getNodes({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\navailable_nodes = proxmoxve.Cluster.get_nodes()\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 availableNodes = ProxmoxVE.Cluster.GetNodes.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/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.GetNodes(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.Cluster.ClusterFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var availableNodes = ClusterFunctions.getNodes();\n\n }\n}\n```\n```yaml\nvariables:\n availableNodes:\n fn::invoke:\n Function: proxmoxve:Cluster:getNodes\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getNodes.\n","properties":{"cpuCounts":{"description":"The CPU count for each node.\n","items":{"type":"integer"},"type":"array"},"cpuUtilizations":{"description":"The CPU utilization on each node.\n","items":{"type":"number"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"memoryAvailables":{"description":"The memory available on each node.\n","items":{"type":"integer"},"type":"array"},"memoryUseds":{"description":"The memory used on each node.\n","items":{"type":"integer"},"type":"array"},"names":{"description":"The node names.\n","items":{"type":"string"},"type":"array"},"onlines":{"description":"Whether a node is online.\n","items":{"type":"boolean"},"type":"array"},"sslFingerprints":{"description":"The SSL fingerprint for each node.\n","items":{"type":"string"},"type":"array"},"supportLevels":{"description":"The support level for each node.\n","items":{"type":"string"},"type":"array"},"uptimes":{"description":"The uptime in seconds for each node.\n","items":{"type":"integer"},"type":"array"}},"required":["cpuCounts","cpuUtilizations","memoryAvailables","memoryUseds","names","onlines","sslFingerprints","supportLevels","uptimes","id"],"type":"object"}},"proxmoxve:HA/getHAGroup:getHAGroup":{"description":"Retrieves information about a specific High Availability group.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst all = proxmoxve.HA.getHAGroups({});\nconst example = all.then(all =\u003e .map(([, ]) =\u003e (proxmoxve.HA.getHAGroup({\n group: __value,\n}))));\nexport const proxmoxVirtualEnvironmentHagroupsFull = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nall = proxmoxve.HA.get_ha_groups()\nexample = [proxmoxve.HA.get_ha_group(group=__value) for __key, __value in all.group_ids]\npulumi.export(\"proxmoxVirtualEnvironmentHagroupsFull\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var all = ProxmoxVE.HA.GetHAGroups.Invoke();\n\n var example = .Select(__value =\u003e \n {\n return ProxmoxVE.HA.GetHAGroup.Invoke(new()\n {\n Group = __value,\n });\n }).ToList();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"proxmoxVirtualEnvironmentHagroupsFull\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/HA\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tall, err := HA.GetHAGroups(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample := \"TODO: For expression\"\n\t\tctx.Export(\"proxmoxVirtualEnvironmentHagroupsFull\", 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.HA.HAFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var all = HAFunctions.getHAGroups();\n\n final var example = \"TODO: ForExpression\";\n\n ctx.export(\"proxmoxVirtualEnvironmentHagroupsFull\", example);\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getHAGroup.\n","properties":{"group":{"type":"string","description":"The identifier of the High Availability group to read.\n"}},"type":"object","required":["group"]},"outputs":{"description":"A collection of values returned by getHAGroup.\n","properties":{"comment":{"description":"The comment associated with this group\n","type":"string"},"group":{"description":"The identifier of the High Availability group to read.\n","type":"string"},"id":{"description":"The unique identifier of this resource.\n","type":"string"},"noFailback":{"description":"A flag that indicates that failing back to a higher priority node is disabled for this HA group.\n","type":"boolean"},"nodes":{"additionalProperties":{"type":"integer"},"description":"The member nodes for this group. They are provided as a map, where the keys are the node names and the values represent their priority: integers for known priorities or `null` for unset priorities.\n","type":"object"},"restricted":{"description":"A flag that indicates that other nodes may not be used to run resources associated to this HA group.\n","type":"boolean"}},"required":["comment","group","id","noFailback","nodes","restricted"],"type":"object"}},"proxmoxve:HA/getHAGroups:getHAGroups":{"description":"Retrieves the list of High Availability groups.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.HA.getHAGroups({});\nexport const dataProxmoxVirtualEnvironmentHagroups = example.then(example =\u003e example.groupIds);\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.HA.get_ha_groups()\npulumi.export(\"dataProxmoxVirtualEnvironmentHagroups\", example.group_ids)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.HA.GetHAGroups.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentHagroups\"] = example.Apply(getHAGroupsResult =\u003e getHAGroupsResult.GroupIds),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/HA\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := HA.GetHAGroups(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentHagroups\", example.GroupIds)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.HA.HAFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = HAFunctions.getHAGroups();\n\n ctx.export(\"dataProxmoxVirtualEnvironmentHagroups\", example.applyValue(getHAGroupsResult -\u003e getHAGroupsResult.groupIds()));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:HA:getHAGroups\n Arguments: {}\noutputs:\n dataProxmoxVirtualEnvironmentHagroups: ${example.groupIds}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getHAGroups.\n","properties":{"groupIds":{"description":"The identifiers of the High Availability groups.\n","items":{"type":"string"},"type":"array"},"id":{"description":"The unique identifier of this resource.\n","type":"string"}},"required":["groupIds","id"],"type":"object"}},"proxmoxve:HA/getHAResource:getHAResource":{"description":"Retrieves the list of High Availability resources.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst all = proxmoxve.HA.getHAResources({});\nconst example = all.then(all =\u003e .map(([, ]) =\u003e (proxmoxve.HA.getHAResource({\n resourceId: __value,\n}))));\nexport const proxmoxVirtualEnvironmentHaresourcesFull = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nall = proxmoxve.HA.get_ha_resources()\nexample = [proxmoxve.HA.get_ha_resource(resource_id=__value) for __key, __value in all.resource_ids]\npulumi.export(\"proxmoxVirtualEnvironmentHaresourcesFull\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var all = ProxmoxVE.HA.GetHAResources.Invoke();\n\n var example = .Select(__value =\u003e \n {\n return ProxmoxVE.HA.GetHAResource.Invoke(new()\n {\n ResourceId = __value,\n });\n }).ToList();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"proxmoxVirtualEnvironmentHaresourcesFull\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/HA\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tall, err := HA.GetHAResources(ctx, \u0026ha.GetHAResourcesArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample := \"TODO: For expression\"\n\t\tctx.Export(\"proxmoxVirtualEnvironmentHaresourcesFull\", 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.HA.HAFunctions;\nimport com.pulumi.proxmoxve.HA.inputs.GetHAResourcesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var all = HAFunctions.getHAResources();\n\n final var example = \"TODO: ForExpression\";\n\n ctx.export(\"proxmoxVirtualEnvironmentHaresourcesFull\", example);\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getHAResource.\n","properties":{"resourceId":{"type":"string","description":"The identifier of the Proxmox HA resource to read.\n"}},"type":"object","required":["resourceId"]},"outputs":{"description":"A collection of values returned by getHAResource.\n","properties":{"comment":{"description":"The comment associated with this resource.\n","type":"string"},"group":{"description":"The identifier of the High Availability group this resource is a member of.\n","type":"string"},"id":{"description":"The unique identifier of this resource.\n","type":"string"},"maxRelocate":{"description":"The maximal number of relocation attempts.\n","type":"integer"},"maxRestart":{"description":"The maximal number of restart attempts.\n","type":"integer"},"resourceId":{"description":"The identifier of the Proxmox HA resource to read.\n","type":"string"},"state":{"description":"The desired state of the resource.\n","type":"string"},"type":{"description":"The type of High Availability resource (`vm` or `ct`).\n","type":"string"}},"required":["comment","group","id","maxRelocate","maxRestart","resourceId","state","type"],"type":"object"}},"proxmoxve:HA/getHAResources:getHAResources":{"description":"Retrieves the list of High Availability resources.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst exampleAll = proxmoxve.HA.getHAResources({});\nconst exampleVm = proxmoxve.HA.getHAResources({\n type: \"vm\",\n});\nexport const dataProxmoxVirtualEnvironmentHaresources = {\n all: exampleAll.then(exampleAll =\u003e exampleAll.resourceIds),\n vms: exampleVm.then(exampleVm =\u003e exampleVm.resourceIds),\n};\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample_all = proxmoxve.HA.get_ha_resources()\nexample_vm = proxmoxve.HA.get_ha_resources(type=\"vm\")\npulumi.export(\"dataProxmoxVirtualEnvironmentHaresources\", {\n \"all\": example_all.resource_ids,\n \"vms\": example_vm.resource_ids,\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleAll = ProxmoxVE.HA.GetHAResources.Invoke();\n\n var exampleVm = ProxmoxVE.HA.GetHAResources.Invoke(new()\n {\n Type = \"vm\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentHaresources\"] = \n {\n { \"all\", exampleAll.Apply(getHAResourcesResult =\u003e getHAResourcesResult.ResourceIds) },\n { \"vms\", exampleVm.Apply(getHAResourcesResult =\u003e getHAResourcesResult.ResourceIds) },\n },\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/HA\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\nexampleAll, err := HA.GetHAResources(ctx, \u0026ha.GetHAResourcesArgs{\n}, nil);\nif err != nil {\nreturn err\n}\nexampleVm, err := HA.GetHAResources(ctx, \u0026ha.GetHAResourcesArgs{\nType: pulumi.StringRef(\"vm\"),\n}, nil);\nif err != nil {\nreturn err\n}\nctx.Export(\"dataProxmoxVirtualEnvironmentHaresources\", interface{}Map{\n\"all\": exampleAll.ResourceIds,\n\"vms\": exampleVm.ResourceIds,\n})\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.HA.HAFunctions;\nimport com.pulumi.proxmoxve.HA.inputs.GetHAResourcesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var exampleAll = HAFunctions.getHAResources();\n\n final var exampleVm = HAFunctions.getHAResources(GetHAResourcesArgs.builder()\n .type(\"vm\")\n .build());\n\n ctx.export(\"dataProxmoxVirtualEnvironmentHaresources\", %!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference));\n }\n}\n```\n```yaml\nvariables:\n exampleAll:\n fn::invoke:\n Function: proxmoxve:HA:getHAResources\n Arguments: {}\n exampleVm:\n fn::invoke:\n Function: proxmoxve:HA:getHAResources\n Arguments:\n type: vm\noutputs:\n dataProxmoxVirtualEnvironmentHaresources:\n all: ${exampleAll.resourceIds}\n vms: ${exampleVm.resourceIds}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getHAResources.\n","properties":{"type":{"type":"string","description":"The type of High Availability resources to fetch (`vm` or `ct`). 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 (`vm` or `ct`). All resources will be fetched if this option is unset.\n","type":"string"}},"required":["id","resourceIds"],"type":"object"}},"proxmoxve:Hardware/getMappings:getMappings":{"description":"Retrieves a list of hardware mapping resources.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example-pci = proxmoxve.Hardware.getMappings({\n checkNode: \"pve\",\n type: \"pci\",\n});\nconst example-usb = proxmoxve.Hardware.getMappings({\n checkNode: \"pve\",\n type: \"usb\",\n});\nexport const dataProxmoxVirtualEnvironmentHardwareMappingsPci = example_pci;\nexport const dataProxmoxVirtualEnvironmentHardwareMappingsUsb = example_usb;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample_pci = proxmoxve.Hardware.get_mappings(check_node=\"pve\",\n type=\"pci\")\nexample_usb = proxmoxve.Hardware.get_mappings(check_node=\"pve\",\n type=\"usb\")\npulumi.export(\"dataProxmoxVirtualEnvironmentHardwareMappingsPci\", example_pci)\npulumi.export(\"dataProxmoxVirtualEnvironmentHardwareMappingsUsb\", example_usb)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example_pci = ProxmoxVE.Hardware.GetMappings.Invoke(new()\n {\n CheckNode = \"pve\",\n Type = \"pci\",\n });\n\n var example_usb = ProxmoxVE.Hardware.GetMappings.Invoke(new()\n {\n CheckNode = \"pve\",\n Type = \"usb\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentHardwareMappingsPci\"] = example_pci,\n [\"dataProxmoxVirtualEnvironmentHardwareMappingsUsb\"] = example_usb,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/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_pci, err := Hardware.GetMappings(ctx, \u0026hardware.GetMappingsArgs{\n\t\t\tCheckNode: pulumi.StringRef(\"pve\"),\n\t\t\tType: \"pci\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_usb, err := Hardware.GetMappings(ctx, \u0026hardware.GetMappingsArgs{\n\t\t\tCheckNode: pulumi.StringRef(\"pve\"),\n\t\t\tType: \"usb\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentHardwareMappingsPci\", example_pci)\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentHardwareMappingsUsb\", example_usb)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Hardware.HardwareFunctions;\nimport com.pulumi.proxmoxve.Hardware.inputs.GetMappingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example-pci = HardwareFunctions.getMappings(GetMappingsArgs.builder()\n .checkNode(\"pve\")\n .type(\"pci\")\n .build());\n\n final var example-usb = HardwareFunctions.getMappings(GetMappingsArgs.builder()\n .checkNode(\"pve\")\n .type(\"usb\")\n .build());\n\n ctx.export(\"dataProxmoxVirtualEnvironmentHardwareMappingsPci\", example_pci);\n ctx.export(\"dataProxmoxVirtualEnvironmentHardwareMappingsUsb\", example_usb);\n }\n}\n```\n```yaml\nvariables:\n example-pci:\n fn::invoke:\n Function: proxmoxve:Hardware:getMappings\n Arguments:\n checkNode: pve\n type: pci\n example-usb:\n fn::invoke:\n Function: proxmoxve:Hardware:getMappings\n Arguments:\n checkNode: pve\n type: usb\noutputs:\n dataProxmoxVirtualEnvironmentHardwareMappingsPci: ${[\"example-pci\"]}\n dataProxmoxVirtualEnvironmentHardwareMappingsUsb: ${[\"example-usb\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getMappings.\n","properties":{"checkNode":{"type":"string","description":"The name of the node whose configurations should be checked for correctness.\n"},"type":{"type":"string","description":"The type of the hardware mappings.\n"}},"type":"object","required":["type"]},"outputs":{"description":"A collection of values returned by getMappings.\n","properties":{"checkNode":{"description":"The name of the node whose configurations should be checked for correctness.\n","type":"string"},"checks":{"description":"Might contain relevant diagnostics about incorrect configurations.\n","items":{"$ref":"#/types/proxmoxve:Hardware/getMappingsCheck:getMappingsCheck"},"type":"array"},"id":{"description":"The unique identifier of this hardware mappings data source.\n","type":"string"},"ids":{"description":"The identifiers of the hardware mappings.\n","items":{"type":"string"},"type":"array"},"type":{"description":"The type of the hardware mappings.\n","type":"string"}},"required":["checks","id","ids","type"],"type":"object"}},"proxmoxve:Hardware/mapping/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 \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Hardware.mapping.getPci({\n name: \"example\",\n});\nexport const dataProxmoxVirtualEnvironmentHardwareMappingPci = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Hardware.mapping.get_pci(name=\"example\")\npulumi.export(\"dataProxmoxVirtualEnvironmentHardwareMappingPci\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Hardware.Mapping.GetPci.Invoke(new()\n {\n Name = \"example\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentHardwareMappingPci\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Hardware\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Hardware.GetPci(ctx, \u0026mapping.GetPciArgs{\n\t\t\tName: \"example\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentHardwareMappingPci\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Hardware_mapping.Hardware_mappingFunctions;\nimport com.pulumi.proxmoxve.Hardware.inputs.GetPciArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = Hardware/mappingFunctions.getPci(GetPciArgs.builder()\n .name(\"example\")\n .build());\n\n ctx.export(\"dataProxmoxVirtualEnvironmentHardwareMappingPci\", example.applyValue(getPciResult -\u003e getPciResult));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Hardware/mapping:getPci\n Arguments:\n name: example\noutputs:\n dataProxmoxVirtualEnvironmentHardwareMappingPci: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getPci.\n","properties":{"name":{"type":"string","description":"The name of this PCI hardware mapping.\n"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getPci.\n","properties":{"comment":{"description":"The comment of this PCI hardware mapping.\n","type":"string"},"id":{"description":"The unique identifier of this PCI hardware mapping data source.\n","type":"string"},"maps":{"description":"The actual map of devices for the hardware mapping.\n","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/getPciMap:getPciMap"},"type":"array"},"mediatedDevices":{"description":"Indicates whether to use with mediated devices.\n","type":"boolean"},"name":{"description":"The name of this PCI hardware mapping.\n","type":"string"}},"required":["comment","id","maps","mediatedDevices","name"],"type":"object"}},"proxmoxve:Hardware/mapping/getUsb:getUsb":{"description":"Retrieves a USB hardware mapping from a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Hardware.mapping.getUsb({\n name: \"example\",\n});\nexport const dataProxmoxVirtualEnvironmentHardwareMappingUsb = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Hardware.mapping.get_usb(name=\"example\")\npulumi.export(\"dataProxmoxVirtualEnvironmentHardwareMappingUsb\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Hardware.Mapping.GetUsb.Invoke(new()\n {\n Name = \"example\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentHardwareMappingUsb\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Hardware\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Hardware.GetUsb(ctx, \u0026mapping.GetUsbArgs{\n\t\t\tName: \"example\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentHardwareMappingUsb\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Hardware_mapping.Hardware_mappingFunctions;\nimport com.pulumi.proxmoxve.Hardware.inputs.GetUsbArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = Hardware/mappingFunctions.getUsb(GetUsbArgs.builder()\n .name(\"example\")\n .build());\n\n ctx.export(\"dataProxmoxVirtualEnvironmentHardwareMappingUsb\", example.applyValue(getUsbResult -\u003e getUsbResult));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Hardware/mapping:getUsb\n Arguments:\n name: example\noutputs:\n dataProxmoxVirtualEnvironmentHardwareMappingUsb: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getUsb.\n","properties":{"name":{"type":"string","description":"The name of this USB hardware mapping.\n"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getUsb.\n","properties":{"comment":{"description":"The comment of this USB hardware mapping.\n","type":"string"},"id":{"description":"The unique identifier of this USB hardware mapping data source.\n","type":"string"},"maps":{"description":"The actual map of devices for the hardware mapping.\n","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/getUsbMap:getUsbMap"},"type":"array"},"name":{"description":"The name of this USB hardware mapping.\n","type":"string"}},"required":["comment","id","maps","name"],"type":"object"}},"proxmoxve:Network/getDNS:getDNS":{"description":"Retrieves the DNS configuration for a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst firstNode = proxmoxve.Network.getDNS({\n nodeName: \"first-node\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfirst_node = proxmoxve.Network.get_dns(node_name=\"first-node\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var firstNode = ProxmoxVE.Network.GetDNS.Invoke(new()\n {\n NodeName = \"first-node\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.GetDNS(ctx, \u0026network.GetDNSArgs{\n\t\t\tNodeName: \"first-node\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.NetworkFunctions;\nimport com.pulumi.proxmoxve.Network.inputs.GetDNSArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var firstNode = NetworkFunctions.getDNS(GetDNSArgs.builder()\n .nodeName(\"first-node\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n firstNode:\n fn::invoke:\n Function: proxmoxve:Network:getDNS\n Arguments:\n nodeName: first-node\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getDNS.\n","properties":{"nodeName":{"type":"string","description":"A node name.\n"}},"type":"object","required":["nodeName"]},"outputs":{"description":"A collection of values returned by getDNS.\n","properties":{"domain":{"description":"The DNS search domain.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"nodeName":{"type":"string"},"servers":{"description":"The DNS servers.\n","items":{"type":"string"},"type":"array"}},"required":["domain","nodeName","servers","id"],"type":"object"}},"proxmoxve:Network/getHosts:getHosts":{"description":"Retrieves all the host entries from a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst firstNodeHostEntries = proxmoxve.Network.getHosts({\n nodeName: \"first-node\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfirst_node_host_entries = proxmoxve.Network.get_hosts(node_name=\"first-node\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var firstNodeHostEntries = ProxmoxVE.Network.GetHosts.Invoke(new()\n {\n NodeName = \"first-node\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.GetHosts(ctx, \u0026network.GetHostsArgs{\n\t\t\tNodeName: \"first-node\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.NetworkFunctions;\nimport com.pulumi.proxmoxve.Network.inputs.GetHostsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var firstNodeHostEntries = NetworkFunctions.getHosts(GetHostsArgs.builder()\n .nodeName(\"first-node\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n firstNodeHostEntries:\n fn::invoke:\n Function: proxmoxve:Network:getHosts\n Arguments:\n nodeName: first-node\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getHosts.\n","properties":{"nodeName":{"type":"string","description":"A node name.\n"}},"type":"object","required":["nodeName"]},"outputs":{"description":"A collection of values returned by getHosts.\n","properties":{"addresses":{"description":"The IP addresses.\n","items":{"type":"string"},"type":"array"},"digest":{"description":"The SHA1 digest.\n","type":"string"},"entries":{"description":"The host entries (conversion of `addresses` and `hostnames` into\nobjects).\n","items":{"$ref":"#/types/proxmoxve:Network/getHostsEntry:getHostsEntry"},"type":"array"},"hostnames":{"description":"The hostnames associated with each of the IP addresses.\n","items":{"items":{"type":"string"},"type":"array"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"nodeName":{"type":"string"}},"required":["addresses","digest","entries","hostnames","nodeName","id"],"type":"object"}},"proxmoxve:Network/getTime:getTime":{"description":"Retrieves the current time for a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst firstNodeTime = proxmoxve.Network.getTime({\n nodeName: \"first-node\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfirst_node_time = proxmoxve.Network.get_time(node_name=\"first-node\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var firstNodeTime = ProxmoxVE.Network.GetTime.Invoke(new()\n {\n NodeName = \"first-node\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.GetTime(ctx, \u0026network.GetTimeArgs{\n\t\t\tNodeName: \"first-node\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.NetworkFunctions;\nimport com.pulumi.proxmoxve.Network.inputs.GetTimeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var firstNodeTime = NetworkFunctions.getTime(GetTimeArgs.builder()\n .nodeName(\"first-node\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n firstNodeTime:\n fn::invoke:\n Function: proxmoxve:Network:getTime\n Arguments:\n nodeName: first-node\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getTime.\n","properties":{"nodeName":{"type":"string","description":"A node name.\n"}},"type":"object","required":["nodeName"]},"outputs":{"description":"A collection of values returned by getTime.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"localTime":{"description":"The node's local time.\n","type":"string"},"nodeName":{"type":"string"},"timeZone":{"description":"The node's time zone.\n","type":"string"},"utcTime":{"description":"The node's local time formatted as UTC.\n","type":"string"}},"required":["localTime","nodeName","timeZone","utcTime","id"],"type":"object"}},"proxmoxve:Network/getVersion:getVersion":{"description":"Retrieves API version details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Network.getVersion({});\nexport const dataProxmoxVirtualEnvironmentVersion = {\n release: example.then(example =\u003e example.release),\n repository_id: example.then(example =\u003e example.repositoryId),\n version: example.then(example =\u003e example.version),\n};\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Network.get_version()\npulumi.export(\"dataProxmoxVirtualEnvironmentVersion\", {\n \"release\": example.release,\n \"repository_id\": example.repository_id,\n \"version\": example.version,\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Network.GetVersion.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentVersion\"] = \n {\n { \"release\", example.Apply(getVersionResult =\u003e getVersionResult.Release) },\n { \"repository_id\", 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/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Network.GetVersion(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentVersion\", pulumi.StringMap{\n\t\t\t\"release\": example.Release,\n\t\t\t\"repository_id\": example.RepositoryId,\n\t\t\t\"version\": example.Version,\n\t\t})\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.NetworkFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = NetworkFunctions.getVersion();\n\n ctx.export(\"dataProxmoxVirtualEnvironmentVersion\", %!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Network:getVersion\n Arguments: {}\noutputs:\n dataProxmoxVirtualEnvironmentVersion:\n release: ${example.release}\n repository_id: ${example.repositoryId}\n version: ${example.version}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getVersion.\n","properties":{"id":{"description":"Placeholder identifier attribute.\n","type":"string"},"release":{"description":"The current Proxmox VE point release in `x.y` format.\n","type":"string"},"repositoryId":{"description":"The short git revision from which this version was build.\n","type":"string"},"version":{"description":"The full pve-manager package version of this node.\n","type":"string"}},"required":["id","release","repositoryId","version"],"type":"object"}},"proxmoxve:Permission/getGroup:getGroup":{"description":"Retrieves information about a specific user group.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst operationsTeam = proxmoxve.Permission.getGroup({\n groupId: \"operations-team\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_team = proxmoxve.Permission.get_group(group_id=\"operations-team\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsTeam = ProxmoxVE.Permission.GetGroup.Invoke(new()\n {\n GroupId = \"operations-team\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetGroup(ctx, \u0026permission.GetGroupArgs{\n\t\t\tGroupId: \"operations-team\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport com.pulumi.proxmoxve.Permission.inputs.GetGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var operationsTeam = PermissionFunctions.getGroup(GetGroupArgs.builder()\n .groupId(\"operations-team\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n operationsTeam:\n fn::invoke:\n Function: proxmoxve:Permission:getGroup\n Arguments:\n groupId: operations-team\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getGroup.\n","properties":{"groupId":{"type":"string","description":"The group identifier.\n"}},"type":"object","required":["groupId"]},"outputs":{"description":"A collection of values returned by getGroup.\n","properties":{"acls":{"description":"The access control list.\n","items":{"$ref":"#/types/proxmoxve:Permission/getGroupAcl:getGroupAcl"},"type":"array"},"comment":{"description":"The group comment.\n","type":"string"},"groupId":{"type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"members":{"description":"The group members as a list with `username@realm` entries.\n","items":{"type":"string"},"type":"array"}},"required":["acls","comment","groupId","members","id"],"type":"object"}},"proxmoxve:Permission/getGroups:getGroups":{"description":"Retrieves basic information about all available user groups.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst availableGroups = proxmoxve.Permission.getGroups({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\navailable_groups = proxmoxve.Permission.get_groups()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var availableGroups = ProxmoxVE.Permission.GetGroups.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetGroups(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var availableGroups = PermissionFunctions.getGroups();\n\n }\n}\n```\n```yaml\nvariables:\n availableGroups:\n fn::invoke:\n Function: proxmoxve:Permission:getGroups\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getGroups.\n","properties":{"comments":{"description":"The group comments.\n","items":{"type":"string"},"type":"array"},"groupIds":{"description":"The group identifiers.\n","items":{"type":"string"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"}},"required":["comments","groupIds","id"],"type":"object"}},"proxmoxve:Permission/getPool:getPool":{"description":"Retrieves information about a specific resource pool.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst operationsPool = proxmoxve.Permission.getPool({\n poolId: \"operations\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_pool = proxmoxve.Permission.get_pool(pool_id=\"operations\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsPool = ProxmoxVE.Permission.GetPool.Invoke(new()\n {\n PoolId = \"operations\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetPool(ctx, \u0026permission.GetPoolArgs{\n\t\t\tPoolId: \"operations\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport com.pulumi.proxmoxve.Permission.inputs.GetPoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var operationsPool = PermissionFunctions.getPool(GetPoolArgs.builder()\n .poolId(\"operations\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n operationsPool:\n fn::invoke:\n Function: proxmoxve:Permission:getPool\n Arguments:\n poolId: operations\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getPool.\n","properties":{"poolId":{"type":"string","description":"The pool identifier.\n"}},"type":"object","required":["poolId"]},"outputs":{"description":"A collection of values returned by getPool.\n","properties":{"comment":{"description":"The pool comment.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"members":{"description":"The pool members.\n","items":{"$ref":"#/types/proxmoxve:Permission/getPoolMember:getPoolMember"},"type":"array"},"poolId":{"type":"string"}},"required":["comment","members","poolId","id"],"type":"object"}},"proxmoxve:Permission/getPools:getPools":{"description":"Retrieves the identifiers for all the available resource pools.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst availablePools = proxmoxve.Permission.getPools({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\navailable_pools = proxmoxve.Permission.get_pools()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var availablePools = ProxmoxVE.Permission.GetPools.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetPools(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var availablePools = PermissionFunctions.getPools();\n\n }\n}\n```\n```yaml\nvariables:\n availablePools:\n fn::invoke:\n Function: proxmoxve:Permission:getPools\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getPools.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"poolIds":{"description":"The pool identifiers.\n","items":{"type":"string"},"type":"array"}},"required":["poolIds","id"],"type":"object"}},"proxmoxve:Permission/getRole:getRole":{"description":"Retrieves information about a specific role.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst operationsRole = proxmoxve.Permission.getRole({\n roleId: \"operations\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_role = proxmoxve.Permission.get_role(role_id=\"operations\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsRole = ProxmoxVE.Permission.GetRole.Invoke(new()\n {\n RoleId = \"operations\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetRole(ctx, \u0026permission.GetRoleArgs{\n\t\t\tRoleId: \"operations\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport com.pulumi.proxmoxve.Permission.inputs.GetRoleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var operationsRole = PermissionFunctions.getRole(GetRoleArgs.builder()\n .roleId(\"operations\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n operationsRole:\n fn::invoke:\n Function: proxmoxve:Permission:getRole\n Arguments:\n roleId: operations\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getRole.\n","properties":{"roleId":{"type":"string","description":"The role identifier.\n"}},"type":"object","required":["roleId"]},"outputs":{"description":"A collection of values returned by getRole.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"privileges":{"description":"The role privileges\n","items":{"type":"string"},"type":"array"},"roleId":{"type":"string"}},"required":["privileges","roleId","id"],"type":"object"}},"proxmoxve:Permission/getRoles:getRoles":{"description":"Retrieves information about all the available roles.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst availableRoles = proxmoxve.Permission.getRoles({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\navailable_roles = proxmoxve.Permission.get_roles()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var availableRoles = ProxmoxVE.Permission.GetRoles.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetRoles(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var availableRoles = PermissionFunctions.getRoles();\n\n }\n}\n```\n```yaml\nvariables:\n availableRoles:\n fn::invoke:\n Function: proxmoxve:Permission:getRoles\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getRoles.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"privileges":{"description":"The role privileges.\n","items":{"items":{"type":"string"},"type":"array"},"type":"array"},"roleIds":{"description":"The role identifiers.\n","items":{"type":"string"},"type":"array"},"specials":{"description":"Whether the role is special (built-in).\n","items":{"type":"boolean"},"type":"array"}},"required":["privileges","roleIds","specials","id"],"type":"object"}},"proxmoxve:Permission/getUser:getUser":{"description":"Retrieves information about a specific user.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst operationsUser = proxmoxve.Permission.getUser({\n userId: \"operation@pam\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_user = proxmoxve.Permission.get_user(user_id=\"operation@pam\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsUser = ProxmoxVE.Permission.GetUser.Invoke(new()\n {\n UserId = \"operation@pam\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetUser(ctx, \u0026permission.GetUserArgs{\n\t\t\tUserId: \"operation@pam\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport com.pulumi.proxmoxve.Permission.inputs.GetUserArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var operationsUser = PermissionFunctions.getUser(GetUserArgs.builder()\n .userId(\"operation@pam\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n operationsUser:\n fn::invoke:\n Function: proxmoxve:Permission:getUser\n Arguments:\n userId: operation@pam\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getUser.\n","properties":{"userId":{"type":"string","description":"The user identifier.\n"}},"type":"object","required":["userId"]},"outputs":{"description":"A collection of values returned by getUser.\n","properties":{"acls":{"description":"The access control list.\n","items":{"$ref":"#/types/proxmoxve:Permission/getUserAcl:getUserAcl"},"type":"array"},"comment":{"description":"The user comment.\n","type":"string"},"email":{"description":"The user's email address.\n","type":"string"},"enabled":{"description":"Whether the user account is enabled.\n","type":"boolean"},"expirationDate":{"description":"The user account's expiration date (RFC 3339).\n","type":"string"},"firstName":{"description":"The user's first name.\n","type":"string"},"groups":{"description":"The user's groups.\n","items":{"type":"string"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"keys":{"description":"The user's keys.\n","type":"string"},"lastName":{"description":"The user's last name.\n","type":"string"},"userId":{"type":"string"}},"required":["acls","comment","email","enabled","expirationDate","firstName","groups","keys","lastName","userId","id"],"type":"object"}},"proxmoxve:Permission/getUsers:getUsers":{"description":"Retrieves information about all the available users.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst availableUsers = proxmoxve.Permission.getUsers({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\navailable_users = proxmoxve.Permission.get_users()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var availableUsers = ProxmoxVE.Permission.GetUsers.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetUsers(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var availableUsers = PermissionFunctions.getUsers();\n\n }\n}\n```\n```yaml\nvariables:\n availableUsers:\n fn::invoke:\n Function: proxmoxve:Permission:getUsers\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getUsers.\n","properties":{"comments":{"description":"The user comments.\n","items":{"type":"string"},"type":"array"},"emails":{"description":"The users' email addresses.\n","items":{"type":"string"},"type":"array"},"enableds":{"description":"Whether a user account is enabled.\n","items":{"type":"boolean"},"type":"array"},"expirationDates":{"description":"The user accounts' expiration dates (RFC 3339).\n","items":{"type":"string"},"type":"array"},"firstNames":{"description":"The users' first names.\n","items":{"type":"string"},"type":"array"},"groups":{"description":"The users' groups.\n","items":{"items":{"type":"string"},"type":"array"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","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:Storage/getDatastores:getDatastores":{"description":"Retrieves information about all the datastores available to 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 \"@pulumi/proxmoxve\";\n\nconst firstNode = proxmoxve.Storage.getDatastores({\n nodeName: \"first-node\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfirst_node = proxmoxve.Storage.get_datastores(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.Storage.GetDatastores.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/v6/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.GetDatastores(ctx, \u0026storage.GetDatastoresArgs{\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.Storage.StorageFunctions;\nimport com.pulumi.proxmoxve.Storage.inputs.GetDatastoresArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 = StorageFunctions.getDatastores(GetDatastoresArgs.builder()\n .nodeName(\"first-node\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n firstNode:\n fn::invoke:\n Function: proxmoxve:Storage:getDatastores\n Arguments:\n nodeName: first-node\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getDatastores.\n","properties":{"nodeName":{"type":"string","description":"A node name.\n"}},"type":"object","required":["nodeName"]},"outputs":{"description":"A collection of values returned by getDatastores.\n","properties":{"actives":{"description":"Whether the datastore is active.\n","items":{"type":"boolean"},"type":"array"},"contentTypes":{"description":"The allowed content types.\n","items":{"items":{"type":"string"},"type":"array"},"type":"array"},"datastoreIds":{"description":"The datastore identifiers.\n","items":{"type":"string"},"type":"array"},"enableds":{"description":"Whether the datastore is enabled.\n","items":{"type":"boolean"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"nodeName":{"type":"string"},"shareds":{"description":"Whether the datastore is shared.\n","items":{"type":"boolean"},"type":"array"},"spaceAvailables":{"description":"The available space in bytes.\n","items":{"type":"integer"},"type":"array"},"spaceTotals":{"description":"The total space in bytes.\n","items":{"type":"integer"},"type":"array"},"spaceUseds":{"description":"The used space in bytes.\n","items":{"type":"integer"},"type":"array"},"types":{"description":"The storage types.\n","items":{"type":"string"},"type":"array"}},"required":["actives","contentTypes","datastoreIds","enableds","nodeName","shareds","spaceAvailables","spaceTotals","spaceUseds","types","id"],"type":"object"}},"proxmoxve:VM/getVirtualMachine:getVirtualMachine":{"description":"Retrieves information about a specific VM.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst testVm = proxmoxve.VM.getVirtualMachine({\n nodeName: \"test\",\n vmId: 100,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\ntest_vm = proxmoxve.VM.get_virtual_machine(node_name=\"test\",\n vm_id=100)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testVm = ProxmoxVE.VM.GetVirtualMachine.Invoke(new()\n {\n NodeName = \"test\",\n VmId = 100,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/VM\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := VM.GetVirtualMachine(ctx, \u0026vm.GetVirtualMachineArgs{\n\t\t\tNodeName: \"test\",\n\t\t\tVmId: 100,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.VM.VMFunctions;\nimport com.pulumi.proxmoxve.VM.inputs.GetVirtualMachineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var testVm = VMFunctions.getVirtualMachine(GetVirtualMachineArgs.builder()\n .nodeName(\"test\")\n .vmId(100)\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n testVm:\n fn::invoke:\n Function: proxmoxve:VM:getVirtualMachine\n Arguments:\n nodeName: test\n vmId: 100\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getVirtualMachine.\n","properties":{"nodeName":{"type":"string","description":"The node name.\n"},"status":{"type":"string","description":"Status of the VM\n"},"template":{"type":"boolean","description":"Is VM a template (true) or a regular VM (false)\n"},"vmId":{"type":"integer","description":"The VM identifier.\n"}},"type":"object","required":["nodeName","vmId"]},"outputs":{"description":"A collection of values returned by getVirtualMachine.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"name":{"description":"The virtual machine name.\n","type":"string"},"nodeName":{"type":"string"},"status":{"description":"Status of the VM\n","type":"string"},"tags":{"description":"A list of tags of the VM.\n","items":{"type":"string"},"type":"array"},"template":{"description":"Is VM a template (true) or a regular VM (false)\n","type":"boolean"},"vmId":{"type":"integer"}},"required":["name","nodeName","tags","vmId","id"],"type":"object"}},"proxmoxve:VM/getVirtualMachines:getVirtualMachines":{"description":"Retrieves information about all VMs in the Proxmox cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst ubuntuVms = proxmoxve.VM.getVirtualMachines({\n tags: [\"ubuntu\"],\n});\nconst ubuntuTemplates = proxmoxve.VM.getVirtualMachines({\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 tags: [\n \"template\",\n \"latest\",\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nubuntu_vms = proxmoxve.VM.get_virtual_machines(tags=[\"ubuntu\"])\nubuntu_templates = proxmoxve.VM.get_virtual_machines(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 tags=[\n \"template\",\n \"latest\",\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ubuntuVms = ProxmoxVE.VM.GetVirtualMachines.Invoke(new()\n {\n Tags = new[]\n {\n \"ubuntu\",\n },\n });\n\n var ubuntuTemplates = ProxmoxVE.VM.GetVirtualMachines.Invoke(new()\n {\n Filters = new[]\n {\n new ProxmoxVE.VM.Inputs.GetVirtualMachinesFilterInputArgs\n {\n Name = \"template\",\n Values = new[]\n {\n \"true\",\n },\n },\n new ProxmoxVE.VM.Inputs.GetVirtualMachinesFilterInputArgs\n {\n Name = \"status\",\n Values = new[]\n {\n \"stopped\",\n },\n },\n new ProxmoxVE.VM.Inputs.GetVirtualMachinesFilterInputArgs\n {\n Name = \"name\",\n Regex = true,\n Values = new[]\n {\n \"^ubuntu-20.*$\",\n },\n },\n new ProxmoxVE.VM.Inputs.GetVirtualMachinesFilterInputArgs\n {\n Name = \"node_name\",\n Regex = true,\n Values = new[]\n {\n \"node_us_[1-3]\",\n \"node_eu_[1-3]\",\n },\n },\n },\n Tags = new[]\n {\n \"template\",\n \"latest\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/VM\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := VM.GetVirtualMachines(ctx, \u0026vm.GetVirtualMachinesArgs{\n\t\t\tTags: []string{\n\t\t\t\t\"ubuntu\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = VM.GetVirtualMachines(ctx, \u0026vm.GetVirtualMachinesArgs{\n\t\t\tFilters: []vm.GetVirtualMachinesFilter{\n\t\t\t\t{\n\t\t\t\t\tName: \"template\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"true\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName: \"status\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"stopped\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName: \"name\",\n\t\t\t\t\tRegex: pulumi.BoolRef(true),\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"^ubuntu-20.*$\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName: \"node_name\",\n\t\t\t\t\tRegex: pulumi.BoolRef(true),\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"node_us_[1-3]\",\n\t\t\t\t\t\t\"node_eu_[1-3]\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTags: []string{\n\t\t\t\t\"template\",\n\t\t\t\t\"latest\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.VM.VMFunctions;\nimport com.pulumi.proxmoxve.VM.inputs.GetVirtualMachinesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var ubuntuVms = VMFunctions.getVirtualMachines(GetVirtualMachinesArgs.builder()\n .tags(\"ubuntu\")\n .build());\n\n final var ubuntuTemplates = VMFunctions.getVirtualMachines(GetVirtualMachinesArgs.builder()\n .filters( \n GetVirtualMachinesFilterArgs.builder()\n .name(\"template\")\n .values(true)\n .build(),\n GetVirtualMachinesFilterArgs.builder()\n .name(\"status\")\n .values(\"stopped\")\n .build(),\n GetVirtualMachinesFilterArgs.builder()\n .name(\"name\")\n .regex(true)\n .values(\"^ubuntu-20.*$\")\n .build(),\n GetVirtualMachinesFilterArgs.builder()\n .name(\"node_name\")\n .regex(true)\n .values( \n \"node_us_[1-3]\",\n \"node_eu_[1-3]\")\n .build())\n .tags( \n \"template\",\n \"latest\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n ubuntuVms:\n fn::invoke:\n Function: proxmoxve:VM:getVirtualMachines\n Arguments:\n tags:\n - ubuntu\n ubuntuTemplates:\n fn::invoke:\n Function: proxmoxve:VM:getVirtualMachines\n Arguments:\n 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 tags:\n - template\n - latest\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getVirtualMachines.\n","properties":{"filters":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/getVirtualMachinesFilter:getVirtualMachinesFilter"},"description":"Filter blocks. The VM must satisfy all filter blocks to be included in the result.\n"},"nodeName":{"type":"string","description":"The node name. All cluster nodes will be queried in case this is omitted\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags to filter the VMs. The VM must have all\nthe tags to be included in the result.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getVirtualMachines.\n","properties":{"filters":{"items":{"$ref":"#/types/proxmoxve:VM/getVirtualMachinesFilter:getVirtualMachinesFilter"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"nodeName":{"description":"The node name.\n","type":"string"},"tags":{"description":"A list of tags of the VM.\n","items":{"type":"string"},"type":"array"},"vms":{"description":"The VMs list.\n","items":{"$ref":"#/types/proxmoxve:VM/getVirtualMachinesVm:getVirtualMachinesVm"},"type":"array"}},"required":["vms","id"],"type":"object"}},"proxmoxve:index/getNode:getNode":{"description":"Retrieves information about node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst node = proxmoxve.getNode({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nnode = proxmoxve.get_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 node = ProxmoxVE.GetNode.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/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.GetNode(ctx, \u0026proxmoxve.GetNodeArgs{}, 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.GetNodeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var node = ProxmoxveFunctions.getNode();\n\n }\n}\n```\n```yaml\nvariables:\n node:\n fn::invoke:\n Function: proxmoxve:getNode\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getNode.\n","properties":{"nodeName":{"type":"string","description":"The node name.\n"}},"type":"object","required":["nodeName"]},"outputs":{"description":"A collection of values returned by getNode.\n","properties":{"cpuCount":{"description":"The CPU count on the node.\n","type":"integer"},"cpuModel":{"description":"The CPU model on the node.\n","type":"string"},"cpuSockets":{"description":"The CPU utilization on the node.\n","type":"integer"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"memoryAvailable":{"description":"The memory available on the node.\n","type":"integer"},"memoryTotal":{"description":"The total memory on the node.\n","type":"integer"},"memoryUsed":{"description":"The memory used on the node.\n","type":"integer"},"nodeName":{"type":"string"},"uptime":{"description":"The uptime in seconds on the node.\n","type":"integer"}},"required":["cpuCount","cpuModel","cpuSockets","memoryAvailable","memoryTotal","memoryUsed","nodeName","uptime","id"],"type":"object"}},"proxmoxve:index/getVm2:getVm2":{"description":"!\u003e **DO NOT USE**\nThis is an experimental implementation of a Proxmox VM datasource using Plugin Framework.\n","inputs":{"description":"A collection of arguments for invoking getVm2.\n","properties":{"clone":{"$ref":"#/types/proxmoxve:index/getVm2Clone:getVm2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:index/getVm2Cpu:getVm2Cpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description of the VM.\n"},"id":{"type":"integer","description":"The unique identifier of the VM in the Proxmox cluster.\n"},"name":{"type":"string","description":"The name of the VM.\n"},"nodeName":{"type":"string","description":"The name of the node where the VM is provisioned.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags assigned to the VM.\n"},"template":{"type":"boolean","description":"Whether the VM is a template.\n"},"timeouts":{"$ref":"#/types/proxmoxve:index/getVm2Timeouts:getVm2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:index/getVm2Vga:getVm2Vga","description":"The VGA configuration.\n"}},"type":"object","required":["id","nodeName"]},"outputs":{"description":"A collection of values returned by getVm2.\n","properties":{"clone":{"$ref":"#/types/proxmoxve:index/getVm2Clone:getVm2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:index/getVm2Cpu:getVm2Cpu","description":"The CPU configuration.\n"},"description":{"description":"The description of the VM.\n","type":"string"},"id":{"description":"The unique identifier of the VM in the Proxmox cluster.\n","type":"integer"},"name":{"description":"The name of the VM.\n","type":"string"},"nodeName":{"description":"The name of the node where the VM is provisioned.\n","type":"string"},"tags":{"description":"The tags assigned to the VM.\n","items":{"type":"string"},"type":"array"},"template":{"description":"Whether the VM is a template.\n","type":"boolean"},"timeouts":{"$ref":"#/types/proxmoxve:index/getVm2Timeouts:getVm2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:index/getVm2Vga:getVm2Vga","description":"The VGA configuration.\n"}},"required":["cpu","id","nodeName","tags","vga"],"type":"object"}}}} \ No newline at end of file diff --git a/provider/cmd/pulumi-resource-proxmoxve/schema.json b/provider/cmd/pulumi-resource-proxmoxve/schema.json index 6485f668..3df8819f 100644 --- a/provider/cmd/pulumi-resource-proxmoxve/schema.json +++ b/provider/cmd/pulumi-resource-proxmoxve/schema.json @@ -3391,7 +3391,7 @@ }, "migrationType": { "type": "string", - "description": "Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`).\n" + "description": "Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`).\n" }, "nextId": { "$ref": "#/types/proxmoxve:Cluster/OptionsNextId:OptionsNextId", @@ -3477,7 +3477,7 @@ }, "migrationType": { "type": "string", - "description": "Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`).\n" + "description": "Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`).\n" }, "nextId": { "$ref": "#/types/proxmoxve:Cluster/OptionsNextId:OptionsNextId", @@ -3561,7 +3561,7 @@ }, "migrationType": { "type": "string", - "description": "Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`).\n" + "description": "Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`).\n" }, "nextId": { "$ref": "#/types/proxmoxve:Cluster/OptionsNextId:OptionsNextId", @@ -5408,7 +5408,7 @@ } }, "proxmoxve:Storage/file:File": { - "description": "Manages a file.\n\n## Example Usage\n\n### Backups (`dump`)\n\n\u003e The resource with this content type uses SSH access to the node. You might need to configure the `ssh` option in the `provider` section.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst backup = new proxmoxve.storage.File(\"backup\", {\n contentType: \"dump\",\n datastoreId: \"local\",\n nodeName: \"pve\",\n sourceFile: {\n path: \"vzdump-lxc-100-2023_11_08-23_10_05.tar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nbackup = proxmoxve.storage.File(\"backup\",\n content_type=\"dump\",\n datastore_id=\"local\",\n node_name=\"pve\",\n source_file={\n \"path\": \"vzdump-lxc-100-2023_11_08-23_10_05.tar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var backup = new ProxmoxVE.Storage.File(\"backup\", new()\n {\n ContentType = \"dump\",\n DatastoreId = \"local\",\n NodeName = \"pve\",\n SourceFile = new ProxmoxVE.Storage.Inputs.FileSourceFileArgs\n {\n Path = \"vzdump-lxc-100-2023_11_08-23_10_05.tar\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Storage.NewFile(ctx, \"backup\", \u0026Storage.FileArgs{\n\t\t\tContentType: pulumi.String(\"dump\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tSourceFile: \u0026storage.FileSourceFileArgs{\n\t\t\t\tPath: pulumi.String(\"vzdump-lxc-100-2023_11_08-23_10_05.tar\"),\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.Storage.File;\nimport com.pulumi.proxmoxve.Storage.FileArgs;\nimport com.pulumi.proxmoxve.Storage.inputs.FileSourceFileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var backup = new File(\"backup\", FileArgs.builder()\n .contentType(\"dump\")\n .datastoreId(\"local\")\n .nodeName(\"pve\")\n .sourceFile(FileSourceFileArgs.builder()\n .path(\"vzdump-lxc-100-2023_11_08-23_10_05.tar\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n backup:\n type: proxmoxve:Storage:File\n properties:\n contentType: dump\n datastoreId: local\n nodeName: pve\n sourceFile:\n path: vzdump-lxc-100-2023_11_08-23_10_05.tar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Images\n\n\u003e Consider using `proxmoxve.Download.File` resource instead. Using this resource for images is less efficient (requires to transfer uploaded image to node) though still supported.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst ubuntuContainerTemplate = new proxmoxve.storage.File(\"ubuntuContainerTemplate\", {\n contentType: \"iso\",\n datastoreId: \"local\",\n nodeName: \"pve\",\n sourceFile: {\n path: \"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nubuntu_container_template = proxmoxve.storage.File(\"ubuntuContainerTemplate\",\n content_type=\"iso\",\n datastore_id=\"local\",\n node_name=\"pve\",\n source_file={\n \"path\": \"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ubuntuContainerTemplate = new ProxmoxVE.Storage.File(\"ubuntuContainerTemplate\", new()\n {\n ContentType = \"iso\",\n DatastoreId = \"local\",\n NodeName = \"pve\",\n SourceFile = new ProxmoxVE.Storage.Inputs.FileSourceFileArgs\n {\n Path = \"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Storage.NewFile(ctx, \"ubuntuContainerTemplate\", \u0026Storage.FileArgs{\n\t\t\tContentType: pulumi.String(\"iso\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tSourceFile: \u0026storage.FileSourceFileArgs{\n\t\t\t\tPath: pulumi.String(\"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Storage.File;\nimport com.pulumi.proxmoxve.Storage.FileArgs;\nimport com.pulumi.proxmoxve.Storage.inputs.FileSourceFileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ubuntuContainerTemplate = new File(\"ubuntuContainerTemplate\", FileArgs.builder()\n .contentType(\"iso\")\n .datastoreId(\"local\")\n .nodeName(\"pve\")\n .sourceFile(FileSourceFileArgs.builder()\n .path(\"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ubuntuContainerTemplate:\n type: proxmoxve:Storage:File\n 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### Container Template (`vztmpl`)\n\n\u003e Consider using `proxmoxve.Download.File` resource instead. Using this resource for container images is less efficient (requires to transfer uploaded image to node) though still supported.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst ubuntuContainerTemplate = new proxmoxve.storage.File(\"ubuntuContainerTemplate\", {\n contentType: \"vztmpl\",\n datastoreId: \"local\",\n nodeName: \"first-node\",\n sourceFile: {\n path: \"https://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nubuntu_container_template = proxmoxve.storage.File(\"ubuntuContainerTemplate\",\n content_type=\"vztmpl\",\n datastore_id=\"local\",\n node_name=\"first-node\",\n source_file={\n \"path\": \"https://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ubuntuContainerTemplate = new ProxmoxVE.Storage.File(\"ubuntuContainerTemplate\", new()\n {\n ContentType = \"vztmpl\",\n DatastoreId = \"local\",\n NodeName = \"first-node\",\n SourceFile = new ProxmoxVE.Storage.Inputs.FileSourceFileArgs\n {\n Path = \"https://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/v6/go/proxmoxve/Storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Storage.NewFile(ctx, \"ubuntuContainerTemplate\", \u0026Storage.FileArgs{\n\t\t\tContentType: pulumi.String(\"vztmpl\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName: pulumi.String(\"first-node\"),\n\t\t\tSourceFile: \u0026storage.FileSourceFileArgs{\n\t\t\t\tPath: pulumi.String(\"https://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 com.pulumi.proxmoxve.Storage.File;\nimport com.pulumi.proxmoxve.Storage.FileArgs;\nimport com.pulumi.proxmoxve.Storage.inputs.FileSourceFileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ubuntuContainerTemplate = new File(\"ubuntuContainerTemplate\", FileArgs.builder()\n .contentType(\"vztmpl\")\n .datastoreId(\"local\")\n .nodeName(\"first-node\")\n .sourceFile(FileSourceFileArgs.builder()\n .path(\"https://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ubuntuContainerTemplate:\n type: proxmoxve:Storage:File\n properties:\n contentType: vztmpl\n datastoreId: local\n nodeName: first-node\n sourceFile:\n path: https://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 `overwrite` to `false`.\n\n## Import\n\nInstances can be imported using the `node_name`, `datastore_id`, `content_type`\n\nand the `file_name` in the following format:\n\ntext\n\nnode_name:datastore_id/content_type/file_name\n\nExample:\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Storage/file:File cloud_config pve/local:snippets/example.cloud-config.yaml\n```\n\n", + "description": "Use this resource to upload files to a Proxmox VE node. The file can be a backup, an ISO image, a snippet, or a container template depending on the `content_type` attribute.\n\n## Example Usage\n\n### Backups (`dump`)\n\n\u003e The resource with this content type uses SSH access to the node. You might need to configure the `ssh` option in the `provider` section.\n\n\u003e The provider currently does not support restoring backups. You can use the Proxmox VE web interface or the `qmrestore` / `pct restore` command to restore VM / Container from a backup.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst backup = new proxmoxve.storage.File(\"backup\", {\n contentType: \"dump\",\n datastoreId: \"local\",\n nodeName: \"pve\",\n sourceFile: {\n path: \"vzdump-lxc-100-2023_11_08-23_10_05.tar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nbackup = proxmoxve.storage.File(\"backup\",\n content_type=\"dump\",\n datastore_id=\"local\",\n node_name=\"pve\",\n source_file={\n \"path\": \"vzdump-lxc-100-2023_11_08-23_10_05.tar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var backup = new ProxmoxVE.Storage.File(\"backup\", new()\n {\n ContentType = \"dump\",\n DatastoreId = \"local\",\n NodeName = \"pve\",\n SourceFile = new ProxmoxVE.Storage.Inputs.FileSourceFileArgs\n {\n Path = \"vzdump-lxc-100-2023_11_08-23_10_05.tar\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Storage.NewFile(ctx, \"backup\", \u0026Storage.FileArgs{\n\t\t\tContentType: pulumi.String(\"dump\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tSourceFile: \u0026storage.FileSourceFileArgs{\n\t\t\t\tPath: pulumi.String(\"vzdump-lxc-100-2023_11_08-23_10_05.tar\"),\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.Storage.File;\nimport com.pulumi.proxmoxve.Storage.FileArgs;\nimport com.pulumi.proxmoxve.Storage.inputs.FileSourceFileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var backup = new File(\"backup\", FileArgs.builder()\n .contentType(\"dump\")\n .datastoreId(\"local\")\n .nodeName(\"pve\")\n .sourceFile(FileSourceFileArgs.builder()\n .path(\"vzdump-lxc-100-2023_11_08-23_10_05.tar\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n backup:\n type: proxmoxve:Storage:File\n properties:\n contentType: dump\n datastoreId: local\n nodeName: pve\n sourceFile:\n path: vzdump-lxc-100-2023_11_08-23_10_05.tar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Images\n\n\u003e Consider using `proxmoxve.Download.File` resource instead. Using this resource for images is less efficient (requires to transfer uploaded image to node) though still supported.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst ubuntuContainerTemplate = new proxmoxve.storage.File(\"ubuntuContainerTemplate\", {\n contentType: \"iso\",\n datastoreId: \"local\",\n nodeName: \"pve\",\n sourceFile: {\n path: \"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nubuntu_container_template = proxmoxve.storage.File(\"ubuntuContainerTemplate\",\n content_type=\"iso\",\n datastore_id=\"local\",\n node_name=\"pve\",\n source_file={\n \"path\": \"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ubuntuContainerTemplate = new ProxmoxVE.Storage.File(\"ubuntuContainerTemplate\", new()\n {\n ContentType = \"iso\",\n DatastoreId = \"local\",\n NodeName = \"pve\",\n SourceFile = new ProxmoxVE.Storage.Inputs.FileSourceFileArgs\n {\n Path = \"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Storage.NewFile(ctx, \"ubuntuContainerTemplate\", \u0026Storage.FileArgs{\n\t\t\tContentType: pulumi.String(\"iso\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tSourceFile: \u0026storage.FileSourceFileArgs{\n\t\t\t\tPath: pulumi.String(\"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Storage.File;\nimport com.pulumi.proxmoxve.Storage.FileArgs;\nimport com.pulumi.proxmoxve.Storage.inputs.FileSourceFileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ubuntuContainerTemplate = new File(\"ubuntuContainerTemplate\", FileArgs.builder()\n .contentType(\"iso\")\n .datastoreId(\"local\")\n .nodeName(\"pve\")\n .sourceFile(FileSourceFileArgs.builder()\n .path(\"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ubuntuContainerTemplate:\n type: proxmoxve:Storage:File\n 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### Container Template (`vztmpl`)\n\n\u003e Consider using `proxmoxve.Download.File` resource instead. Using this resource for container images is less efficient (requires to transfer uploaded image to node) though still supported.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst ubuntuContainerTemplate = new proxmoxve.storage.File(\"ubuntuContainerTemplate\", {\n contentType: \"vztmpl\",\n datastoreId: \"local\",\n nodeName: \"first-node\",\n sourceFile: {\n path: \"https://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nubuntu_container_template = proxmoxve.storage.File(\"ubuntuContainerTemplate\",\n content_type=\"vztmpl\",\n datastore_id=\"local\",\n node_name=\"first-node\",\n source_file={\n \"path\": \"https://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ubuntuContainerTemplate = new ProxmoxVE.Storage.File(\"ubuntuContainerTemplate\", new()\n {\n ContentType = \"vztmpl\",\n DatastoreId = \"local\",\n NodeName = \"first-node\",\n SourceFile = new ProxmoxVE.Storage.Inputs.FileSourceFileArgs\n {\n Path = \"https://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/v6/go/proxmoxve/Storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Storage.NewFile(ctx, \"ubuntuContainerTemplate\", \u0026Storage.FileArgs{\n\t\t\tContentType: pulumi.String(\"vztmpl\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName: pulumi.String(\"first-node\"),\n\t\t\tSourceFile: \u0026storage.FileSourceFileArgs{\n\t\t\t\tPath: pulumi.String(\"https://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 com.pulumi.proxmoxve.Storage.File;\nimport com.pulumi.proxmoxve.Storage.FileArgs;\nimport com.pulumi.proxmoxve.Storage.inputs.FileSourceFileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ubuntuContainerTemplate = new File(\"ubuntuContainerTemplate\", FileArgs.builder()\n .contentType(\"vztmpl\")\n .datastoreId(\"local\")\n .nodeName(\"first-node\")\n .sourceFile(FileSourceFileArgs.builder()\n .path(\"https://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ubuntuContainerTemplate:\n type: proxmoxve:Storage:File\n properties:\n contentType: vztmpl\n datastoreId: local\n nodeName: first-node\n sourceFile:\n path: https://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 `overwrite` to `false`.\n\n## Import\n\nInstances can be imported using the `node_name`, `datastore_id`, `content_type`\n\nand the `file_name` in the following format:\n\ntext\n\nnode_name:datastore_id/content_type/file_name\n\nExample:\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Storage/file:File cloud_config pve/local:snippets/example.cloud-config.yaml\n```\n\n", "properties": { "contentType": { "type": "string", diff --git a/provider/go.mod b/provider/go.mod index b71b3778..49cc2a18 100644 --- a/provider/go.mod +++ b/provider/go.mod @@ -16,17 +16,8 @@ require ( cloud.google.com/go v0.112.1 // indirect cloud.google.com/go/compute/metadata v0.5.0 // indirect cloud.google.com/go/iam v1.1.6 // indirect - cloud.google.com/go/kms v1.15.7 // indirect - cloud.google.com/go/logging v1.9.0 // indirect - cloud.google.com/go/longrunning v0.5.5 // indirect cloud.google.com/go/storage v1.39.1 // indirect dario.cat/mergo v1.0.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1 // indirect - github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect github.com/BurntSushi/toml v1.2.1 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver v1.5.0 // indirect @@ -42,25 +33,10 @@ require ( github.com/atotto/clipboard v0.1.4 // indirect github.com/avast/retry-go/v4 v4.6.0 // indirect github.com/aws/aws-sdk-go v1.50.36 // indirect - github.com/aws/aws-sdk-go-v2 v1.26.1 // indirect - github.com/aws/aws-sdk-go-v2/config v1.27.11 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.17.11 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7 // indirect - github.com/aws/aws-sdk-go-v2/service/kms v1.30.1 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.20.5 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.28.6 // indirect - github.com/aws/smithy-go v1.20.2 // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bgentry/speakeasy v0.1.0 // indirect github.com/blang/semver v3.5.1+incompatible // indirect - github.com/cenkalti/backoff/v3 v3.2.2 // indirect github.com/charmbracelet/bubbles v0.16.1 // indirect github.com/charmbracelet/bubbletea v0.25.0 // indirect github.com/charmbracelet/lipgloss v0.7.1 // indirect @@ -68,7 +44,6 @@ require ( github.com/cloudflare/circl v1.3.7 // indirect github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 // indirect github.com/cyphar/filepath-securejoin v0.2.4 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect github.com/deckarep/golang-set/v2 v2.5.0 // indirect github.com/djherbis/times v1.5.0 // indirect github.com/edsrzf/mmap-go v1.1.0 // indirect @@ -78,12 +53,9 @@ require ( github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.5.0 // indirect github.com/go-git/go-git/v5 v5.12.0 // indirect - github.com/go-jose/go-jose/v3 v3.0.3 // indirect github.com/go-logr/logr v1.4.1 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/gofrs/uuid v4.2.0+incompatible // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v5 v5.2.1 // indirect github.com/golang/glog v1.2.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.4 // indirect @@ -92,10 +64,8 @@ require ( github.com/google/s2a-go v0.1.7 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/google/uuid v1.6.0 // indirect - github.com/google/wire v0.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect github.com/googleapis/gax-go/v2 v2.12.2 // indirect - github.com/gorilla/mux v1.8.0 // indirect github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect @@ -104,12 +74,7 @@ require ( github.com/hashicorp/go-hclog v1.6.3 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-plugin v1.6.2 // indirect - github.com/hashicorp/go-retryablehttp v0.7.7 // indirect - github.com/hashicorp/go-rootcerts v1.0.2 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect - github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8 // indirect - github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 // indirect - github.com/hashicorp/go-sockaddr v1.0.6 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/hashicorp/hcl v1.0.0 // indirect @@ -124,7 +89,6 @@ require ( github.com/hashicorp/terraform-plugin-sdk/v2 v2.35.0 // indirect github.com/hashicorp/terraform-registry-address v0.2.3 // indirect github.com/hashicorp/terraform-svchost v0.1.1 // indirect - github.com/hashicorp/vault/api v1.12.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/huandu/xstrings v1.3.3 // indirect github.com/iancoleman/strcase v0.2.0 // indirect @@ -136,7 +100,6 @@ require ( github.com/kevinburke/ssh_config v1.2.0 // indirect github.com/klauspost/compress v1.15.11 // indirect github.com/kr/fs v0.1.0 // indirect - github.com/kylelemons/godebug v1.1.0 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect @@ -165,11 +128,9 @@ require ( github.com/pgavlin/fx v0.1.6 // indirect github.com/pgavlin/goldmark v1.1.33-0.20200616210433-b5eb04559386 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect - github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pkg/sftp v1.13.7 // indirect github.com/pkg/term v1.1.0 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect github.com/posener/complete v1.2.3 // indirect github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 // indirect github.com/pulumi/esc v0.10.0 // indirect @@ -182,7 +143,6 @@ require ( github.com/rivo/uniseg v0.4.4 // indirect github.com/rogpeppe/go-internal v1.13.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/ryanuber/go-glob v1.0.0 // indirect github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 // indirect github.com/santhosh-tekuri/jsonschema/v5 v5.0.0 // indirect github.com/segmentio/asm v1.1.3 // indirect @@ -194,7 +154,6 @@ require ( github.com/spf13/cast v1.5.0 // indirect github.com/spf13/cobra v1.8.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/stretchr/testify v1.9.0 // indirect github.com/teekennedy/goldmark-markdown v0.3.0 // indirect github.com/texttheater/golang-levenshtein v1.0.1 // indirect github.com/uber/jaeger-client-go v2.30.0+incompatible // indirect @@ -204,9 +163,6 @@ require ( github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect - github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect - github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect - github.com/xeipuuv/gojsonschema v1.2.0 // indirect github.com/yuin/goldmark v1.7.4 // indirect github.com/zclconf/go-cty v1.15.0 // indirect go.opencensus.io v0.24.0 // indirect @@ -216,8 +172,6 @@ require ( go.opentelemetry.io/otel/metric v1.24.0 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect go.uber.org/atomic v1.9.0 // indirect - gocloud.dev v0.37.0 // indirect - gocloud.dev/secrets/hashivault v0.37.0 // indirect golang.org/x/crypto v0.29.0 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect golang.org/x/mod v0.22.0 // indirect @@ -229,7 +183,6 @@ require ( golang.org/x/text v0.20.0 // indirect golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.27.0 // indirect - golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect google.golang.org/api v0.169.0 // indirect google.golang.org/appengine v1.6.8 // indirect google.golang.org/genproto v0.0.0-20240311173647-c811ad7063a7 // indirect diff --git a/provider/go.sum b/provider/go.sum index b1be4299..42dcdddb 100644 --- a/provider/go.sum +++ b/provider/go.sum @@ -308,8 +308,6 @@ cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZ cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= -cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= -cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= @@ -1236,38 +1234,24 @@ github.com/aws/aws-sdk-go v1.50.36 h1:PjWXHwZPuTLMR1NIb8nEjLucZBMzmf84TLoLbD8BZq github.com/aws/aws-sdk-go v1.50.36/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk= github.com/aws/aws-sdk-go-v2 v1.26.1 h1:5554eUqIYVWpU0YmeeYZ0wU64H2VLBs8TlhRB2L+EkA= github.com/aws/aws-sdk-go-v2 v1.26.1/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.2 h1:x6xsQXGSmW6frevwDA+vi/wqhp1ct18mVXYN08/93to= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.2/go.mod h1:lPprDr1e6cJdyYeGXnRaJoP4Md+cDBvi2eOj00BlGmg= github.com/aws/aws-sdk-go-v2/config v1.27.11 h1:f47rANd2LQEYHda2ddSCKYId18/8BhSRM4BULGmfgNA= github.com/aws/aws-sdk-go-v2/config v1.27.11/go.mod h1:SMsV78RIOYdve1vf36z8LmnszlRWkwMQtomCAI0/mIE= github.com/aws/aws-sdk-go-v2/credentials v1.17.11 h1:YuIB1dJNf1Re822rriUOTxopaHHvIq0l/pX3fwO+Tzs= github.com/aws/aws-sdk-go-v2/credentials v1.17.11/go.mod h1:AQtFPsDH9bI2O+71anW6EKL+NcD7LG3dpKGMV4SShgo= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1 h1:FVJ0r5XTHSmIHJV6KuDmdYhEpvlHpiSd38RQWhut5J4= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1/go.mod h1:zusuAeqezXzAB24LGuzuekqMAEgWkVYukBec3kr3jUg= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.16.15 h1:7Zwtt/lP3KNRkeZre7soMELMGNoBrutx8nobg1jKWmo= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.16.15/go.mod h1:436h2adoHb57yd+8W+gYPrrA9U/R/SuAuOO42Ushzhw= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5 h1:aw39xVGeRWlWx9EzGVnhOR4yOjQDHPQ6o6NmBlscyQg= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5/go.mod h1:FSaRudD0dXiMPK2UjknVwwTYyZMRsHv3TtkabsZih5I= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5 h1:PG1F3OD1szkuQPzDw3CIQsRIrtTlUC3lP84taWzHlq0= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5/go.mod h1:jU1li6RFryMz+so64PpKtudI+QzbKoIEivqdf6LNpOc= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.5 h1:81KE7vaZzrl7yHBYHVEzYB8sypz11NMOZ40YlWvPxsU= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.5/go.mod h1:LIt2rg7Mcgn09Ygbdh/RdIm0rQ+3BNkbP1gyVMFtRK0= -github.com/aws/aws-sdk-go-v2/service/iam v1.31.4 h1:eVm30ZIDv//r6Aogat9I88b5YX1xASSLcEDqHYRPVl0= -github.com/aws/aws-sdk-go-v2/service/iam v1.31.4/go.mod h1:aXWImQV0uTW35LM0A/T4wEg6R1/ReXUu4SM6/lUHYK0= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 h1:Ji0DY1xUsUr3I8cHps0G+XM3WWU16lP6yG8qu1GAZAs= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2/go.mod h1:5CsjAbs3NlGQyZNFACh+zztPDI7fU6eW9QsxjfnuBKg= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.7 h1:ZMeFZ5yk+Ek+jNr1+uwCd2tG89t6oTS5yVWpa6yy2es= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.7/go.mod h1:mxV05U+4JiHqIpGqqYXOHLPKUC6bDXC44bsUhNjOEwY= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7 h1:ogRAwT1/gxJBcSWDMZlgyFUM962F51A5CRhDLbxLdmo= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7/go.mod h1:YCsIZhXfRPLFFCl5xxY+1T9RKzOKjCut+28JSX2DnAk= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.5 h1:f9RyWNtS8oH7cZlbn+/JNPpjUk5+5fLd5lM9M0i49Ys= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.5/go.mod h1:h5CoMZV2VF297/VLhRhO1WF+XYWOzXo+4HsObA4HjBQ= github.com/aws/aws-sdk-go-v2/service/kms v1.30.1 h1:SBn4I0fJXF9FYOVRSVMWuhvEKoAHDikjGpS3wlmw5DE= github.com/aws/aws-sdk-go-v2/service/kms v1.30.1/go.mod h1:2snWQJQUKsbN66vAawJuOGX7dr37pfOq9hb0tZDGIqQ= -github.com/aws/aws-sdk-go-v2/service/s3 v1.53.1 h1:6cnno47Me9bRykw9AEv9zkXE+5or7jz8TsskTTccbgc= -github.com/aws/aws-sdk-go-v2/service/s3 v1.53.1/go.mod h1:qmdkIIAC+GCLASF7R2whgNrJADz0QZPX+Seiw/i4S3o= github.com/aws/aws-sdk-go-v2/service/sso v1.20.5 h1:vN8hEbpRnL7+Hopy9dzmRle1xmDc7o8tmY0klsr175w= github.com/aws/aws-sdk-go-v2/service/sso v1.20.5/go.mod h1:qGzynb/msuZIE8I75DVRCUXw3o3ZyBmUvMwQ2t/BrGM= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4 h1:Jux+gDDyi1Lruk+KHF91tK2KCuY61kzoCpvtvJJBtOE= @@ -1286,14 +1270,10 @@ github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdn github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= -github.com/bpg/terraform-provider-proxmox v0.66.3 h1:vVX2buO1DJtVfhgWMtGajMncakfINeE95sjLFVtasbk= -github.com/bpg/terraform-provider-proxmox v0.66.3/go.mod h1:8QbXas0bZL5aUROdkZ2T4TL17q5/JYPuBInervMKa74= -github.com/bpg/terraform-provider-proxmox v0.67.0 h1:pqKrXtJY5M3/XWS9dE8r4TktuR44cjB5DDSmZ7rkBY4= -github.com/bpg/terraform-provider-proxmox v0.67.0/go.mod h1:wlWIbGQHB4F4eZ9TntpRZbaMBYaCQv3N39WVYHLGvtk= github.com/bpg/terraform-provider-proxmox v0.67.1 h1:PGCvMCZCDh6w3dvnMqZQYUTZhN0srGOBZx6YSQxRWo0= github.com/bpg/terraform-provider-proxmox v0.67.1/go.mod h1:wlWIbGQHB4F4eZ9TntpRZbaMBYaCQv3N39WVYHLGvtk= -github.com/brianvoe/gofakeit/v7 v7.0.4 h1:Mkxwz9jYg8Ad8NvT9HA27pCMZGFQo08MK6jD0QTKEww= -github.com/brianvoe/gofakeit/v7 v7.0.4/go.mod h1:QXuPeBw164PJCzCUZVmgpgHJ3Llj49jSLVkKPMtxtxA= +github.com/brianvoe/gofakeit/v7 v7.1.2 h1:vSKaVScNhWVpf1rlyEKSvO8zKZfuDtGqoIHT//iNNb8= +github.com/brianvoe/gofakeit/v7 v7.1.2/go.mod h1:QXuPeBw164PJCzCUZVmgpgHJ3Llj49jSLVkKPMtxtxA= github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA= github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8= github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= @@ -1448,8 +1428,6 @@ github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfU github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= -github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4= -github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY= github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -1514,10 +1492,6 @@ github.com/google/go-pkcs11 v0.2.0/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMc github.com/google/go-pkcs11 v0.2.1-0.20230907215043-c6f79328ddf9/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= -github.com/google/go-replayers/grpcreplay v1.1.0 h1:S5+I3zYyZ+GQz68OfbURDdt/+cSMqCK1wrvNx7WBzTE= -github.com/google/go-replayers/grpcreplay v1.1.0/go.mod h1:qzAvJ8/wi57zq7gWqaE6AwLM6miiXUQwP1S+I9icmhk= -github.com/google/go-replayers/httpreplay v1.2.0 h1:VM1wEyyjaoU53BwrOnaf9VhAyQQEEioJvFYxYcLRKzk= -github.com/google/go-replayers/httpreplay v1.2.0/go.mod h1:WahEFFZZ7a1P4VM1qEeHy+tME4bwyqPcwWbNlUI1Mcg= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= @@ -1550,7 +1524,6 @@ github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= -github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -1622,8 +1595,6 @@ github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+l github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= github.com/hashicorp/go-plugin v1.6.0/go.mod h1:lBS5MtSSBZk0SHc66KACcjjlU6WzEVP/8pwz68aMkCI= -github.com/hashicorp/go-plugin v1.6.1 h1:P7MR2UP6gNKGPp+y7EZw2kOiq4IR9WiqLvp0XOsVdwI= -github.com/hashicorp/go-plugin v1.6.1/go.mod h1:XPHFku2tFo3o3QKFgSYo+cghcUhw1NA1hZyMK0PWAw0= github.com/hashicorp/go-plugin v1.6.2 h1:zdGAEd0V1lCaU0u+MxWQhtSDQmahpkwOun8U8EiRVog= github.com/hashicorp/go-plugin v1.6.2/go.mod h1:CkgLQ5CZqNmdL9U9JzM532t8ZiYQ35+pj3b1FD37R0Q= github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU= @@ -1651,15 +1622,13 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hc-install v0.6.2/go.mod h1:2JBpd+NCFKiHiu/yYCGaPyPHhZLxXTpz8oreHa/a3Ps= github.com/hashicorp/hc-install v0.6.3/go.mod h1:KamGdbodYzlufbWh4r9NRo8y6GLHWZP2GBtdnms1Ln0= -github.com/hashicorp/hc-install v0.8.0 h1:LdpZeXkZYMQhoKPCecJHlKvUkQFixN/nvyR1CdfOLjI= -github.com/hashicorp/hc-install v0.8.0/go.mod h1:+MwJYjDfCruSD/udvBmRB22Nlkwwkwf5sAB6uTIhSaU= +github.com/hashicorp/hc-install v0.9.0 h1:2dIk8LcvANwtv3QZLckxcjyF5w8KVtiMxu6G6eLhghE= +github.com/hashicorp/hc-install v0.9.0/go.mod h1:+6vOP+mf3tuGgMApVYtmsnDoKWMDcFXeTxCACYZ8SFg= github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.0.0/go.mod h1:oVVDG71tEinNGYCxinCYadcmKU9bglqW9pV3txagJ90= github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= -github.com/hashicorp/hcl/v2 v2.21.0 h1:lve4q/o/2rqwYOgUg3y3V2YPyD1/zkCLGjIV74Jit14= -github.com/hashicorp/hcl/v2 v2.21.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= github.com/hashicorp/hcl/v2 v2.23.0 h1:Fphj1/gCylPxHutVSEOf2fBOh1VE4AuLV7+kbJf3qos= github.com/hashicorp/hcl/v2 v2.23.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= github.com/hashicorp/hil v0.0.0-20190212132231-97b3a9cdfa93 h1:T1Q6ag9tCwun16AW+XK3tAql24P4uTGUMIn1/92WsQQ= @@ -1673,32 +1642,26 @@ github.com/hashicorp/terraform-exec v0.21.0/go.mod h1:1PPeMYou+KDUSSeRE9szMZ/oHf github.com/hashicorp/terraform-json v0.4.0/go.mod h1:eAbqb4w0pSlRmdvl8fOyHAi/+8jnkVYN28gJkSJrLhU= github.com/hashicorp/terraform-json v0.19.0/go.mod h1:qdeBs11ovMzo5puhrRibdD6d2Dq6TyE/28JiU4tIQxk= github.com/hashicorp/terraform-json v0.21.0/go.mod h1:qdeBs11ovMzo5puhrRibdD6d2Dq6TyE/28JiU4tIQxk= -github.com/hashicorp/terraform-json v0.22.1 h1:xft84GZR0QzjPVWs4lRUwvTcPnegqlyS7orfb5Ltvec= -github.com/hashicorp/terraform-json v0.22.1/go.mod h1:JbWSQCLFSXFFhg42T7l9iJwdGXBYV8fmmD6o/ML4p3A= -github.com/hashicorp/terraform-plugin-framework v1.12.0 h1:7HKaueHPaikX5/7cbC1r9d1m12iYHY+FlNZEGxQ42CQ= -github.com/hashicorp/terraform-plugin-framework v1.12.0/go.mod h1:N/IOQ2uYjW60Jp39Cp3mw7I/OpC/GfZ0385R0YibmkE= +github.com/hashicorp/terraform-json v0.23.0 h1:sniCkExU4iKtTADReHzACkk8fnpQXrdD2xoR+lppBkI= +github.com/hashicorp/terraform-json v0.23.0/go.mod h1:MHdXbBAbSg0GvzuWazEGKAn/cyNfIB7mN6y7KJN6y2c= github.com/hashicorp/terraform-plugin-framework v1.13.0 h1:8OTG4+oZUfKgnfTdPTJwZ532Bh2BobF4H+yBiYJ/scw= github.com/hashicorp/terraform-plugin-framework v1.13.0/go.mod h1:j64rwMGpgM3NYXTKuxrCnyubQb/4VKldEKlcG8cvmjU= github.com/hashicorp/terraform-plugin-framework-timeouts v0.4.1 h1:gm5b1kHgFFhaKFhm4h2TgvMUlNzFAtUqlcOWnWPm+9E= github.com/hashicorp/terraform-plugin-framework-timeouts v0.4.1/go.mod h1:MsjL1sQ9L7wGwzJ5RjcI6FzEMdyoBnw+XK8ZnOvQOLY= -github.com/hashicorp/terraform-plugin-framework-validators v0.14.0 h1:3PCn9iyzdVOgHYOBmncpSSOxjQhCTYmc+PGvbdlqSaI= -github.com/hashicorp/terraform-plugin-framework-validators v0.14.0/go.mod h1:LwDKNdzxrDY/mHBrlC6aYfE2fQ3Dk3gaJD64vNiXvo4= github.com/hashicorp/terraform-plugin-framework-validators v0.15.0 h1:RXMmu7JgpFjnI1a5QjMCBb11usrW2OtAG+iOTIj5c9Y= github.com/hashicorp/terraform-plugin-framework-validators v0.15.0/go.mod h1:Bh89/hNmqsEWug4/XWKYBwtnw3tbz5BAy1L1OgvbIaY= github.com/hashicorp/terraform-plugin-go v0.22.0/go.mod h1:mPULV91VKss7sik6KFEcEu7HuTogMLLO/EvWCuFkRVE= -github.com/hashicorp/terraform-plugin-go v0.24.0 h1:2WpHhginCdVhFIrWHxDEg6RBn3YaWzR2o6qUeIEat2U= -github.com/hashicorp/terraform-plugin-go v0.24.0/go.mod h1:tUQ53lAsOyYSckFGEefGC5C8BAaO0ENqzFd3bQeuYQg= github.com/hashicorp/terraform-plugin-go v0.25.0 h1:oi13cx7xXA6QciMcpcFi/rwA974rdTxjqEhXJjbAyks= github.com/hashicorp/terraform-plugin-go v0.25.0/go.mod h1:+SYagMYadJP86Kvn+TGeV+ofr/R3g4/If0O5sO96MVw= github.com/hashicorp/terraform-plugin-log v0.9.0 h1:i7hOA+vdAItN1/7UrfBqBwvYPQ9TFvymaRGZED3FCV0= github.com/hashicorp/terraform-plugin-log v0.9.0/go.mod h1:rKL8egZQ/eXSyDqzLUuwUYLVdlYeamldAHSxjUFADow= -github.com/hashicorp/terraform-plugin-mux v0.16.0 h1:RCzXHGDYwUwwqfYYWJKBFaS3fQsWn/ZECEiW7p2023I= -github.com/hashicorp/terraform-plugin-mux v0.16.0/go.mod h1:PF79mAsPc8CpusXPfEVa4X8PtkB+ngWoiUClMrNZlYo= +github.com/hashicorp/terraform-plugin-mux v0.17.0 h1:/J3vv3Ps2ISkbLPiZOLspFcIZ0v5ycUXCEQScudGCCw= +github.com/hashicorp/terraform-plugin-mux v0.17.0/go.mod h1:yWuM9U1Jg8DryNfvCp+lH70WcYv6D8aooQxxxIzFDsE= github.com/hashicorp/terraform-plugin-sdk v1.7.0 h1:B//oq0ZORG+EkVrIJy0uPGSonvmXqxSzXe8+GhknoW0= github.com/hashicorp/terraform-plugin-sdk v1.7.0/go.mod h1:OjgQmey5VxnPej/buEhe+YqKm0KNvV3QqU4hkqHqPCY= github.com/hashicorp/terraform-plugin-test v1.2.0/go.mod h1:QIJHYz8j+xJtdtLrFTlzQVC0ocr3rf/OjIpgZLK56Hs= -github.com/hashicorp/terraform-plugin-testing v1.10.0 h1:2+tmRNhvnfE4Bs8rB6v58S/VpqzGC6RCh9Y8ujdn+aw= -github.com/hashicorp/terraform-plugin-testing v1.10.0/go.mod h1:iWRW3+loP33WMch2P/TEyCxxct/ZEcCGMquSLSCVsrc= +github.com/hashicorp/terraform-plugin-testing v1.11.0 h1:MeDT5W3YHbONJt2aPQyaBsgQeAIckwPX41EUHXEn29A= +github.com/hashicorp/terraform-plugin-testing v1.11.0/go.mod h1:WNAHQ3DcgV/0J+B15WTE6hDvxcUdkPPpnB1FR3M910U= github.com/hashicorp/terraform-registry-address v0.2.3 h1:2TAiKJ1A3MAkZlH1YI/aTVcLZRu7JseiXNRHbOAyoTI= github.com/hashicorp/terraform-registry-address v0.2.3/go.mod h1:lFHA76T8jfQteVfT7caREqguFrW3c4MFSPhZB7HHgUM= github.com/hashicorp/terraform-svchost v0.0.0-20191011084731-65d371908596/go.mod h1:kNDNcF7sN4DocDLBkQYz73HGKwN1ANB1blq4lIYLYvg= @@ -1949,32 +1912,18 @@ github.com/pulumi/esc v0.10.0 h1:jzBKzkLVW0mePeanDRfqSQoCJ5yrkux0jIwAkUxpRKE= github.com/pulumi/esc v0.10.0/go.mod h1:2Bfa+FWj/xl8CKqRTWbWgDX0SOD4opdQgvYSURTGK2c= github.com/pulumi/inflector v0.1.1 h1:dvlxlWtXwOJTUUtcYDvwnl6Mpg33prhK+7mzeF+SobA= github.com/pulumi/inflector v0.1.1/go.mod h1:HUFCjcPTz96YtTuUlwG3i3EZG4WlniBvR9bd+iJxCUY= -github.com/pulumi/providertest v0.1.2 h1:9pJS9MeNkMyGwyNeHmvh8QqLgJy39Nk2/ym5u7r13ng= -github.com/pulumi/providertest v0.1.2/go.mod h1:GcsqEGgSngwaNOD+kICJPIUQlnA911fGBU8HDlJvVL0= +github.com/pulumi/providertest v0.1.3 h1:GpNKRy/haNjRHiUA9bi4diU4Op2zf3axYXbga5AepHg= +github.com/pulumi/providertest v0.1.3/go.mod h1:GcsqEGgSngwaNOD+kICJPIUQlnA911fGBU8HDlJvVL0= github.com/pulumi/pulumi-java/pkg v0.16.1 h1:orHnDWFbpOERwaBLry9f+6nqPX7x0MsrIkaa5QDGAns= github.com/pulumi/pulumi-java/pkg v0.16.1/go.mod h1:QH0DihZkWYle9XFc+LJ76m4hUo+fA3RdyaM90pqOaSM= -github.com/pulumi/pulumi-terraform-bridge/pf v0.46.0 h1:B95rH9t8LSZdEApF8sDogjSz67exG2KY3jGr87zwJek= -github.com/pulumi/pulumi-terraform-bridge/pf v0.46.0/go.mod h1:i75vRSbpf4YizD+ynNkLgp0sgZhm2N7xapPaBBiiZXA= -github.com/pulumi/pulumi-terraform-bridge/pf v0.47.0 h1:vPNSFtQxeXaqhKxjPHeuNX1g9l4HB/TVj5A3iUrd0EU= -github.com/pulumi/pulumi-terraform-bridge/pf v0.47.0/go.mod h1:n1Yt5RBM0Td388yoPX380Jz6tlVqJzVsNfWGcaQo5vE= github.com/pulumi/pulumi-terraform-bridge/pf v0.48.0 h1:wbE7jVvIYE2QmQh9st9a1oBRCj9yc6EPeAIoDHcpUsw= github.com/pulumi/pulumi-terraform-bridge/pf v0.48.0/go.mod h1:Bw6XabsWSw4gjk9q94MZHorvpx7bp710DWJgMQCAaJE= -github.com/pulumi/pulumi-terraform-bridge/v3 v3.93.1 h1:EEf5W3buVR5pcCKTXGouDS1/oY6TqVUIRKLksl5h4Es= -github.com/pulumi/pulumi-terraform-bridge/v3 v3.93.1/go.mod h1:jNpOSGkfTeZSnSjpGBHHiyllciCEDRqFaZhLUpQPlpo= -github.com/pulumi/pulumi-terraform-bridge/v3 v3.94.0 h1:wRJxFAQVV5Bg+BUVKpsNTWDIBSPCZUnbtxTyujZiM2o= -github.com/pulumi/pulumi-terraform-bridge/v3 v3.94.0/go.mod h1:S7rLe9paLUP2U7iwJhNJslwQszlgUfND83KRVCogbog= github.com/pulumi/pulumi-terraform-bridge/v3 v3.95.0 h1:zChnIrzR89muOosXFxcd/HTnOw7lkbm7EXKiXQI0/2Y= github.com/pulumi/pulumi-terraform-bridge/v3 v3.95.0/go.mod h1:1d07wF5+u3d9xOtzuX/3K9+QF4/ISp0QKdC/orX0abI= -github.com/pulumi/pulumi-yaml v1.10.3 h1:j5cjPiE32ILmjrWnC1cfZ0MWdqCZ8fg9wlaWk7HOtM4= -github.com/pulumi/pulumi-yaml v1.10.3/go.mod h1:MFMQXkaUP5YQUKVJ6Z/aagZDl2f8hdU9oGaJfTcMf1Y= github.com/pulumi/pulumi-yaml v1.11.1 h1:ULUL9fpb2Bwgf3jJHx0FamKYm0ld0KxBQr/uSAslRLk= github.com/pulumi/pulumi-yaml v1.11.1/go.mod h1:RdXRBupRGGAD1kbYNG1V1h6pyFnXisvQsl0AANvVjGI= -github.com/pulumi/pulumi/pkg/v3 v3.136.1 h1:zA8aJZ7qI0QgZkBKjjQaYHEcigK6pZfrbfG38imXzWo= -github.com/pulumi/pulumi/pkg/v3 v3.136.1/go.mod h1:Iz8QIs07AbEdrO52hEIEM5C4VBDUYFH2NdM9u2xxBxY= github.com/pulumi/pulumi/pkg/v3 v3.137.0 h1:/KPFQQaB5W0/GhVxSTGnEzv3ZW5uieGN5Q2q+Lsr+Zw= github.com/pulumi/pulumi/pkg/v3 v3.137.0/go.mod h1:ZQXJUTysDwq/mtilutRBKguH6DI+3b2WgNcOrs0whJ0= -github.com/pulumi/pulumi/sdk/v3 v3.137.0 h1:bxhYpOY7Z4xt+VmezEpHuhjpOekkaMqOjzxFg/1OhCw= -github.com/pulumi/pulumi/sdk/v3 v3.137.0/go.mod h1:PvKsX88co8XuwuPdzolMvew5lZV+4JmZfkeSjj7A6dI= github.com/pulumi/pulumi/sdk/v3 v3.138.0 h1:1feN0YU1dHnbNw+cHaenmx3AgU0DEiKQbvjxaGQuShk= github.com/pulumi/pulumi/sdk/v3 v3.138.0/go.mod h1:PvKsX88co8XuwuPdzolMvew5lZV+4JmZfkeSjj7A6dI= github.com/pulumi/schema-tools v0.1.2 h1:Fd9xvUjgck4NA+7/jSk7InqCUT4Kj940+EcnbQKpfZo= @@ -2178,10 +2127,7 @@ golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= -golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw= -golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -2199,8 +2145,6 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= -golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c h1:7dEasQXItcW1xKJ2+gg5VOiBnqWrJc+rq0DPKyvvdbY= -golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:NQtJDoLvd6faHhE7m4T/1IY708gDefGGjR/iUW8yQQ8= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= @@ -2252,8 +2196,6 @@ golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0= -golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -2332,9 +2274,6 @@ golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= -golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= -golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= -golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -2372,8 +2311,6 @@ golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQ golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk= golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0= golang.org/x/oauth2 v0.14.0/go.mod h1:lAtNWgaWfL4cm7j2OV8TxGi9Qb7ECORx8DktCY74OwM= -golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= -golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA= golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -2396,9 +2333,6 @@ golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= -golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -2510,8 +2444,6 @@ golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= -golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -2532,10 +2464,7 @@ golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= -golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= -golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24= -golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M= golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -2559,8 +2488,6 @@ golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= -golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -2644,9 +2571,6 @@ golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= -golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= -golang.org/x/tools v0.26.0 h1:v/60pFQmzmT9ExmjDv2gGIfi3OqfKoEP6I5+umXlbnQ= -golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0= golang.org/x/tools v0.27.0 h1:qEKojBykQkQ4EynWy4S8Weg69NumxKdn40Fce3uc/8o= golang.org/x/tools v0.27.0/go.mod h1:sUi0ZgbwW9ZPAq26Ekut+weQPR5eIM6GQLQ1Yjm1H0Q= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -2914,8 +2838,6 @@ google.golang.org/genproto/googleapis/api v0.0.0-20231012201019-e917dd12ba7a/go. google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:IBQ646DjkDkvUIsVq/cc03FUFQ9wbZu7yE396YcL870= google.golang.org/genproto/googleapis/api v0.0.0-20231030173426-d783a09b4405/go.mod h1:oT32Z4o8Zv2xPQTg0pbVaPr0MPOH6f14RgXt7zfIpwg= google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4= -google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117 h1:+rdxYoE3E5htTEWIe15GlN6IfvbURM//Jt0mmkmm6ZU= -google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117/go.mod h1:OimBR/bc1wPO9iV4NC2bpyjy3VnAwZh5EBPQdtaE5oo= google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8= google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo= google.golang.org/genproto/googleapis/bytestream v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:ylj+BE99M198VPbBh6A8d9n3w8fChvyLK3wwBOjXBFA= @@ -2938,8 +2860,6 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20231012201019-e917dd12ba7a/go. google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:swOH3j0KzcDDgGUWr+SNpyTen5YrXjS3eyPzFYKc6lc= google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405/go.mod h1:67X1fPuzjcrkymZzZV1vvkFeTn2Rvc6lYF9MYFGCcwE= google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:oQ5rr10WTTMvP4A36n8JpR1OrO1BEiV4f78CneXZxkA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 h1:1GBuWVLM/KMVUv1t1En5Gs+gFZCNd360GGb4sSxtrhU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 h1:e7S5W7MGGLaSu8j3YjdezkZ+m1/Nm0uRVRMEMGk26Xs= google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= @@ -2992,8 +2912,6 @@ google.golang.org/grpc v1.58.2/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSs google.golang.org/grpc v1.58.3/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= google.golang.org/grpc v1.61.1/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= -google.golang.org/grpc v1.66.2 h1:3QdXkuq3Bkh7w+ywLdLvM56cmGvQHUMZpiCzt6Rqaoo= -google.golang.org/grpc v1.66.2/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= @@ -3017,8 +2935,6 @@ google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/sdk/dotnet/Cluster/Options.cs b/sdk/dotnet/Cluster/Options.cs index 9e5dfa47..4034275f 100644 --- a/sdk/dotnet/Cluster/Options.cs +++ b/sdk/dotnet/Cluster/Options.cs @@ -128,7 +128,7 @@ public partial class Options : global::Pulumi.CustomResource public Output MigrationCidr { get; private set; } = null!; /// - /// Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`). + /// Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`). /// [Output("migrationType")] public Output MigrationType { get; private set; } = null!; @@ -295,7 +295,7 @@ public sealed class OptionsArgs : global::Pulumi.ResourceArgs public Input? MigrationCidr { get; set; } /// - /// Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`). + /// Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`). /// [Input("migrationType")] public Input? MigrationType { get; set; } @@ -423,7 +423,7 @@ public sealed class OptionsState : global::Pulumi.ResourceArgs public Input? MigrationCidr { get; set; } /// - /// Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`). + /// Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`). /// [Input("migrationType")] public Input? MigrationType { get; set; } diff --git a/sdk/dotnet/Storage/File.cs b/sdk/dotnet/Storage/File.cs index 0b638181..27981035 100644 --- a/sdk/dotnet/Storage/File.cs +++ b/sdk/dotnet/Storage/File.cs @@ -10,7 +10,7 @@ namespace Pulumi.ProxmoxVE.Storage { /// - /// Manages a file. + /// Use this resource to upload files to a Proxmox VE node. The file can be a backup, an ISO image, a snippet, or a container template depending on the `content_type` attribute. /// /// ## Example Usage /// @@ -18,6 +18,8 @@ namespace Pulumi.ProxmoxVE.Storage /// /// > The resource with this content type uses SSH access to the node. You might need to configure the `ssh` option in the `provider` section. /// + /// > The provider currently does not support restoring backups. You can use the Proxmox VE web interface or the `qmrestore` / `pct restore` command to restore VM / Container from a backup. + /// /// ```csharp /// using System.Collections.Generic; /// using System.Linq; diff --git a/sdk/go/proxmoxve/cluster/options.go b/sdk/go/proxmoxve/cluster/options.go index c73f9726..9bc05679 100644 --- a/sdk/go/proxmoxve/cluster/options.go +++ b/sdk/go/proxmoxve/cluster/options.go @@ -59,7 +59,7 @@ type Options struct { MaxWorkers pulumi.IntPtrOutput `pulumi:"maxWorkers"` // Cluster wide migration network CIDR. MigrationCidr pulumi.StringPtrOutput `pulumi:"migrationCidr"` - // Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`). + // Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`). MigrationType pulumi.StringPtrOutput `pulumi:"migrationType"` // The ranges for the next free VM ID auto-selection pool. NextId OptionsNextIdPtrOutput `pulumi:"nextId"` @@ -131,7 +131,7 @@ type optionsState struct { MaxWorkers *int `pulumi:"maxWorkers"` // Cluster wide migration network CIDR. MigrationCidr *string `pulumi:"migrationCidr"` - // Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`). + // Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`). MigrationType *string `pulumi:"migrationType"` // The ranges for the next free VM ID auto-selection pool. NextId *OptionsNextId `pulumi:"nextId"` @@ -174,7 +174,7 @@ type OptionsState struct { MaxWorkers pulumi.IntPtrInput // Cluster wide migration network CIDR. MigrationCidr pulumi.StringPtrInput - // Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`). + // Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`). MigrationType pulumi.StringPtrInput // The ranges for the next free VM ID auto-selection pool. NextId OptionsNextIdPtrInput @@ -221,7 +221,7 @@ type optionsArgs struct { MaxWorkers *int `pulumi:"maxWorkers"` // Cluster wide migration network CIDR. MigrationCidr *string `pulumi:"migrationCidr"` - // Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`). + // Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`). MigrationType *string `pulumi:"migrationType"` // The ranges for the next free VM ID auto-selection pool. NextId *OptionsNextId `pulumi:"nextId"` @@ -265,7 +265,7 @@ type OptionsArgs struct { MaxWorkers pulumi.IntPtrInput // Cluster wide migration network CIDR. MigrationCidr pulumi.StringPtrInput - // Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`). + // Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`). MigrationType pulumi.StringPtrInput // The ranges for the next free VM ID auto-selection pool. NextId OptionsNextIdPtrInput @@ -445,7 +445,7 @@ func (o OptionsOutput) MigrationCidr() pulumi.StringPtrOutput { return o.ApplyT(func(v *Options) pulumi.StringPtrOutput { return v.MigrationCidr }).(pulumi.StringPtrOutput) } -// Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`). +// Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`). func (o OptionsOutput) MigrationType() pulumi.StringPtrOutput { return o.ApplyT(func(v *Options) pulumi.StringPtrOutput { return v.MigrationType }).(pulumi.StringPtrOutput) } diff --git a/sdk/go/proxmoxve/storage/file.go b/sdk/go/proxmoxve/storage/file.go index 6ee83ec4..eedff8fa 100644 --- a/sdk/go/proxmoxve/storage/file.go +++ b/sdk/go/proxmoxve/storage/file.go @@ -12,7 +12,7 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/pulumi" ) -// Manages a file. +// Use this resource to upload files to a Proxmox VE node. The file can be a backup, an ISO image, a snippet, or a container template depending on the `contentType` attribute. // // ## Example Usage // @@ -20,6 +20,8 @@ import ( // // > The resource with this content type uses SSH access to the node. You might need to configure the `ssh` option in the `provider` section. // +// > The provider currently does not support restoring backups. You can use the Proxmox VE web interface or the `qmrestore` / `pct restore` command to restore VM / Container from a backup. +// // ```go // package main // diff --git a/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/cluster/Options.java b/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/cluster/Options.java index fa7d10f0..b0fb0e28 100644 --- a/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/cluster/Options.java +++ b/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/cluster/Options.java @@ -329,14 +329,14 @@ public Output> migrationCidr() { return Codegen.optional(this.migrationCidr); } /** - * Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`). + * Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`). * */ @Export(name="migrationType", refs={String.class}, tree="[0]") private Output migrationType; /** - * @return Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`). + * @return Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`). * */ public Output> migrationType() { diff --git a/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/cluster/OptionsArgs.java b/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/cluster/OptionsArgs.java index a54791bc..654f61bf 100644 --- a/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/cluster/OptionsArgs.java +++ b/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/cluster/OptionsArgs.java @@ -275,14 +275,14 @@ public Optional> migrationCidr() { } /** - * Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`). + * Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`). * */ @Import(name="migrationType") private @Nullable Output migrationType; /** - * @return Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`). + * @return Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`). * */ public Optional> migrationType() { @@ -720,7 +720,7 @@ public Builder migrationCidr(String migrationCidr) { } /** - * @param migrationType Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`). + * @param migrationType Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`). * * @return builder * @@ -731,7 +731,7 @@ public Builder migrationType(@Nullable Output migrationType) { } /** - * @param migrationType Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`). + * @param migrationType Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`). * * @return builder * diff --git a/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/cluster/inputs/OptionsState.java b/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/cluster/inputs/OptionsState.java index 27f6ab24..b24aa637 100644 --- a/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/cluster/inputs/OptionsState.java +++ b/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/cluster/inputs/OptionsState.java @@ -275,14 +275,14 @@ public Optional> migrationCidr() { } /** - * Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`). + * Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`). * */ @Import(name="migrationType") private @Nullable Output migrationType; /** - * @return Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`). + * @return Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`). * */ public Optional> migrationType() { @@ -720,7 +720,7 @@ public Builder migrationCidr(String migrationCidr) { } /** - * @param migrationType Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`). + * @param migrationType Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`). * * @return builder * @@ -731,7 +731,7 @@ public Builder migrationType(@Nullable Output migrationType) { } /** - * @param migrationType Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`). + * @param migrationType Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`). * * @return builder * diff --git a/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/storage/File.java b/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/storage/File.java index 66eeb9ff..7882dd3c 100644 --- a/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/storage/File.java +++ b/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/storage/File.java @@ -19,7 +19,7 @@ import javax.annotation.Nullable; /** - * Manages a file. + * Use this resource to upload files to a Proxmox VE node. The file can be a backup, an ISO image, a snippet, or a container template depending on the `content_type` attribute. * * ## Example Usage * @@ -27,6 +27,8 @@ * * > The resource with this content type uses SSH access to the node. You might need to configure the `ssh` option in the `provider` section. * + * > The provider currently does not support restoring backups. You can use the Proxmox VE web interface or the `qmrestore` / `pct restore` command to restore VM / Container from a backup. + * * <!--Start PulumiCodeChooser --> *
  * {@code
diff --git a/sdk/nodejs/.pnp.cjs b/sdk/nodejs/.pnp.cjs
index c0816d57..29ea4360 100755
--- a/sdk/nodejs/.pnp.cjs
+++ b/sdk/nodejs/.pnp.cjs
@@ -27,7 +27,7 @@ const RAW_RUNTIME_STATE =
       [null, {\
         "packageLocation": "./",\
         "packageDependencies": [\
-          ["@pulumi/pulumi", "virtual:e3ea5596057613f291e16aefd182df0dffbcd648afc59958478e10ea0ea51a3f83e06f13f67e87917b0e48034bc768eb4bbff7fe0fb77981a25950767a2254e6#npm:3.138.0"],\
+          ["@pulumi/pulumi", "virtual:e3ea5596057613f291e16aefd182df0dffbcd648afc59958478e10ea0ea51a3f83e06f13f67e87917b0e48034bc768eb4bbff7fe0fb77981a25950767a2254e6#npm:3.140.0"],\
           ["@types/mime", "npm:2.0.3"],\
           ["@types/node", "npm:10.17.60"],\
           ["typescript", "patch:typescript@npm%3A4.9.5#optional!builtin::version=4.9.5&hash=289587"]\
@@ -115,7 +115,7 @@ const RAW_RUNTIME_STATE =
         "packageLocation": "./",\
         "packageDependencies": [\
           ["@muhlba91/pulumi-proxmoxve", "workspace:."],\
-          ["@pulumi/pulumi", "virtual:e3ea5596057613f291e16aefd182df0dffbcd648afc59958478e10ea0ea51a3f83e06f13f67e87917b0e48034bc768eb4bbff7fe0fb77981a25950767a2254e6#npm:3.138.0"],\
+          ["@pulumi/pulumi", "virtual:e3ea5596057613f291e16aefd182df0dffbcd648afc59958478e10ea0ea51a3f83e06f13f67e87917b0e48034bc768eb4bbff7fe0fb77981a25950767a2254e6#npm:3.140.0"],\
           ["@types/mime", "npm:2.0.3"],\
           ["@types/node", "npm:10.17.60"],\
           ["typescript", "patch:typescript@npm%3A4.9.5#optional!builtin::version=4.9.5&hash=289587"]\
@@ -345,17 +345,17 @@ const RAW_RUNTIME_STATE =
       }]\
     ]],\
     ["@opentelemetry/context-async-hooks", [\
-      ["npm:1.27.0", {\
-        "packageLocation": "../../../../.yarn/berry/cache/@opentelemetry-context-async-hooks-npm-1.27.0-6c78a1d912-10c0.zip/node_modules/@opentelemetry/context-async-hooks/",\
+      ["npm:1.28.0", {\
+        "packageLocation": "../../../../.yarn/berry/cache/@opentelemetry-context-async-hooks-npm-1.28.0-dcf82a01db-10c0.zip/node_modules/@opentelemetry/context-async-hooks/",\
         "packageDependencies": [\
-          ["@opentelemetry/context-async-hooks", "npm:1.27.0"]\
+          ["@opentelemetry/context-async-hooks", "npm:1.28.0"]\
         ],\
         "linkType": "SOFT"\
       }],\
-      ["virtual:e87cb1d4e8dd1804e7e563f837f92b6ece524c009bbaeddf722d0e8b5a0bb9b79a21e4c82f0415eb02746dfadb408e460b742473a9241a65bbaba12beebe363e#npm:1.27.0", {\
-        "packageLocation": "./.yarn/__virtual__/@opentelemetry-context-async-hooks-virtual-ce1fda855a/5/.yarn/berry/cache/@opentelemetry-context-async-hooks-npm-1.27.0-6c78a1d912-10c0.zip/node_modules/@opentelemetry/context-async-hooks/",\
+      ["virtual:ca901c00b76dc0d25acca0dd1a4d1133c23444a1151941818089f7776a93c3e62bf05d6cd1aae94f923ff76e4767d5ec1dcbcf836f66ebf00cc7e3e2a05840ac#npm:1.28.0", {\
+        "packageLocation": "./.yarn/__virtual__/@opentelemetry-context-async-hooks-virtual-7fbbe0a919/5/.yarn/berry/cache/@opentelemetry-context-async-hooks-npm-1.28.0-dcf82a01db-10c0.zip/node_modules/@opentelemetry/context-async-hooks/",\
         "packageDependencies": [\
-          ["@opentelemetry/context-async-hooks", "virtual:e87cb1d4e8dd1804e7e563f837f92b6ece524c009bbaeddf722d0e8b5a0bb9b79a21e4c82f0415eb02746dfadb408e460b742473a9241a65bbaba12beebe363e#npm:1.27.0"],\
+          ["@opentelemetry/context-async-hooks", "virtual:ca901c00b76dc0d25acca0dd1a4d1133c23444a1151941818089f7776a93c3e62bf05d6cd1aae94f923ff76e4767d5ec1dcbcf836f66ebf00cc7e3e2a05840ac#npm:1.28.0"],\
           ["@opentelemetry/api", "npm:1.9.0"],\
           ["@types/opentelemetry__api", null]\
         ],\
@@ -367,17 +367,17 @@ const RAW_RUNTIME_STATE =
       }]\
     ]],\
     ["@opentelemetry/core", [\
-      ["npm:1.27.0", {\
-        "packageLocation": "../../../../.yarn/berry/cache/@opentelemetry-core-npm-1.27.0-60fd5c00d1-10c0.zip/node_modules/@opentelemetry/core/",\
+      ["npm:1.28.0", {\
+        "packageLocation": "../../../../.yarn/berry/cache/@opentelemetry-core-npm-1.28.0-593c4f6113-10c0.zip/node_modules/@opentelemetry/core/",\
         "packageDependencies": [\
-          ["@opentelemetry/core", "npm:1.27.0"]\
+          ["@opentelemetry/core", "npm:1.28.0"]\
         ],\
         "linkType": "SOFT"\
       }],\
-      ["virtual:4631e075e82ef0586e3e0c25836513e112b9a5e767ec475cc0832a49e0f10e2fde2f1f006792beb1950758ca6ee102f82661ab829b412a637107a83d6105c586#npm:1.27.0", {\
-        "packageLocation": "./.yarn/__virtual__/@opentelemetry-core-virtual-c0c62e1ce8/5/.yarn/berry/cache/@opentelemetry-core-npm-1.27.0-60fd5c00d1-10c0.zip/node_modules/@opentelemetry/core/",\
+      ["virtual:4f773213e2ca90eee6c6e9e908193db7004308929ff48e6255797dbac99b1bceecde467517565c697dfa4b01eb1159c5b024a0b2b352b44d6fce4ef71ff0fa80#npm:1.28.0", {\
+        "packageLocation": "./.yarn/__virtual__/@opentelemetry-core-virtual-536aac6209/5/.yarn/berry/cache/@opentelemetry-core-npm-1.28.0-593c4f6113-10c0.zip/node_modules/@opentelemetry/core/",\
         "packageDependencies": [\
-          ["@opentelemetry/core", "virtual:4631e075e82ef0586e3e0c25836513e112b9a5e767ec475cc0832a49e0f10e2fde2f1f006792beb1950758ca6ee102f82661ab829b412a637107a83d6105c586#npm:1.27.0"],\
+          ["@opentelemetry/core", "virtual:4f773213e2ca90eee6c6e9e908193db7004308929ff48e6255797dbac99b1bceecde467517565c697dfa4b01eb1159c5b024a0b2b352b44d6fce4ef71ff0fa80#npm:1.28.0"],\
           ["@opentelemetry/api", "npm:1.9.0"],\
           ["@opentelemetry/semantic-conventions", "npm:1.27.0"],\
           ["@types/opentelemetry__api", null]\
@@ -390,21 +390,21 @@ const RAW_RUNTIME_STATE =
       }]\
     ]],\
     ["@opentelemetry/exporter-zipkin", [\
-      ["npm:1.27.0", {\
-        "packageLocation": "../../../../.yarn/berry/cache/@opentelemetry-exporter-zipkin-npm-1.27.0-81a3c59d38-10c0.zip/node_modules/@opentelemetry/exporter-zipkin/",\
+      ["npm:1.28.0", {\
+        "packageLocation": "../../../../.yarn/berry/cache/@opentelemetry-exporter-zipkin-npm-1.28.0-4fb10f68be-10c0.zip/node_modules/@opentelemetry/exporter-zipkin/",\
         "packageDependencies": [\
-          ["@opentelemetry/exporter-zipkin", "npm:1.27.0"]\
+          ["@opentelemetry/exporter-zipkin", "npm:1.28.0"]\
         ],\
         "linkType": "SOFT"\
       }],\
-      ["virtual:0b84145d896b8c4c08846b8d1c82d4a8342ad882a85ae2c1c5b8fea6d528e1ff58c58445a1bd2240f4ff7b5aa5dc55d0d3a0372f7218268fe278e7d1dcd8d2af#npm:1.27.0", {\
-        "packageLocation": "./.yarn/__virtual__/@opentelemetry-exporter-zipkin-virtual-4631e075e8/5/.yarn/berry/cache/@opentelemetry-exporter-zipkin-npm-1.27.0-81a3c59d38-10c0.zip/node_modules/@opentelemetry/exporter-zipkin/",\
+      ["virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0", {\
+        "packageLocation": "./.yarn/__virtual__/@opentelemetry-exporter-zipkin-virtual-4f773213e2/5/.yarn/berry/cache/@opentelemetry-exporter-zipkin-npm-1.28.0-4fb10f68be-10c0.zip/node_modules/@opentelemetry/exporter-zipkin/",\
         "packageDependencies": [\
-          ["@opentelemetry/exporter-zipkin", "virtual:0b84145d896b8c4c08846b8d1c82d4a8342ad882a85ae2c1c5b8fea6d528e1ff58c58445a1bd2240f4ff7b5aa5dc55d0d3a0372f7218268fe278e7d1dcd8d2af#npm:1.27.0"],\
+          ["@opentelemetry/exporter-zipkin", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0"],\
           ["@opentelemetry/api", "npm:1.9.0"],\
-          ["@opentelemetry/core", "virtual:4631e075e82ef0586e3e0c25836513e112b9a5e767ec475cc0832a49e0f10e2fde2f1f006792beb1950758ca6ee102f82661ab829b412a637107a83d6105c586#npm:1.27.0"],\
-          ["@opentelemetry/resources", "virtual:0b84145d896b8c4c08846b8d1c82d4a8342ad882a85ae2c1c5b8fea6d528e1ff58c58445a1bd2240f4ff7b5aa5dc55d0d3a0372f7218268fe278e7d1dcd8d2af#npm:1.27.0"],\
-          ["@opentelemetry/sdk-trace-base", "virtual:0b84145d896b8c4c08846b8d1c82d4a8342ad882a85ae2c1c5b8fea6d528e1ff58c58445a1bd2240f4ff7b5aa5dc55d0d3a0372f7218268fe278e7d1dcd8d2af#npm:1.27.0"],\
+          ["@opentelemetry/core", "virtual:4f773213e2ca90eee6c6e9e908193db7004308929ff48e6255797dbac99b1bceecde467517565c697dfa4b01eb1159c5b024a0b2b352b44d6fce4ef71ff0fa80#npm:1.28.0"],\
+          ["@opentelemetry/resources", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0"],\
+          ["@opentelemetry/sdk-trace-base", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0"],\
           ["@opentelemetry/semantic-conventions", "npm:1.27.0"],\
           ["@types/opentelemetry__api", null]\
         ],\
@@ -423,10 +423,10 @@ const RAW_RUNTIME_STATE =
         ],\
         "linkType": "SOFT"\
       }],\
-      ["virtual:0b84145d896b8c4c08846b8d1c82d4a8342ad882a85ae2c1c5b8fea6d528e1ff58c58445a1bd2240f4ff7b5aa5dc55d0d3a0372f7218268fe278e7d1dcd8d2af#npm:0.52.1", {\
-        "packageLocation": "./.yarn/__virtual__/@opentelemetry-instrumentation-virtual-88085337a0/5/.yarn/berry/cache/@opentelemetry-instrumentation-npm-0.52.1-8477b6362c-10c0.zip/node_modules/@opentelemetry/instrumentation/",\
+      ["virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:0.52.1", {\
+        "packageLocation": "./.yarn/__virtual__/@opentelemetry-instrumentation-virtual-70cc711748/5/.yarn/berry/cache/@opentelemetry-instrumentation-npm-0.52.1-8477b6362c-10c0.zip/node_modules/@opentelemetry/instrumentation/",\
         "packageDependencies": [\
-          ["@opentelemetry/instrumentation", "virtual:0b84145d896b8c4c08846b8d1c82d4a8342ad882a85ae2c1c5b8fea6d528e1ff58c58445a1bd2240f4ff7b5aa5dc55d0d3a0372f7218268fe278e7d1dcd8d2af#npm:0.52.1"],\
+          ["@opentelemetry/instrumentation", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:0.52.1"],\
           ["@opentelemetry/api", "npm:1.9.0"],\
           ["@opentelemetry/api-logs", "npm:0.52.1"],\
           ["@types/opentelemetry__api", null],\
@@ -451,12 +451,12 @@ const RAW_RUNTIME_STATE =
         ],\
         "linkType": "SOFT"\
       }],\
-      ["virtual:0b84145d896b8c4c08846b8d1c82d4a8342ad882a85ae2c1c5b8fea6d528e1ff58c58445a1bd2240f4ff7b5aa5dc55d0d3a0372f7218268fe278e7d1dcd8d2af#npm:0.52.1", {\
-        "packageLocation": "./.yarn/__virtual__/@opentelemetry-instrumentation-grpc-virtual-6aaaf8e154/5/.yarn/berry/cache/@opentelemetry-instrumentation-grpc-npm-0.52.1-22a7f03e76-10c0.zip/node_modules/@opentelemetry/instrumentation-grpc/",\
+      ["virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:0.52.1", {\
+        "packageLocation": "./.yarn/__virtual__/@opentelemetry-instrumentation-grpc-virtual-d2bd75db66/5/.yarn/berry/cache/@opentelemetry-instrumentation-grpc-npm-0.52.1-22a7f03e76-10c0.zip/node_modules/@opentelemetry/instrumentation-grpc/",\
         "packageDependencies": [\
-          ["@opentelemetry/instrumentation-grpc", "virtual:0b84145d896b8c4c08846b8d1c82d4a8342ad882a85ae2c1c5b8fea6d528e1ff58c58445a1bd2240f4ff7b5aa5dc55d0d3a0372f7218268fe278e7d1dcd8d2af#npm:0.52.1"],\
+          ["@opentelemetry/instrumentation-grpc", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:0.52.1"],\
           ["@opentelemetry/api", "npm:1.9.0"],\
-          ["@opentelemetry/instrumentation", "virtual:0b84145d896b8c4c08846b8d1c82d4a8342ad882a85ae2c1c5b8fea6d528e1ff58c58445a1bd2240f4ff7b5aa5dc55d0d3a0372f7218268fe278e7d1dcd8d2af#npm:0.52.1"],\
+          ["@opentelemetry/instrumentation", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:0.52.1"],\
           ["@opentelemetry/semantic-conventions", "npm:1.25.1"],\
           ["@types/opentelemetry__api", null]\
         ],\
@@ -468,19 +468,19 @@ const RAW_RUNTIME_STATE =
       }]\
     ]],\
     ["@opentelemetry/propagator-b3", [\
-      ["npm:1.27.0", {\
-        "packageLocation": "../../../../.yarn/berry/cache/@opentelemetry-propagator-b3-npm-1.27.0-af37b180a3-10c0.zip/node_modules/@opentelemetry/propagator-b3/",\
+      ["npm:1.28.0", {\
+        "packageLocation": "../../../../.yarn/berry/cache/@opentelemetry-propagator-b3-npm-1.28.0-188d48c20e-10c0.zip/node_modules/@opentelemetry/propagator-b3/",\
         "packageDependencies": [\
-          ["@opentelemetry/propagator-b3", "npm:1.27.0"]\
+          ["@opentelemetry/propagator-b3", "npm:1.28.0"]\
         ],\
         "linkType": "SOFT"\
       }],\
-      ["virtual:e87cb1d4e8dd1804e7e563f837f92b6ece524c009bbaeddf722d0e8b5a0bb9b79a21e4c82f0415eb02746dfadb408e460b742473a9241a65bbaba12beebe363e#npm:1.27.0", {\
-        "packageLocation": "./.yarn/__virtual__/@opentelemetry-propagator-b3-virtual-885d1fb657/5/.yarn/berry/cache/@opentelemetry-propagator-b3-npm-1.27.0-af37b180a3-10c0.zip/node_modules/@opentelemetry/propagator-b3/",\
+      ["virtual:ca901c00b76dc0d25acca0dd1a4d1133c23444a1151941818089f7776a93c3e62bf05d6cd1aae94f923ff76e4767d5ec1dcbcf836f66ebf00cc7e3e2a05840ac#npm:1.28.0", {\
+        "packageLocation": "./.yarn/__virtual__/@opentelemetry-propagator-b3-virtual-76927c669c/5/.yarn/berry/cache/@opentelemetry-propagator-b3-npm-1.28.0-188d48c20e-10c0.zip/node_modules/@opentelemetry/propagator-b3/",\
         "packageDependencies": [\
-          ["@opentelemetry/propagator-b3", "virtual:e87cb1d4e8dd1804e7e563f837f92b6ece524c009bbaeddf722d0e8b5a0bb9b79a21e4c82f0415eb02746dfadb408e460b742473a9241a65bbaba12beebe363e#npm:1.27.0"],\
+          ["@opentelemetry/propagator-b3", "virtual:ca901c00b76dc0d25acca0dd1a4d1133c23444a1151941818089f7776a93c3e62bf05d6cd1aae94f923ff76e4767d5ec1dcbcf836f66ebf00cc7e3e2a05840ac#npm:1.28.0"],\
           ["@opentelemetry/api", "npm:1.9.0"],\
-          ["@opentelemetry/core", "virtual:4631e075e82ef0586e3e0c25836513e112b9a5e767ec475cc0832a49e0f10e2fde2f1f006792beb1950758ca6ee102f82661ab829b412a637107a83d6105c586#npm:1.27.0"],\
+          ["@opentelemetry/core", "virtual:4f773213e2ca90eee6c6e9e908193db7004308929ff48e6255797dbac99b1bceecde467517565c697dfa4b01eb1159c5b024a0b2b352b44d6fce4ef71ff0fa80#npm:1.28.0"],\
           ["@types/opentelemetry__api", null]\
         ],\
         "packagePeers": [\
@@ -491,19 +491,19 @@ const RAW_RUNTIME_STATE =
       }]\
     ]],\
     ["@opentelemetry/propagator-jaeger", [\
-      ["npm:1.27.0", {\
-        "packageLocation": "../../../../.yarn/berry/cache/@opentelemetry-propagator-jaeger-npm-1.27.0-bf9c11792c-10c0.zip/node_modules/@opentelemetry/propagator-jaeger/",\
+      ["npm:1.28.0", {\
+        "packageLocation": "../../../../.yarn/berry/cache/@opentelemetry-propagator-jaeger-npm-1.28.0-26a359a4d6-10c0.zip/node_modules/@opentelemetry/propagator-jaeger/",\
         "packageDependencies": [\
-          ["@opentelemetry/propagator-jaeger", "npm:1.27.0"]\
+          ["@opentelemetry/propagator-jaeger", "npm:1.28.0"]\
         ],\
         "linkType": "SOFT"\
       }],\
-      ["virtual:e87cb1d4e8dd1804e7e563f837f92b6ece524c009bbaeddf722d0e8b5a0bb9b79a21e4c82f0415eb02746dfadb408e460b742473a9241a65bbaba12beebe363e#npm:1.27.0", {\
-        "packageLocation": "./.yarn/__virtual__/@opentelemetry-propagator-jaeger-virtual-a410c7bbc1/5/.yarn/berry/cache/@opentelemetry-propagator-jaeger-npm-1.27.0-bf9c11792c-10c0.zip/node_modules/@opentelemetry/propagator-jaeger/",\
+      ["virtual:ca901c00b76dc0d25acca0dd1a4d1133c23444a1151941818089f7776a93c3e62bf05d6cd1aae94f923ff76e4767d5ec1dcbcf836f66ebf00cc7e3e2a05840ac#npm:1.28.0", {\
+        "packageLocation": "./.yarn/__virtual__/@opentelemetry-propagator-jaeger-virtual-0b88e2a7c2/5/.yarn/berry/cache/@opentelemetry-propagator-jaeger-npm-1.28.0-26a359a4d6-10c0.zip/node_modules/@opentelemetry/propagator-jaeger/",\
         "packageDependencies": [\
-          ["@opentelemetry/propagator-jaeger", "virtual:e87cb1d4e8dd1804e7e563f837f92b6ece524c009bbaeddf722d0e8b5a0bb9b79a21e4c82f0415eb02746dfadb408e460b742473a9241a65bbaba12beebe363e#npm:1.27.0"],\
+          ["@opentelemetry/propagator-jaeger", "virtual:ca901c00b76dc0d25acca0dd1a4d1133c23444a1151941818089f7776a93c3e62bf05d6cd1aae94f923ff76e4767d5ec1dcbcf836f66ebf00cc7e3e2a05840ac#npm:1.28.0"],\
           ["@opentelemetry/api", "npm:1.9.0"],\
-          ["@opentelemetry/core", "virtual:4631e075e82ef0586e3e0c25836513e112b9a5e767ec475cc0832a49e0f10e2fde2f1f006792beb1950758ca6ee102f82661ab829b412a637107a83d6105c586#npm:1.27.0"],\
+          ["@opentelemetry/core", "virtual:4f773213e2ca90eee6c6e9e908193db7004308929ff48e6255797dbac99b1bceecde467517565c697dfa4b01eb1159c5b024a0b2b352b44d6fce4ef71ff0fa80#npm:1.28.0"],\
           ["@types/opentelemetry__api", null]\
         ],\
         "packagePeers": [\
@@ -514,19 +514,19 @@ const RAW_RUNTIME_STATE =
       }]\
     ]],\
     ["@opentelemetry/resources", [\
-      ["npm:1.27.0", {\
-        "packageLocation": "../../../../.yarn/berry/cache/@opentelemetry-resources-npm-1.27.0-e6a2e0982d-10c0.zip/node_modules/@opentelemetry/resources/",\
+      ["npm:1.28.0", {\
+        "packageLocation": "../../../../.yarn/berry/cache/@opentelemetry-resources-npm-1.28.0-e58d33dd8c-10c0.zip/node_modules/@opentelemetry/resources/",\
         "packageDependencies": [\
-          ["@opentelemetry/resources", "npm:1.27.0"]\
+          ["@opentelemetry/resources", "npm:1.28.0"]\
         ],\
         "linkType": "SOFT"\
       }],\
-      ["virtual:0b84145d896b8c4c08846b8d1c82d4a8342ad882a85ae2c1c5b8fea6d528e1ff58c58445a1bd2240f4ff7b5aa5dc55d0d3a0372f7218268fe278e7d1dcd8d2af#npm:1.27.0", {\
-        "packageLocation": "./.yarn/__virtual__/@opentelemetry-resources-virtual-d2cbdd420d/5/.yarn/berry/cache/@opentelemetry-resources-npm-1.27.0-e6a2e0982d-10c0.zip/node_modules/@opentelemetry/resources/",\
+      ["virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0", {\
+        "packageLocation": "./.yarn/__virtual__/@opentelemetry-resources-virtual-2814f67cec/5/.yarn/berry/cache/@opentelemetry-resources-npm-1.28.0-e58d33dd8c-10c0.zip/node_modules/@opentelemetry/resources/",\
         "packageDependencies": [\
-          ["@opentelemetry/resources", "virtual:0b84145d896b8c4c08846b8d1c82d4a8342ad882a85ae2c1c5b8fea6d528e1ff58c58445a1bd2240f4ff7b5aa5dc55d0d3a0372f7218268fe278e7d1dcd8d2af#npm:1.27.0"],\
+          ["@opentelemetry/resources", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0"],\
           ["@opentelemetry/api", "npm:1.9.0"],\
-          ["@opentelemetry/core", "virtual:4631e075e82ef0586e3e0c25836513e112b9a5e767ec475cc0832a49e0f10e2fde2f1f006792beb1950758ca6ee102f82661ab829b412a637107a83d6105c586#npm:1.27.0"],\
+          ["@opentelemetry/core", "virtual:4f773213e2ca90eee6c6e9e908193db7004308929ff48e6255797dbac99b1bceecde467517565c697dfa4b01eb1159c5b024a0b2b352b44d6fce4ef71ff0fa80#npm:1.28.0"],\
           ["@opentelemetry/semantic-conventions", "npm:1.27.0"],\
           ["@types/opentelemetry__api", null]\
         ],\
@@ -538,20 +538,20 @@ const RAW_RUNTIME_STATE =
       }]\
     ]],\
     ["@opentelemetry/sdk-trace-base", [\
-      ["npm:1.27.0", {\
-        "packageLocation": "../../../../.yarn/berry/cache/@opentelemetry-sdk-trace-base-npm-1.27.0-280d0de1dd-10c0.zip/node_modules/@opentelemetry/sdk-trace-base/",\
+      ["npm:1.28.0", {\
+        "packageLocation": "../../../../.yarn/berry/cache/@opentelemetry-sdk-trace-base-npm-1.28.0-c8c368de42-10c0.zip/node_modules/@opentelemetry/sdk-trace-base/",\
         "packageDependencies": [\
-          ["@opentelemetry/sdk-trace-base", "npm:1.27.0"]\
+          ["@opentelemetry/sdk-trace-base", "npm:1.28.0"]\
         ],\
         "linkType": "SOFT"\
       }],\
-      ["virtual:0b84145d896b8c4c08846b8d1c82d4a8342ad882a85ae2c1c5b8fea6d528e1ff58c58445a1bd2240f4ff7b5aa5dc55d0d3a0372f7218268fe278e7d1dcd8d2af#npm:1.27.0", {\
-        "packageLocation": "./.yarn/__virtual__/@opentelemetry-sdk-trace-base-virtual-c65a2df247/5/.yarn/berry/cache/@opentelemetry-sdk-trace-base-npm-1.27.0-280d0de1dd-10c0.zip/node_modules/@opentelemetry/sdk-trace-base/",\
+      ["virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0", {\
+        "packageLocation": "./.yarn/__virtual__/@opentelemetry-sdk-trace-base-virtual-e7255e5453/5/.yarn/berry/cache/@opentelemetry-sdk-trace-base-npm-1.28.0-c8c368de42-10c0.zip/node_modules/@opentelemetry/sdk-trace-base/",\
         "packageDependencies": [\
-          ["@opentelemetry/sdk-trace-base", "virtual:0b84145d896b8c4c08846b8d1c82d4a8342ad882a85ae2c1c5b8fea6d528e1ff58c58445a1bd2240f4ff7b5aa5dc55d0d3a0372f7218268fe278e7d1dcd8d2af#npm:1.27.0"],\
+          ["@opentelemetry/sdk-trace-base", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0"],\
           ["@opentelemetry/api", "npm:1.9.0"],\
-          ["@opentelemetry/core", "virtual:4631e075e82ef0586e3e0c25836513e112b9a5e767ec475cc0832a49e0f10e2fde2f1f006792beb1950758ca6ee102f82661ab829b412a637107a83d6105c586#npm:1.27.0"],\
-          ["@opentelemetry/resources", "virtual:0b84145d896b8c4c08846b8d1c82d4a8342ad882a85ae2c1c5b8fea6d528e1ff58c58445a1bd2240f4ff7b5aa5dc55d0d3a0372f7218268fe278e7d1dcd8d2af#npm:1.27.0"],\
+          ["@opentelemetry/core", "virtual:4f773213e2ca90eee6c6e9e908193db7004308929ff48e6255797dbac99b1bceecde467517565c697dfa4b01eb1159c5b024a0b2b352b44d6fce4ef71ff0fa80#npm:1.28.0"],\
+          ["@opentelemetry/resources", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0"],\
           ["@opentelemetry/semantic-conventions", "npm:1.27.0"],\
           ["@types/opentelemetry__api", null]\
         ],\
@@ -563,23 +563,23 @@ const RAW_RUNTIME_STATE =
       }]\
     ]],\
     ["@opentelemetry/sdk-trace-node", [\
-      ["npm:1.27.0", {\
-        "packageLocation": "../../../../.yarn/berry/cache/@opentelemetry-sdk-trace-node-npm-1.27.0-3ef8d49773-10c0.zip/node_modules/@opentelemetry/sdk-trace-node/",\
+      ["npm:1.28.0", {\
+        "packageLocation": "../../../../.yarn/berry/cache/@opentelemetry-sdk-trace-node-npm-1.28.0-cc3e74e593-10c0.zip/node_modules/@opentelemetry/sdk-trace-node/",\
         "packageDependencies": [\
-          ["@opentelemetry/sdk-trace-node", "npm:1.27.0"]\
+          ["@opentelemetry/sdk-trace-node", "npm:1.28.0"]\
         ],\
         "linkType": "SOFT"\
       }],\
-      ["virtual:0b84145d896b8c4c08846b8d1c82d4a8342ad882a85ae2c1c5b8fea6d528e1ff58c58445a1bd2240f4ff7b5aa5dc55d0d3a0372f7218268fe278e7d1dcd8d2af#npm:1.27.0", {\
-        "packageLocation": "./.yarn/__virtual__/@opentelemetry-sdk-trace-node-virtual-e87cb1d4e8/5/.yarn/berry/cache/@opentelemetry-sdk-trace-node-npm-1.27.0-3ef8d49773-10c0.zip/node_modules/@opentelemetry/sdk-trace-node/",\
+      ["virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0", {\
+        "packageLocation": "./.yarn/__virtual__/@opentelemetry-sdk-trace-node-virtual-ca901c00b7/5/.yarn/berry/cache/@opentelemetry-sdk-trace-node-npm-1.28.0-cc3e74e593-10c0.zip/node_modules/@opentelemetry/sdk-trace-node/",\
         "packageDependencies": [\
-          ["@opentelemetry/sdk-trace-node", "virtual:0b84145d896b8c4c08846b8d1c82d4a8342ad882a85ae2c1c5b8fea6d528e1ff58c58445a1bd2240f4ff7b5aa5dc55d0d3a0372f7218268fe278e7d1dcd8d2af#npm:1.27.0"],\
+          ["@opentelemetry/sdk-trace-node", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0"],\
           ["@opentelemetry/api", "npm:1.9.0"],\
-          ["@opentelemetry/context-async-hooks", "virtual:e87cb1d4e8dd1804e7e563f837f92b6ece524c009bbaeddf722d0e8b5a0bb9b79a21e4c82f0415eb02746dfadb408e460b742473a9241a65bbaba12beebe363e#npm:1.27.0"],\
-          ["@opentelemetry/core", "virtual:4631e075e82ef0586e3e0c25836513e112b9a5e767ec475cc0832a49e0f10e2fde2f1f006792beb1950758ca6ee102f82661ab829b412a637107a83d6105c586#npm:1.27.0"],\
-          ["@opentelemetry/propagator-b3", "virtual:e87cb1d4e8dd1804e7e563f837f92b6ece524c009bbaeddf722d0e8b5a0bb9b79a21e4c82f0415eb02746dfadb408e460b742473a9241a65bbaba12beebe363e#npm:1.27.0"],\
-          ["@opentelemetry/propagator-jaeger", "virtual:e87cb1d4e8dd1804e7e563f837f92b6ece524c009bbaeddf722d0e8b5a0bb9b79a21e4c82f0415eb02746dfadb408e460b742473a9241a65bbaba12beebe363e#npm:1.27.0"],\
-          ["@opentelemetry/sdk-trace-base", "virtual:0b84145d896b8c4c08846b8d1c82d4a8342ad882a85ae2c1c5b8fea6d528e1ff58c58445a1bd2240f4ff7b5aa5dc55d0d3a0372f7218268fe278e7d1dcd8d2af#npm:1.27.0"],\
+          ["@opentelemetry/context-async-hooks", "virtual:ca901c00b76dc0d25acca0dd1a4d1133c23444a1151941818089f7776a93c3e62bf05d6cd1aae94f923ff76e4767d5ec1dcbcf836f66ebf00cc7e3e2a05840ac#npm:1.28.0"],\
+          ["@opentelemetry/core", "virtual:4f773213e2ca90eee6c6e9e908193db7004308929ff48e6255797dbac99b1bceecde467517565c697dfa4b01eb1159c5b024a0b2b352b44d6fce4ef71ff0fa80#npm:1.28.0"],\
+          ["@opentelemetry/propagator-b3", "virtual:ca901c00b76dc0d25acca0dd1a4d1133c23444a1151941818089f7776a93c3e62bf05d6cd1aae94f923ff76e4767d5ec1dcbcf836f66ebf00cc7e3e2a05840ac#npm:1.28.0"],\
+          ["@opentelemetry/propagator-jaeger", "virtual:ca901c00b76dc0d25acca0dd1a4d1133c23444a1151941818089f7776a93c3e62bf05d6cd1aae94f923ff76e4767d5ec1dcbcf836f66ebf00cc7e3e2a05840ac#npm:1.28.0"],\
+          ["@opentelemetry/sdk-trace-base", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0"],\
           ["@types/opentelemetry__api", null],\
           ["semver", "npm:7.6.3"]\
         ],\
@@ -604,6 +604,13 @@ const RAW_RUNTIME_STATE =
           ["@opentelemetry/semantic-conventions", "npm:1.27.0"]\
         ],\
         "linkType": "HARD"\
+      }],\
+      ["npm:1.28.0", {\
+        "packageLocation": "../../../../.yarn/berry/cache/@opentelemetry-semantic-conventions-npm-1.28.0-942b4f4e95-10c0.zip/node_modules/@opentelemetry/semantic-conventions/",\
+        "packageDependencies": [\
+          ["@opentelemetry/semantic-conventions", "npm:1.28.0"]\
+        ],\
+        "linkType": "HARD"\
       }]\
     ]],\
     ["@pkgjs/parseargs", [\
@@ -708,28 +715,28 @@ const RAW_RUNTIME_STATE =
       }]\
     ]],\
     ["@pulumi/pulumi", [\
-      ["npm:3.138.0", {\
-        "packageLocation": "../../../../.yarn/berry/cache/@pulumi-pulumi-npm-3.138.0-19d7358ebe-10c0.zip/node_modules/@pulumi/pulumi/",\
+      ["npm:3.140.0", {\
+        "packageLocation": "../../../../.yarn/berry/cache/@pulumi-pulumi-npm-3.140.0-97b1b59c57-10c0.zip/node_modules/@pulumi/pulumi/",\
         "packageDependencies": [\
-          ["@pulumi/pulumi", "npm:3.138.0"]\
+          ["@pulumi/pulumi", "npm:3.140.0"]\
         ],\
         "linkType": "SOFT"\
       }],\
-      ["virtual:e3ea5596057613f291e16aefd182df0dffbcd648afc59958478e10ea0ea51a3f83e06f13f67e87917b0e48034bc768eb4bbff7fe0fb77981a25950767a2254e6#npm:3.138.0", {\
-        "packageLocation": "./.yarn/__virtual__/@pulumi-pulumi-virtual-0b84145d89/5/.yarn/berry/cache/@pulumi-pulumi-npm-3.138.0-19d7358ebe-10c0.zip/node_modules/@pulumi/pulumi/",\
+      ["virtual:e3ea5596057613f291e16aefd182df0dffbcd648afc59958478e10ea0ea51a3f83e06f13f67e87917b0e48034bc768eb4bbff7fe0fb77981a25950767a2254e6#npm:3.140.0", {\
+        "packageLocation": "./.yarn/__virtual__/@pulumi-pulumi-virtual-82f6736238/5/.yarn/berry/cache/@pulumi-pulumi-npm-3.140.0-97b1b59c57-10c0.zip/node_modules/@pulumi/pulumi/",\
         "packageDependencies": [\
-          ["@pulumi/pulumi", "virtual:e3ea5596057613f291e16aefd182df0dffbcd648afc59958478e10ea0ea51a3f83e06f13f67e87917b0e48034bc768eb4bbff7fe0fb77981a25950767a2254e6#npm:3.138.0"],\
+          ["@pulumi/pulumi", "virtual:e3ea5596057613f291e16aefd182df0dffbcd648afc59958478e10ea0ea51a3f83e06f13f67e87917b0e48034bc768eb4bbff7fe0fb77981a25950767a2254e6#npm:3.140.0"],\
           ["@grpc/grpc-js", "npm:1.12.2"],\
           ["@logdna/tail-file", "npm:2.2.0"],\
           ["@npmcli/arborist", "npm:7.5.4"],\
           ["@opentelemetry/api", "npm:1.9.0"],\
-          ["@opentelemetry/exporter-zipkin", "virtual:0b84145d896b8c4c08846b8d1c82d4a8342ad882a85ae2c1c5b8fea6d528e1ff58c58445a1bd2240f4ff7b5aa5dc55d0d3a0372f7218268fe278e7d1dcd8d2af#npm:1.27.0"],\
-          ["@opentelemetry/instrumentation", "virtual:0b84145d896b8c4c08846b8d1c82d4a8342ad882a85ae2c1c5b8fea6d528e1ff58c58445a1bd2240f4ff7b5aa5dc55d0d3a0372f7218268fe278e7d1dcd8d2af#npm:0.52.1"],\
-          ["@opentelemetry/instrumentation-grpc", "virtual:0b84145d896b8c4c08846b8d1c82d4a8342ad882a85ae2c1c5b8fea6d528e1ff58c58445a1bd2240f4ff7b5aa5dc55d0d3a0372f7218268fe278e7d1dcd8d2af#npm:0.52.1"],\
-          ["@opentelemetry/resources", "virtual:0b84145d896b8c4c08846b8d1c82d4a8342ad882a85ae2c1c5b8fea6d528e1ff58c58445a1bd2240f4ff7b5aa5dc55d0d3a0372f7218268fe278e7d1dcd8d2af#npm:1.27.0"],\
-          ["@opentelemetry/sdk-trace-base", "virtual:0b84145d896b8c4c08846b8d1c82d4a8342ad882a85ae2c1c5b8fea6d528e1ff58c58445a1bd2240f4ff7b5aa5dc55d0d3a0372f7218268fe278e7d1dcd8d2af#npm:1.27.0"],\
-          ["@opentelemetry/sdk-trace-node", "virtual:0b84145d896b8c4c08846b8d1c82d4a8342ad882a85ae2c1c5b8fea6d528e1ff58c58445a1bd2240f4ff7b5aa5dc55d0d3a0372f7218268fe278e7d1dcd8d2af#npm:1.27.0"],\
-          ["@opentelemetry/semantic-conventions", "npm:1.27.0"],\
+          ["@opentelemetry/exporter-zipkin", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0"],\
+          ["@opentelemetry/instrumentation", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:0.52.1"],\
+          ["@opentelemetry/instrumentation-grpc", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:0.52.1"],\
+          ["@opentelemetry/resources", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0"],\
+          ["@opentelemetry/sdk-trace-base", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0"],\
+          ["@opentelemetry/sdk-trace-node", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0"],\
+          ["@opentelemetry/semantic-conventions", "npm:1.28.0"],\
           ["@pulumi/query", "npm:0.3.0"],\
           ["@types/google-protobuf", "npm:3.15.12"],\
           ["@types/semver", "npm:7.5.8"],\
@@ -737,7 +744,7 @@ const RAW_RUNTIME_STATE =
           ["@types/ts-node", null],\
           ["@types/typescript", null],\
           ["execa", "npm:5.1.1"],\
-          ["fdir", "virtual:0b84145d896b8c4c08846b8d1c82d4a8342ad882a85ae2c1c5b8fea6d528e1ff58c58445a1bd2240f4ff7b5aa5dc55d0d3a0372f7218268fe278e7d1dcd8d2af#npm:6.4.2"],\
+          ["fdir", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:6.4.2"],\
           ["google-protobuf", "npm:3.21.4"],\
           ["got", "npm:11.8.6"],\
           ["ini", "npm:2.0.0"],\
@@ -884,7 +891,7 @@ const RAW_RUNTIME_STATE =
           ["@types/cacheable-request", "npm:6.0.3"],\
           ["@types/http-cache-semantics", "npm:4.0.4"],\
           ["@types/keyv", "npm:3.1.4"],\
-          ["@types/node", "npm:22.9.0"],\
+          ["@types/node", "npm:22.9.1"],\
           ["@types/responselike", "npm:1.0.3"]\
         ],\
         "linkType": "HARD"\
@@ -913,7 +920,7 @@ const RAW_RUNTIME_STATE =
         "packageLocation": "../../../../.yarn/berry/cache/@types-keyv-npm-3.1.4-a8082ea56b-10c0.zip/node_modules/@types/keyv/",\
         "packageDependencies": [\
           ["@types/keyv", "npm:3.1.4"],\
-          ["@types/node", "npm:22.9.0"]\
+          ["@types/node", "npm:22.9.1"]\
         ],\
         "linkType": "HARD"\
       }]\
@@ -935,10 +942,10 @@ const RAW_RUNTIME_STATE =
         ],\
         "linkType": "HARD"\
       }],\
-      ["npm:22.9.0", {\
-        "packageLocation": "../../../../.yarn/berry/cache/@types-node-npm-22.9.0-643fcf7450-10c0.zip/node_modules/@types/node/",\
+      ["npm:22.9.1", {\
+        "packageLocation": "../../../../.yarn/berry/cache/@types-node-npm-22.9.1-b841ba9c2c-10c0.zip/node_modules/@types/node/",\
         "packageDependencies": [\
-          ["@types/node", "npm:22.9.0"],\
+          ["@types/node", "npm:22.9.1"],\
           ["undici-types", "npm:6.19.8"]\
         ],\
         "linkType": "HARD"\
@@ -949,7 +956,7 @@ const RAW_RUNTIME_STATE =
         "packageLocation": "../../../../.yarn/berry/cache/@types-responselike-npm-1.0.3-de0150f03d-10c0.zip/node_modules/@types/responselike/",\
         "packageDependencies": [\
           ["@types/responselike", "npm:1.0.3"],\
-          ["@types/node", "npm:22.9.0"]\
+          ["@types/node", "npm:22.9.1"]\
         ],\
         "linkType": "HARD"\
       }]\
@@ -1259,10 +1266,10 @@ const RAW_RUNTIME_STATE =
       }]\
     ]],\
     ["cross-spawn", [\
-      ["npm:7.0.5", {\
-        "packageLocation": "../../../../.yarn/berry/cache/cross-spawn-npm-7.0.5-cf92562a27-10c0.zip/node_modules/cross-spawn/",\
+      ["npm:7.0.6", {\
+        "packageLocation": "../../../../.yarn/berry/cache/cross-spawn-npm-7.0.6-264bddf921-10c0.zip/node_modules/cross-spawn/",\
         "packageDependencies": [\
-          ["cross-spawn", "npm:7.0.5"],\
+          ["cross-spawn", "npm:7.0.6"],\
           ["path-key", "npm:3.1.1"],\
           ["shebang-command", "npm:2.0.0"],\
           ["which", "npm:2.0.2"]\
@@ -1407,7 +1414,7 @@ const RAW_RUNTIME_STATE =
         "packageLocation": "../../../../.yarn/berry/cache/execa-npm-5.1.1-191347acf5-10c0.zip/node_modules/execa/",\
         "packageDependencies": [\
           ["execa", "npm:5.1.1"],\
-          ["cross-spawn", "npm:7.0.5"],\
+          ["cross-spawn", "npm:7.0.6"],\
           ["get-stream", "npm:6.0.1"],\
           ["human-signals", "npm:2.1.0"],\
           ["is-stream", "npm:2.0.1"],\
@@ -1437,10 +1444,10 @@ const RAW_RUNTIME_STATE =
         ],\
         "linkType": "SOFT"\
       }],\
-      ["virtual:0b84145d896b8c4c08846b8d1c82d4a8342ad882a85ae2c1c5b8fea6d528e1ff58c58445a1bd2240f4ff7b5aa5dc55d0d3a0372f7218268fe278e7d1dcd8d2af#npm:6.4.2", {\
-        "packageLocation": "./.yarn/__virtual__/fdir-virtual-56e9a9364d/5/.yarn/berry/cache/fdir-npm-6.4.2-83cd21b34c-10c0.zip/node_modules/fdir/",\
+      ["virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:6.4.2", {\
+        "packageLocation": "./.yarn/__virtual__/fdir-virtual-04b6228803/5/.yarn/berry/cache/fdir-npm-6.4.2-83cd21b34c-10c0.zip/node_modules/fdir/",\
         "packageDependencies": [\
-          ["fdir", "virtual:0b84145d896b8c4c08846b8d1c82d4a8342ad882a85ae2c1c5b8fea6d528e1ff58c58445a1bd2240f4ff7b5aa5dc55d0d3a0372f7218268fe278e7d1dcd8d2af#npm:6.4.2"],\
+          ["fdir", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:6.4.2"],\
           ["@types/picomatch", null],\
           ["picomatch", "npm:3.0.1"]\
         ],\
@@ -1467,7 +1474,7 @@ const RAW_RUNTIME_STATE =
         "packageLocation": "../../../../.yarn/berry/cache/foreground-child-npm-3.3.0-b8be745271-10c0.zip/node_modules/foreground-child/",\
         "packageDependencies": [\
           ["foreground-child", "npm:3.3.0"],\
-          ["cross-spawn", "npm:7.0.5"],\
+          ["cross-spawn", "npm:7.0.6"],\
           ["signal-exit", "npm:4.1.0"]\
         ],\
         "linkType": "HARD"\
@@ -2520,7 +2527,7 @@ const RAW_RUNTIME_STATE =
           ["@protobufjs/path", "npm:1.1.2"],\
           ["@protobufjs/pool", "npm:1.1.0"],\
           ["@protobufjs/utf8", "npm:1.1.0"],\
-          ["@types/node", "npm:22.9.0"],\
+          ["@types/node", "npm:22.9.1"],\
           ["long", "npm:5.2.3"]\
         ],\
         "linkType": "HARD"\
diff --git a/sdk/nodejs/.yarn/install-state.gz b/sdk/nodejs/.yarn/install-state.gz
index 7240dce6249e4cfca623e55837a344231281215c..752dd6df2c2a82c237c856ec2771dac62b89c020 100644
GIT binary patch
literal 227109
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/@3(LJT?`=@K6X6g9L47}t4(n~w@kON0
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

B1U{EX;u0#HM$SOg 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ξ&SN=vQIgpWcA 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

    0R(nBd=gnMWDmPi9egi2G%PzL5XX>)HXx`n+ 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 z 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%0D;#d7jI6h6dusg~5vXoGFuNB(Fz@yQLp-_gW$ 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
    >^sH#(${|UafSoo&Sr4 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

    8*OnuCX;u)r)j` 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 M1CA-H&{9AO0E8adkpKVy diff --git a/sdk/nodejs/cluster/options.ts b/sdk/nodejs/cluster/options.ts index 36341010..392b0471 100644 --- a/sdk/nodejs/cluster/options.ts +++ b/sdk/nodejs/cluster/options.ts @@ -116,7 +116,7 @@ export class Options extends pulumi.CustomResource { */ public readonly migrationCidr!: pulumi.Output; /** - * Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`). + * Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`). */ public readonly migrationType!: pulumi.Output; /** @@ -262,7 +262,7 @@ export interface OptionsState { */ migrationCidr?: pulumi.Input; /** - * Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`). + * Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`). */ migrationType?: pulumi.Input; /** @@ -348,7 +348,7 @@ export interface OptionsArgs { */ migrationCidr?: pulumi.Input; /** - * Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`). + * Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`). */ migrationType?: pulumi.Input; /** diff --git a/sdk/nodejs/storage/file.ts b/sdk/nodejs/storage/file.ts index 40b8c866..4cdfaca5 100644 --- a/sdk/nodejs/storage/file.ts +++ b/sdk/nodejs/storage/file.ts @@ -7,7 +7,7 @@ import * as outputs from "../types/output"; import * as utilities from "../utilities"; /** - * Manages a file. + * Use this resource to upload files to a Proxmox VE node. The file can be a backup, an ISO image, a snippet, or a container template depending on the `contentType` attribute. * * ## Example Usage * @@ -15,6 +15,8 @@ import * as utilities from "../utilities"; * * > The resource with this content type uses SSH access to the node. You might need to configure the `ssh` option in the `provider` section. * + * > The provider currently does not support restoring backups. You can use the Proxmox VE web interface or the `qmrestore` / `pct restore` command to restore VM / Container from a backup. + * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as proxmoxve from "@muhlba91/pulumi-proxmoxve"; diff --git a/sdk/python/pulumi_proxmoxve/cluster/options.py b/sdk/python/pulumi_proxmoxve/cluster/options.py index 9ed924b8..e51dae9f 100644 --- a/sdk/python/pulumi_proxmoxve/cluster/options.py +++ b/sdk/python/pulumi_proxmoxve/cluster/options.py @@ -60,7 +60,7 @@ def __init__(__self__, *, :param pulumi.Input[str] mac_prefix: Prefix for autogenerated MAC addresses. :param pulumi.Input[int] max_workers: Defines how many workers (per node) are maximal started on actions like 'stopall VMs' or task from the ha-manager. :param pulumi.Input[str] migration_cidr: Cluster wide migration network CIDR. - :param pulumi.Input[str] migration_type: Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`). + :param pulumi.Input[str] migration_type: Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`). :param pulumi.Input['OptionsNextIdArgs'] next_id: The ranges for the next free VM ID auto-selection pool. :param pulumi.Input['OptionsNotifyArgs'] notify: Cluster-wide notification settings. """ @@ -313,7 +313,7 @@ def migration_cidr(self, value: Optional[pulumi.Input[str]]): @pulumi.getter(name="migrationType") def migration_type(self) -> Optional[pulumi.Input[str]]: """ - Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`). + Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`). """ return pulumi.get(self, "migration_type") @@ -388,7 +388,7 @@ def __init__(__self__, *, :param pulumi.Input[str] mac_prefix: Prefix for autogenerated MAC addresses. :param pulumi.Input[int] max_workers: Defines how many workers (per node) are maximal started on actions like 'stopall VMs' or task from the ha-manager. :param pulumi.Input[str] migration_cidr: Cluster wide migration network CIDR. - :param pulumi.Input[str] migration_type: Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`). + :param pulumi.Input[str] migration_type: Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`). :param pulumi.Input['OptionsNextIdArgs'] next_id: The ranges for the next free VM ID auto-selection pool. :param pulumi.Input['OptionsNotifyArgs'] notify: Cluster-wide notification settings. """ @@ -641,7 +641,7 @@ def migration_cidr(self, value: Optional[pulumi.Input[str]]): @pulumi.getter(name="migrationType") def migration_type(self) -> Optional[pulumi.Input[str]]: """ - Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`). + Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`). """ return pulumi.get(self, "migration_type") @@ -732,7 +732,7 @@ def __init__(__self__, :param pulumi.Input[str] mac_prefix: Prefix for autogenerated MAC addresses. :param pulumi.Input[int] max_workers: Defines how many workers (per node) are maximal started on actions like 'stopall VMs' or task from the ha-manager. :param pulumi.Input[str] migration_cidr: Cluster wide migration network CIDR. - :param pulumi.Input[str] migration_type: Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`). + :param pulumi.Input[str] migration_type: Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`). :param pulumi.Input[Union['OptionsNextIdArgs', 'OptionsNextIdArgsDict']] next_id: The ranges for the next free VM ID auto-selection pool. :param pulumi.Input[Union['OptionsNotifyArgs', 'OptionsNotifyArgsDict']] notify: Cluster-wide notification settings. """ @@ -873,7 +873,7 @@ def get(resource_name: str, :param pulumi.Input[str] mac_prefix: Prefix for autogenerated MAC addresses. :param pulumi.Input[int] max_workers: Defines how many workers (per node) are maximal started on actions like 'stopall VMs' or task from the ha-manager. :param pulumi.Input[str] migration_cidr: Cluster wide migration network CIDR. - :param pulumi.Input[str] migration_type: Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`). + :param pulumi.Input[str] migration_type: Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`). :param pulumi.Input[Union['OptionsNextIdArgs', 'OptionsNextIdArgsDict']] next_id: The ranges for the next free VM ID auto-selection pool. :param pulumi.Input[Union['OptionsNotifyArgs', 'OptionsNotifyArgsDict']] notify: Cluster-wide notification settings. """ @@ -1043,7 +1043,7 @@ def migration_cidr(self) -> pulumi.Output[Optional[str]]: @pulumi.getter(name="migrationType") def migration_type(self) -> pulumi.Output[Optional[str]]: """ - Cluster wide migration type. Must be `secure` | `unsecure` (default is `secure`). + Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`). """ return pulumi.get(self, "migration_type") diff --git a/sdk/python/pulumi_proxmoxve/storage/file.py b/sdk/python/pulumi_proxmoxve/storage/file.py index 5d65b20e..80150f0c 100644 --- a/sdk/python/pulumi_proxmoxve/storage/file.py +++ b/sdk/python/pulumi_proxmoxve/storage/file.py @@ -387,7 +387,7 @@ def __init__(__self__, timeout_upload: Optional[pulumi.Input[int]] = None, __props__=None): """ - Manages a file. + Use this resource to upload files to a Proxmox VE node. The file can be a backup, an ISO image, a snippet, or a container template depending on the `content_type` attribute. ## Example Usage @@ -395,6 +395,8 @@ def __init__(__self__, > The resource with this content type uses SSH access to the node. You might need to configure the `ssh` option in the `provider` section. + > The provider currently does not support restoring backups. You can use the Proxmox VE web interface or the `qmrestore` / `pct restore` command to restore VM / Container from a backup. + ```python import pulumi import pulumi_proxmoxve as proxmoxve @@ -498,7 +500,7 @@ def __init__(__self__, args: FileArgs, opts: Optional[pulumi.ResourceOptions] = None): """ - Manages a file. + Use this resource to upload files to a Proxmox VE node. The file can be a backup, an ISO image, a snippet, or a container template depending on the `content_type` attribute. ## Example Usage @@ -506,6 +508,8 @@ def __init__(__self__, > The resource with this content type uses SSH access to the node. You might need to configure the `ssh` option in the `provider` section. + > The provider currently does not support restoring backups. You can use the Proxmox VE web interface or the `qmrestore` / `pct restore` command to restore VM / Container from a backup. + ```python import pulumi import pulumi_proxmoxve as proxmoxve