diff --git a/examples/go.mod b/examples/go.mod index bc68432..8462c85 100644 --- a/examples/go.mod +++ b/examples/go.mod @@ -1,3 +1,3 @@ -module github.com/belfhi/pulumi-xenorchestra/examples +module github.com//pulumi-xenorchestra/examples go 1.21 diff --git a/provider/cmd/pulumi-resource-xenorchestra/Pulumi.yaml b/provider/cmd/pulumi-resource-xenorchestra/Pulumi.yaml new file mode 100644 index 0000000..e69de29 diff --git a/provider/cmd/pulumi-resource-xenorchestra/bridge-metadata.json b/provider/cmd/pulumi-resource-xenorchestra/bridge-metadata.json index f882fbd..7c13efe 100644 --- a/provider/cmd/pulumi-resource-xenorchestra/bridge-metadata.json +++ b/provider/cmd/pulumi-resource-xenorchestra/bridge-metadata.json @@ -5,7 +5,14 @@ "current": "xenorchestra:index/acl:Acl" }, "xenorchestra_bonded_network": { - "current": "xenorchestra:index/bondedNetwork:BondedNetwork", + "current": "xenorchestra:index/xoaBondedNetwork:XoaBondedNetwork", + "past": [ + { + "name": "xenorchestra:index/bondedNetwork:BondedNetwork", + "inCodegen": true, + "majorVersion": 0 + } + ], "fields": { "pif_ids": { "maxItemsOne": false @@ -16,7 +23,14 @@ "current": "xenorchestra:index/cloudConfig:CloudConfig" }, "xenorchestra_network": { - "current": "xenorchestra:index/network:Network" + "current": "xenorchestra:index/xoaNetwork:XoaNetwork", + "past": [ + { + "name": "xenorchestra:index/network:Network", + "inCodegen": true, + "majorVersion": 0 + } + ] }, "xenorchestra_resource_set": { "current": "xenorchestra:index/resourceSet:ResourceSet", @@ -74,10 +88,24 @@ }, "datasources": { "xenorchestra_cloud_config": { - "current": "xenorchestra:index/getCloudConfig:getCloudConfig" + "current": "xenorchestra:index/getXoaCloudConfig:getXoaCloudConfig", + "past": [ + { + "name": "xenorchestra:index/getCloudConfig:getCloudConfig", + "inCodegen": true, + "majorVersion": 0 + } + ] }, "xenorchestra_host": { - "current": "xenorchestra:index/getHost:getHost", + "current": "xenorchestra:index/getXoaHost:getXoaHost", + "past": [ + { + "name": "xenorchestra:index/getHost:getHost", + "inCodegen": true, + "majorVersion": 0 + } + ], "fields": { "tags": { "maxItemsOne": false @@ -85,7 +113,14 @@ } }, "xenorchestra_hosts": { - "current": "xenorchestra:index/getHosts:getHosts", + "current": "xenorchestra:index/getXoaHosts:getXoaHosts", + "past": [ + { + "name": "xenorchestra:index/getHosts:getHosts", + "inCodegen": true, + "majorVersion": 0 + } + ], "fields": { "hosts": { "maxItemsOne": false, @@ -103,19 +138,54 @@ } }, "xenorchestra_network": { - "current": "xenorchestra:index/getNetwork:getNetwork" + "current": "xenorchestra:index/getXoaNetwork:getXoaNetwork", + "past": [ + { + "name": "xenorchestra:index/getNetwork:getNetwork", + "inCodegen": true, + "majorVersion": 0 + } + ] }, "xenorchestra_pif": { - "current": "xenorchestra:index/getPif:getPif" + "current": "xenorchestra:index/getXoaPif:getXoaPif", + "past": [ + { + "name": "xenorchestra:index/getPif:getPif", + "inCodegen": true, + "majorVersion": 0 + } + ] }, "xenorchestra_pool": { - "current": "xenorchestra:index/getPool:getPool" + "current": "xenorchestra:index/getXoaPool:getXoaPool", + "past": [ + { + "name": "xenorchestra:index/getPool:getPool", + "inCodegen": true, + "majorVersion": 0 + } + ] }, "xenorchestra_resource_set": { - "current": "xenorchestra:index/getResourceSet:getResourceSet" + "current": "xenorchestra:index/getXoaResourceSet:getXoaResourceSet", + "past": [ + { + "name": "xenorchestra:index/getResourceSet:getResourceSet", + "inCodegen": true, + "majorVersion": 0 + } + ] }, "xenorchestra_sr": { - "current": "xenorchestra:index/getSr:getSr", + "current": "xenorchestra:index/getXoaStorageRepository:getXoaStorageRepository", + "past": [ + { + "name": "xenorchestra:index/getSr:getSr", + "inCodegen": true, + "majorVersion": 0 + } + ], "fields": { "tags": { "maxItemsOne": false @@ -123,13 +193,34 @@ } }, "xenorchestra_template": { - "current": "xenorchestra:index/getTemplate:getTemplate" + "current": "xenorchestra:index/getXoaTemplate:getXoaTemplate", + "past": [ + { + "name": "xenorchestra:index/getTemplate:getTemplate", + "inCodegen": true, + "majorVersion": 0 + } + ] }, "xenorchestra_user": { - "current": "xenorchestra:index/getUser:getUser" + "current": "xenorchestra:index/getXoaUser:getXoaUser", + "past": [ + { + "name": "xenorchestra:index/getUser:getUser", + "inCodegen": true, + "majorVersion": 0 + } + ] }, "xenorchestra_vdi": { - "current": "xenorchestra:index/getVdi:getVdi", + "current": "xenorchestra:index/getXoaVdi:getXoaVdi", + "past": [ + { + "name": "xenorchestra:index/getVdi:getVdi", + "inCodegen": true, + "majorVersion": 0 + } + ], "fields": { "tags": { "maxItemsOne": false @@ -137,7 +228,14 @@ } }, "xenorchestra_vms": { - "current": "xenorchestra:index/getVms:getVms", + "current": "xenorchestra:index/getXoaVms:getXoaVms", + "past": [ + { + "name": "xenorchestra:index/getVms:getVms", + "inCodegen": true, + "majorVersion": 0 + } + ], "fields": { "vms": { "maxItemsOne": false, @@ -178,7 +276,82 @@ } } }, - "auto-settings": {}, + "auto-settings": { + "resources": { + "xenorchestra_bonded_network": { + "aliases": [ + "xenorchestra:index/bondedNetwork:BondedNetwork" + ] + }, + "xenorchestra_network": { + "aliases": [ + "xenorchestra:index/network:Network" + ] + } + }, + "datasources": { + "xenorchestra_cloud_config": { + "renames": [ + "xenorchestra:index/getCloudConfig:getCloudConfig" + ] + }, + "xenorchestra_host": { + "renames": [ + "xenorchestra:index/getHost:getHost" + ] + }, + "xenorchestra_hosts": { + "renames": [ + "xenorchestra:index/getHosts:getHosts" + ] + }, + "xenorchestra_network": { + "renames": [ + "xenorchestra:index/getNetwork:getNetwork" + ] + }, + "xenorchestra_pif": { + "renames": [ + "xenorchestra:index/getPif:getPif" + ] + }, + "xenorchestra_pool": { + "renames": [ + "xenorchestra:index/getPool:getPool" + ] + }, + "xenorchestra_resource_set": { + "renames": [ + "xenorchestra:index/getResourceSet:getResourceSet" + ] + }, + "xenorchestra_sr": { + "renames": [ + "xenorchestra:index/getSr:getSr" + ] + }, + "xenorchestra_template": { + "renames": [ + "xenorchestra:index/getTemplate:getTemplate" + ] + }, + "xenorchestra_user": { + "renames": [ + "xenorchestra:index/getUser:getUser" + ] + }, + "xenorchestra_vdi": { + "renames": [ + "xenorchestra:index/getVdi:getVdi" + ] + }, + "xenorchestra_vms": { + "renames": [ + "xenorchestra:index/getVms:getVms" + ] + } + } + }, "renames": { "resources": { "xenorchestra:index/acl:Acl": "xenorchestra_acl", diff --git a/provider/cmd/pulumi-resource-xenorchestra/main.go b/provider/cmd/pulumi-resource-xenorchestra/main.go index 019694e..073e7f5 100644 --- a/provider/cmd/pulumi-resource-xenorchestra/main.go +++ b/provider/cmd/pulumi-resource-xenorchestra/main.go @@ -19,9 +19,9 @@ package main import ( _ "embed" + "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge" xenorchestra "github.com/vatesfr/pulumi-xenorchestra/provider" "github.com/vatesfr/pulumi-xenorchestra/provider/pkg/version" - "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge" ) //go:embed schema-embed.json diff --git a/provider/cmd/pulumi-resource-xenorchestra/schema.json b/provider/cmd/pulumi-resource-xenorchestra/schema.json new file mode 100644 index 0000000..5b7a83e --- /dev/null +++ b/provider/cmd/pulumi-resource-xenorchestra/schema.json @@ -0,0 +1,3462 @@ +{ + "name": "xenorchestra", + "description": "A Pulumi package for creating and managing Xen Orchestra cloud resources.", + "keywords": [ + "pulumi", + "xenorchestra", + "category/cloud" + ], + "homepage": "https://www.pulumi.com", + "license": "Apache-2.0", + "attribution": "This Pulumi package is based on the [`xenorchestra` Terraform Provider](https://github.com/vatesfr/terraform-provider-xenorchestra).", + "repository": "https://github.com/vatesfr/pulumi-xenorchestra", + "pluginDownloadURL": "https://github.com/vatesfr/pulumi-xenorchestra/releases/", + "publisher": "Vates", + "meta": { + "moduleFormat": "(.*)(?:/[^/]*)" + }, + "language": { + "csharp": { + "packageReferences": { + "Pulumi": "3.*" + }, + "compatibility": "tfbridge20" + }, + "go": { + "importBasePath": "github.com/vatesfr/pulumi-xenorchestra/sdk/go/xenorchestra", + "generateResourceContainerTypes": true, + "generateExtraInputTypes": true + }, + "nodejs": { + "packageDescription": "A Pulumi package for creating and managing Xen Orchestra cloud resources.", + "readme": "\u003e This provider is a derived work of the [Terraform Provider](https://github.com/vatesfr/terraform-provider-xenorchestra)\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-xenorchestra` repo](https://github.com/vatesfr/pulumi-xenorchestra/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-xenorchestra` repo](https://github.com/vatesfr/terraform-provider-xenorchestra/issues).", + "dependencies": { + "@pulumi/pulumi": "^3.0.0" + }, + "devDependencies": { + "@types/mime": "^2.0.0", + "@types/node": "^10.0.0" + }, + "compatibility": "tfbridge20", + "disableUnionOutputTypes": true + }, + "python": { + "requires": { + "pulumi": "\u003e=3.0.0,\u003c4.0.0" + }, + "readme": "\u003e This provider is a derived work of the [Terraform Provider](https://github.com/vatesfr/terraform-provider-xenorchestra)\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-xenorchestra` repo](https://github.com/vatesfr/pulumi-xenorchestra/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-xenorchestra` repo](https://github.com/vatesfr/terraform-provider-xenorchestra/issues).", + "compatibility": "tfbridge20", + "pyproject": {} + } + }, + "config": { + "variables": { + "insecure": { + "type": "boolean", + "description": "Whether SSL should be verified or not. Can be set via the XOA_INSECURE environment variable.\n" + }, + "password": { + "type": "string", + "description": "Password for xoa api. Can be set via the XOA_PASSWORD environment variable.\n" + }, + "retryMaxTime": { + "type": "string", + "description": "If `retry_mode` is set, this specifies the duration for which the backoff method will continue retries. Can be set via\nthe `XOA_RETRY_MAX_TIME` environment variable\n" + }, + "retryMode": { + "type": "string", + "description": "Specifies if retries should be attempted for requests that require eventual . Can be set via the XOA_RETRY_MODE\nenvironment variable.\n" + }, + "token": { + "type": "string", + "description": "Password for xoa api. Can be set via the XOA_TOKEN environment variable.\n" + }, + "url": { + "type": "string", + "description": "Hostname of the xoa router. Can be set via the XOA_URL environment variable.\n" + }, + "username": { + "type": "string", + "description": "User account for xoa api. Can be set via the XOA_USER environment variable.\n" + } + }, + "defaults": [ + "url" + ] + }, + "types": { + "xenorchestra:index/ResourceSetLimit:ResourceSetLimit": { + "properties": { + "quantity": { + "type": "integer", + "description": "The numerical limit for the given type.\n" + }, + "type": { + "type": "string", + "description": "The type of resource set limit. Must be cpus, memory or disk.\n" + } + }, + "type": "object", + "required": [ + "quantity", + "type" + ] + }, + "xenorchestra:index/VmCdrom:VmCdrom": { + "properties": { + "id": { + "type": "string", + "description": "The ID of the ISO (VDI) to attach to the VM. This can be easily provided by using the `vdi` data source.\n" + } + }, + "type": "object", + "required": [ + "id" + ] + }, + "xenorchestra:index/VmDisk:VmDisk": { + "properties": { + "attached": { + "type": "boolean", + "description": "Whether the device should be attached to the VM.\n" + }, + "nameDescription": { + "type": "string", + "description": "The description for the disk\n" + }, + "nameLabel": { + "type": "string", + "description": "The name for the disk\n" + }, + "position": { + "type": "string", + "description": "Indicates the order of the block device.\n" + }, + "size": { + "type": "integer", + "description": "The size in bytes for the disk.\n" + }, + "srId": { + "type": "string", + "description": "The storage repository ID to use.\n" + }, + "vbdId": { + "type": "string" + }, + "vdiId": { + "type": "string" + } + }, + "type": "object", + "required": [ + "nameLabel", + "size", + "srId" + ], + "language": { + "nodejs": { + "requiredOutputs": [ + "nameLabel", + "position", + "size", + "srId", + "vbdId", + "vdiId" + ] + } + } + }, + "xenorchestra:index/VmNetwork:VmNetwork": { + "properties": { + "attached": { + "type": "boolean", + "description": "Whether the device should be attached to the VM.\n" + }, + "device": { + "type": "string" + }, + "expectedIpCidr": { + "type": "string" + }, + "ipv4Addresses": { + "type": "array", + "items": { + "type": "string" + } + }, + "ipv6Addresses": { + "type": "array", + "items": { + "type": "string" + } + }, + "macAddress": { + "type": "string" + }, + "networkId": { + "type": "string", + "description": "The ID of the network the VM will be on.\n" + } + }, + "type": "object", + "required": [ + "networkId" + ], + "language": { + "nodejs": { + "requiredOutputs": [ + "device", + "ipv4Addresses", + "ipv6Addresses", + "macAddress", + "networkId" + ] + } + } + }, + "xenorchestra:index/getHostsHost:getHostsHost": { + "properties": { + "cpus": { + "type": "object", + "additionalProperties": { + "type": "integer" + }, + "description": "CPU information about the host. The 'cores' key will contain the number of cpu cores and the 'sockets' key will contain the number of sockets.\n" + }, + "id": { + "type": "string" + }, + "memory": { + "type": "integer", + "description": "The memory size of the host.\n" + }, + "memoryUsage": { + "type": "integer", + "description": "The memory usage of the host.\n" + }, + "nameLabel": { + "type": "string", + "description": "The name label of the host.\n" + }, + "poolId": { + "type": "string", + "description": "Id of the pool that the host belongs to.\n" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The tags (labels) applied to the given entity.\n" + } + }, + "type": "object", + "required": [ + "cpus", + "id", + "memory", + "memoryUsage", + "nameLabel", + "poolId" + ], + "language": { + "nodejs": { + "requiredInputs": [] + } + } + }, + "xenorchestra:index/getVmsVm:getVmsVm": { + "properties": { + "affinityHost": { + "type": "string", + "description": "The preferred host you would like the VM to run on. If changed on an existing VM it will require a reboot for the VM to be rescheduled.\n" + }, + "autoPoweron": { + "type": "boolean", + "description": "If the VM will automatically turn on. Defaults to `false`.\n" + }, + "blockedOperations": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of operations on a VM that are not permitted. Examples include: clean_reboot, clean_shutdown, hard_reboot, hard_shutdown, pause, shutdown, suspend, destroy. This can be used to prevent a VM from being destroyed. The entire list can be found here\n" + }, + "cloneType": { + "type": "string", + "description": "The type of clone to perform for the VM. Possible values include `fast` or `full` and defaults to `fast`. In order to perform a `full` clone, the VM template must not be a disk template.\n" + }, + "cloudConfig": { + "type": "string", + "description": "The content of the cloud-init config to use. See the cloud init docs for more [information](https://cloudinit.readthedocs.io/en/latest/topics/examples.html).\n" + }, + "cloudNetworkConfig": { + "type": "string", + "description": "The content of the cloud-init network configuration for the VM (uses [version 1](https://cloudinit.readthedocs.io/en/latest/topics/network-config-format-v1.html))\n" + }, + "coreOs": { + "type": "boolean" + }, + "cpuCap": { + "type": "integer" + }, + "cpuWeight": { + "type": "integer" + }, + "cpus": { + "type": "integer", + "description": "The number of CPUs the VM will have. Updates to this field will cause a stop and start of the VM if the new CPU value is greater than the max CPU value. This can be determined with the following command:\n```\n\n$ xo-cli xo.getAllObjects filter='json:{\"id\": \"cf7b5d7d-3cd5-6b7c-5025-5c935c8cd0b8\"}' | jq '.[].CPUs'\n{\n \"max\": 4,\n \"number\": 2\n}\n\n# Updating the VM to use 3 CPUs would happen without stopping/starting the VM\n# Updating the VM to use 5 CPUs would stop/start the VM\n```\n" + }, + "disks": { + "type": "array", + "items": { + "$ref": "#/types/xenorchestra:index/getVmsVmDisk:getVmsVmDisk" + }, + "description": "The disk the VM will have access to.\n" + }, + "expNestedHvm": { + "type": "boolean", + "description": "Boolean parameter that allows a VM to use nested virtualization.\n" + }, + "highAvailability": { + "type": "string", + "description": "The restart priority for the VM. Possible values are `best-effort`, `restart` and empty string (no restarts on failure. Defaults to empty string\n" + }, + "host": { + "type": "string" + }, + "hvmBootFirmware": { + "type": "string", + "description": "The firmware to use for the VM. Possible values are `bios` and `uefi`.\n" + }, + "id": { + "type": "string" + }, + "ipv4Addresses": { + "type": "array", + "items": { + "type": "string" + } + }, + "ipv6Addresses": { + "type": "array", + "items": { + "type": "string" + }, + "description": "This is only accessible if guest-tools is installed in the VM and if `expected_ip_cidr` is set on any network interfaces. This will contain a list of the ipv6 addresses across all network interfaces in order.\n" + }, + "memoryMax": { + "type": "integer", + "description": "The amount of memory in bytes the VM will have. Updates to this field will case a stop and start of the VM if the new value is greater than the dynamic memory max. This can be determined with the following command:\n```\n\n\n$ xo-cli xo.getAllObjects filter='json:{\"id\": \"cf7b5d7d-3cd5-6b7c-5025-5c935c8cd0b8\"}' | jq '.[].memory.dynamic'\n[\n 2147483648, # memory dynamic min\n 4294967296 # memory dynamic max (4GB)\n]\n# Updating the VM to use 3GB of memory would happen without stopping/starting the VM\n# Updating the VM to use 5GB of memory would stop/start the VM\n```\n" + }, + "nameDescription": { + "type": "string", + "description": "The description of the VM.\n" + }, + "nameLabel": { + "type": "string", + "description": "The name of the VM.\n" + }, + "networks": { + "type": "array", + "items": { + "$ref": "#/types/xenorchestra:index/getVmsVmNetwork:getVmsVmNetwork" + }, + "description": "The network for the VM.\n" + }, + "powerState": { + "type": "string", + "description": "The power state of the VM. This can be Running, Halted, Paused or Suspended.\n" + }, + "resourceSet": { + "type": "string" + }, + "startDelay": { + "type": "integer", + "description": "Number of seconds the VM should be delayed from starting.\n" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The tags (labels) applied to the given entity.\n" + }, + "template": { + "type": "string", + "description": "The ID of the VM template to create the new VM from.\n" + }, + "vga": { + "type": "string", + "description": "The video adapter the VM should use. Possible values include std and cirrus.\n" + }, + "videoram": { + "type": "integer", + "description": "The videoram option the VM should use. Possible values include 1, 2, 4, 8, 16\n" + }, + "xenstore": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "The key value pairs to be populated in xenstore.\n" + } + }, + "type": "object", + "required": [ + "cpus", + "disks", + "id", + "ipv4Addresses", + "ipv6Addresses", + "memoryMax", + "nameLabel", + "networks", + "template" + ], + "language": { + "nodejs": { + "requiredInputs": [] + } + } + }, + "xenorchestra:index/getVmsVmDisk:getVmsVmDisk": { + "properties": { + "attached": { + "type": "boolean", + "description": "Whether the device should be attached to the VM.\n" + }, + "nameDescription": { + "type": "string", + "description": "The description for the disk\n" + }, + "nameLabel": { + "type": "string", + "description": "The name for the disk\n" + }, + "position": { + "type": "string", + "description": "Indicates the order of the block device.\n" + }, + "size": { + "type": "integer", + "description": "The size in bytes for the disk.\n" + }, + "srId": { + "type": "string", + "description": "The storage repository ID to use.\n" + }, + "vbdId": { + "type": "string" + }, + "vdiId": { + "type": "string" + } + }, + "type": "object", + "required": [ + "nameLabel", + "position", + "size", + "srId", + "vbdId", + "vdiId" + ], + "language": { + "nodejs": { + "requiredInputs": [] + } + } + }, + "xenorchestra:index/getVmsVmNetwork:getVmsVmNetwork": { + "properties": { + "attached": { + "type": "boolean", + "description": "Whether the device should be attached to the VM.\n" + }, + "device": { + "type": "string" + }, + "expectedIpCidr": { + "type": "string" + }, + "ipv4Addresses": { + "type": "array", + "items": { + "type": "string" + } + }, + "ipv6Addresses": { + "type": "array", + "items": { + "type": "string" + } + }, + "macAddress": { + "type": "string" + }, + "networkId": { + "type": "string", + "description": "The ID of the network the VM will be on.\n" + } + }, + "type": "object", + "required": [ + "device", + "ipv4Addresses", + "ipv6Addresses", + "macAddress", + "networkId" + ], + "language": { + "nodejs": { + "requiredInputs": [] + } + } + }, + "xenorchestra:index/getXoaHostsHost:getXoaHostsHost": { + "properties": { + "cpus": { + "type": "object", + "additionalProperties": { + "type": "integer" + }, + "description": "CPU information about the host. The 'cores' key will contain the number of cpu cores and the 'sockets' key will contain the number of sockets.\n" + }, + "id": { + "type": "string" + }, + "memory": { + "type": "integer", + "description": "The memory size of the host.\n" + }, + "memoryUsage": { + "type": "integer", + "description": "The memory usage of the host.\n" + }, + "nameLabel": { + "type": "string", + "description": "The name label of the host.\n" + }, + "poolId": { + "type": "string", + "description": "Id of the pool that the host belongs to.\n" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The tags (labels) applied to the given entity.\n" + } + }, + "type": "object", + "required": [ + "cpus", + "id", + "memory", + "memoryUsage", + "nameLabel", + "poolId" + ], + "language": { + "nodejs": { + "requiredInputs": [] + } + } + }, + "xenorchestra:index/getXoaVmsVm:getXoaVmsVm": { + "properties": { + "affinityHost": { + "type": "string", + "description": "The preferred host you would like the VM to run on. If changed on an existing VM it will require a reboot for the VM to be rescheduled.\n" + }, + "autoPoweron": { + "type": "boolean", + "description": "If the VM will automatically turn on. Defaults to `false`.\n" + }, + "blockedOperations": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of operations on a VM that are not permitted. Examples include: clean_reboot, clean_shutdown, hard_reboot, hard_shutdown, pause, shutdown, suspend, destroy. This can be used to prevent a VM from being destroyed. The entire list can be found here\n" + }, + "cloneType": { + "type": "string", + "description": "The type of clone to perform for the VM. Possible values include `fast` or `full` and defaults to `fast`. In order to perform a `full` clone, the VM template must not be a disk template.\n" + }, + "cloudConfig": { + "type": "string", + "description": "The content of the cloud-init config to use. See the cloud init docs for more [information](https://cloudinit.readthedocs.io/en/latest/topics/examples.html).\n" + }, + "cloudNetworkConfig": { + "type": "string", + "description": "The content of the cloud-init network configuration for the VM (uses [version 1](https://cloudinit.readthedocs.io/en/latest/topics/network-config-format-v1.html))\n" + }, + "coreOs": { + "type": "boolean" + }, + "cpuCap": { + "type": "integer" + }, + "cpuWeight": { + "type": "integer" + }, + "cpus": { + "type": "integer", + "description": "The number of CPUs the VM will have. Updates to this field will cause a stop and start of the VM if the new CPU value is greater than the max CPU value. This can be determined with the following command:\n```\n\n$ xo-cli xo.getAllObjects filter='json:{\"id\": \"cf7b5d7d-3cd5-6b7c-5025-5c935c8cd0b8\"}' | jq '.[].CPUs'\n{\n \"max\": 4,\n \"number\": 2\n}\n\n# Updating the VM to use 3 CPUs would happen without stopping/starting the VM\n# Updating the VM to use 5 CPUs would stop/start the VM\n```\n" + }, + "disks": { + "type": "array", + "items": { + "$ref": "#/types/xenorchestra:index/getXoaVmsVmDisk:getXoaVmsVmDisk" + }, + "description": "The disk the VM will have access to.\n" + }, + "expNestedHvm": { + "type": "boolean", + "description": "Boolean parameter that allows a VM to use nested virtualization.\n" + }, + "highAvailability": { + "type": "string", + "description": "The restart priority for the VM. Possible values are `best-effort`, `restart` and empty string (no restarts on failure. Defaults to empty string\n" + }, + "host": { + "type": "string" + }, + "hvmBootFirmware": { + "type": "string", + "description": "The firmware to use for the VM. Possible values are `bios` and `uefi`.\n" + }, + "id": { + "type": "string" + }, + "ipv4Addresses": { + "type": "array", + "items": { + "type": "string" + } + }, + "ipv6Addresses": { + "type": "array", + "items": { + "type": "string" + }, + "description": "This is only accessible if guest-tools is installed in the VM and if `expected_ip_cidr` is set on any network interfaces. This will contain a list of the ipv6 addresses across all network interfaces in order.\n" + }, + "memoryMax": { + "type": "integer", + "description": "The amount of memory in bytes the VM will have. Updates to this field will case a stop and start of the VM if the new value is greater than the dynamic memory max. This can be determined with the following command:\n```\n\n\n$ xo-cli xo.getAllObjects filter='json:{\"id\": \"cf7b5d7d-3cd5-6b7c-5025-5c935c8cd0b8\"}' | jq '.[].memory.dynamic'\n[\n 2147483648, # memory dynamic min\n 4294967296 # memory dynamic max (4GB)\n]\n# Updating the VM to use 3GB of memory would happen without stopping/starting the VM\n# Updating the VM to use 5GB of memory would stop/start the VM\n```\n" + }, + "nameDescription": { + "type": "string", + "description": "The description of the VM.\n" + }, + "nameLabel": { + "type": "string", + "description": "The name of the VM.\n" + }, + "networks": { + "type": "array", + "items": { + "$ref": "#/types/xenorchestra:index/getXoaVmsVmNetwork:getXoaVmsVmNetwork" + }, + "description": "The network for the VM.\n" + }, + "powerState": { + "type": "string", + "description": "The power state of the VM. This can be Running, Halted, Paused or Suspended.\n" + }, + "resourceSet": { + "type": "string" + }, + "startDelay": { + "type": "integer", + "description": "Number of seconds the VM should be delayed from starting.\n" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The tags (labels) applied to the given entity.\n" + }, + "template": { + "type": "string", + "description": "The ID of the VM template to create the new VM from.\n" + }, + "vga": { + "type": "string", + "description": "The video adapter the VM should use. Possible values include std and cirrus.\n" + }, + "videoram": { + "type": "integer", + "description": "The videoram option the VM should use. Possible values include 1, 2, 4, 8, 16\n" + }, + "xenstore": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "The key value pairs to be populated in xenstore.\n" + } + }, + "type": "object", + "required": [ + "cpus", + "disks", + "id", + "ipv4Addresses", + "ipv6Addresses", + "memoryMax", + "nameLabel", + "networks", + "template" + ], + "language": { + "nodejs": { + "requiredInputs": [] + } + } + }, + "xenorchestra:index/getXoaVmsVmDisk:getXoaVmsVmDisk": { + "properties": { + "attached": { + "type": "boolean", + "description": "Whether the device should be attached to the VM.\n" + }, + "nameDescription": { + "type": "string", + "description": "The description for the disk\n" + }, + "nameLabel": { + "type": "string", + "description": "The name for the disk\n" + }, + "position": { + "type": "string", + "description": "Indicates the order of the block device.\n" + }, + "size": { + "type": "integer", + "description": "The size in bytes for the disk.\n" + }, + "srId": { + "type": "string", + "description": "The storage repository ID to use.\n" + }, + "vbdId": { + "type": "string" + }, + "vdiId": { + "type": "string" + } + }, + "type": "object", + "required": [ + "nameLabel", + "position", + "size", + "srId", + "vbdId", + "vdiId" + ], + "language": { + "nodejs": { + "requiredInputs": [] + } + } + }, + "xenorchestra:index/getXoaVmsVmNetwork:getXoaVmsVmNetwork": { + "properties": { + "attached": { + "type": "boolean", + "description": "Whether the device should be attached to the VM.\n" + }, + "device": { + "type": "string" + }, + "expectedIpCidr": { + "type": "string" + }, + "ipv4Addresses": { + "type": "array", + "items": { + "type": "string" + } + }, + "ipv6Addresses": { + "type": "array", + "items": { + "type": "string" + } + }, + "macAddress": { + "type": "string" + }, + "networkId": { + "type": "string", + "description": "The ID of the network the VM will be on.\n" + } + }, + "type": "object", + "required": [ + "device", + "ipv4Addresses", + "ipv6Addresses", + "macAddress", + "networkId" + ], + "language": { + "nodejs": { + "requiredInputs": [] + } + } + } + }, + "provider": { + "description": "The provider type for the xenorchestra 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": { + "insecure": { + "type": "boolean", + "description": "Whether SSL should be verified or not. Can be set via the XOA_INSECURE environment variable.\n" + }, + "password": { + "type": "string", + "description": "Password for xoa api. Can be set via the XOA_PASSWORD environment variable.\n" + }, + "retryMaxTime": { + "type": "string", + "description": "If `retry_mode` is set, this specifies the duration for which the backoff method will continue retries. Can be set via\nthe `XOA_RETRY_MAX_TIME` environment variable\n" + }, + "retryMode": { + "type": "string", + "description": "Specifies if retries should be attempted for requests that require eventual . Can be set via the XOA_RETRY_MODE\nenvironment variable.\n" + }, + "token": { + "type": "string", + "description": "Password for xoa api. Can be set via the XOA_TOKEN environment variable.\n" + }, + "url": { + "type": "string", + "description": "Hostname of the xoa router. Can be set via the XOA_URL environment variable.\n" + }, + "username": { + "type": "string", + "description": "User account for xoa api. Can be set via the XOA_USER environment variable.\n" + } + }, + "required": [ + "url" + ], + "inputProperties": { + "insecure": { + "type": "boolean", + "description": "Whether SSL should be verified or not. Can be set via the XOA_INSECURE environment variable.\n" + }, + "password": { + "type": "string", + "description": "Password for xoa api. Can be set via the XOA_PASSWORD environment variable.\n" + }, + "retryMaxTime": { + "type": "string", + "description": "If `retry_mode` is set, this specifies the duration for which the backoff method will continue retries. Can be set via\nthe `XOA_RETRY_MAX_TIME` environment variable\n" + }, + "retryMode": { + "type": "string", + "description": "Specifies if retries should be attempted for requests that require eventual . Can be set via the XOA_RETRY_MODE\nenvironment variable.\n" + }, + "token": { + "type": "string", + "description": "Password for xoa api. Can be set via the XOA_TOKEN environment variable.\n" + }, + "url": { + "type": "string", + "description": "Hostname of the xoa router. Can be set via the XOA_URL environment variable.\n" + }, + "username": { + "type": "string", + "description": "User account for xoa api. Can be set via the XOA_USER environment variable.\n" + } + }, + "requiredInputs": [ + "url" + ] + }, + "resources": { + "xenorchestra:index/acl:Acl": { + "description": "## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as xenorchestra from \"@pulumi/xenorchestra\";\n\nconst pool = xenorchestra.getXoaPool({\n nameLabel: \"Your pool\",\n});\nconst user = xenorchestra.getXoaUser({\n username: \"my-username\",\n});\nconst acl = new xenorchestra.Acl(\"acl\", {\n subject: user.then(user =\u003e user.id),\n object: pool.then(pool =\u003e pool.id),\n action: \"operator\",\n});\n```\n```python\nimport pulumi\nimport pulumi_xenorchestra as xenorchestra\n\npool = xenorchestra.get_xoa_pool(name_label=\"Your pool\")\nuser = xenorchestra.get_xoa_user(username=\"my-username\")\nacl = xenorchestra.Acl(\"acl\",\n subject=user.id,\n object=pool.id,\n action=\"operator\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Xenorchestra = Pulumi.Xenorchestra;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var pool = Xenorchestra.GetXoaPool.Invoke(new()\n {\n NameLabel = \"Your pool\",\n });\n\n var user = Xenorchestra.GetXoaUser.Invoke(new()\n {\n Username = \"my-username\",\n });\n\n var acl = new Xenorchestra.Acl(\"acl\", new()\n {\n Subject = user.Apply(getXoaUserResult =\u003e getXoaUserResult.Id),\n Object = pool.Apply(getXoaPoolResult =\u003e getXoaPoolResult.Id),\n Action = \"operator\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/vatesfr/pulumi-xenorchestra/sdk/go/xenorchestra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpool, err := xenorchestra.GetXoaPool(ctx, \u0026xenorchestra.GetXoaPoolArgs{\n\t\t\tNameLabel: \"Your pool\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := xenorchestra.GetXoaUser(ctx, \u0026xenorchestra.GetXoaUserArgs{\n\t\t\tUsername: \"my-username\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = xenorchestra.NewAcl(ctx, \"acl\", \u0026xenorchestra.AclArgs{\n\t\t\tSubject: pulumi.String(user.Id),\n\t\t\tObject: pulumi.String(pool.Id),\n\t\t\tAction: pulumi.String(\"operator\"),\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.xenorchestra.XenorchestraFunctions;\nimport com.pulumi.xenorchestra.inputs.GetXoaPoolArgs;\nimport com.pulumi.xenorchestra.inputs.GetXoaUserArgs;\nimport com.pulumi.xenorchestra.Acl;\nimport com.pulumi.xenorchestra.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 final var pool = XenorchestraFunctions.getXoaPool(GetXoaPoolArgs.builder()\n .nameLabel(\"Your pool\")\n .build());\n\n final var user = XenorchestraFunctions.getXoaUser(GetXoaUserArgs.builder()\n .username(\"my-username\")\n .build());\n\n var acl = new Acl(\"acl\", AclArgs.builder() \n .subject(user.applyValue(getXoaUserResult -\u003e getXoaUserResult.id()))\n .object(pool.applyValue(getXoaPoolResult -\u003e getXoaPoolResult.id()))\n .action(\"operator\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n acl:\n type: xenorchestra:Acl\n properties:\n subject: ${user.id}\n object: ${pool.id}\n action: operator\nvariables:\n pool:\n fn::invoke:\n Function: xenorchestra:getXoaPool\n Arguments:\n nameLabel: Your pool\n user:\n fn::invoke:\n Function: xenorchestra:getXoaUser\n Arguments:\n username: my-username\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "properties": { + "action": { + "type": "string", + "description": "Must be one of admin, operator, viewer. See the [Xen orchestra docs](https://xen-orchestra.com/docs/acls.html) on ACLs for more details.\n" + }, + "object": { + "type": "string", + "description": "The id of the object that will be able to be used by the subject.\n" + }, + "subject": { + "type": "string", + "description": "The uuid of the user account that the acl will apply to.\n" + } + }, + "required": [ + "action", + "object", + "subject" + ], + "inputProperties": { + "action": { + "type": "string", + "description": "Must be one of admin, operator, viewer. See the [Xen orchestra docs](https://xen-orchestra.com/docs/acls.html) on ACLs for more details.\n", + "willReplaceOnChanges": true + }, + "object": { + "type": "string", + "description": "The id of the object that will be able to be used by the subject.\n", + "willReplaceOnChanges": true + }, + "subject": { + "type": "string", + "description": "The uuid of the user account that the acl will apply to.\n", + "willReplaceOnChanges": true + } + }, + "requiredInputs": [ + "action", + "object", + "subject" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering Acl resources.\n", + "properties": { + "action": { + "type": "string", + "description": "Must be one of admin, operator, viewer. See the [Xen orchestra docs](https://xen-orchestra.com/docs/acls.html) on ACLs for more details.\n", + "willReplaceOnChanges": true + }, + "object": { + "type": "string", + "description": "The id of the object that will be able to be used by the subject.\n", + "willReplaceOnChanges": true + }, + "subject": { + "type": "string", + "description": "The uuid of the user account that the acl will apply to.\n", + "willReplaceOnChanges": true + } + }, + "type": "object" + } + }, + "xenorchestra:index/bondedNetwork:BondedNetwork": { + "properties": { + "automatic": { + "type": "boolean" + }, + "bondMode": { + "type": "string", + "description": "The bond mode that should be used for this network.\n" + }, + "defaultIsLocked": { + "type": "boolean", + "description": "This argument controls whether the network should enforce VIF locking. This defaults to `false` which means that no\nfiltering rules are applied.\n" + }, + "mtu": { + "type": "integer", + "description": "The MTU of the network. Defaults to `1500` if unspecified.\n" + }, + "nameDescription": { + "type": "string" + }, + "nameLabel": { + "type": "string", + "description": "The name label of the network.\n" + }, + "pifIds": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The pifs (uuid) that should be used for this network.\n" + }, + "poolId": { + "type": "string", + "description": "The pool id that this network should belong to.\n" + } + }, + "required": [ + "nameLabel", + "poolId" + ], + "inputProperties": { + "automatic": { + "type": "boolean" + }, + "bondMode": { + "type": "string", + "description": "The bond mode that should be used for this network.\n", + "willReplaceOnChanges": true + }, + "defaultIsLocked": { + "type": "boolean", + "description": "This argument controls whether the network should enforce VIF locking. This defaults to `false` which means that no\nfiltering rules are applied.\n" + }, + "mtu": { + "type": "integer", + "description": "The MTU of the network. Defaults to `1500` if unspecified.\n", + "willReplaceOnChanges": true + }, + "nameDescription": { + "type": "string" + }, + "nameLabel": { + "type": "string", + "description": "The name label of the network.\n" + }, + "pifIds": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The pifs (uuid) that should be used for this network.\n", + "willReplaceOnChanges": true + }, + "poolId": { + "type": "string", + "description": "The pool id that this network should belong to.\n", + "willReplaceOnChanges": true + } + }, + "requiredInputs": [ + "nameLabel", + "poolId" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering BondedNetwork resources.\n", + "properties": { + "automatic": { + "type": "boolean" + }, + "bondMode": { + "type": "string", + "description": "The bond mode that should be used for this network.\n", + "willReplaceOnChanges": true + }, + "defaultIsLocked": { + "type": "boolean", + "description": "This argument controls whether the network should enforce VIF locking. This defaults to `false` which means that no\nfiltering rules are applied.\n" + }, + "mtu": { + "type": "integer", + "description": "The MTU of the network. Defaults to `1500` if unspecified.\n", + "willReplaceOnChanges": true + }, + "nameDescription": { + "type": "string" + }, + "nameLabel": { + "type": "string", + "description": "The name label of the network.\n" + }, + "pifIds": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The pifs (uuid) that should be used for this network.\n", + "willReplaceOnChanges": true + }, + "poolId": { + "type": "string", + "description": "The pool id that this network should belong to.\n", + "willReplaceOnChanges": true + } + }, + "type": "object" + }, + "deprecationMessage": "xenorchestra.index/bondednetwork.BondedNetwork has been deprecated in favor of xenorchestra.index/xoabondednetwork.XoaBondedNetwork" + }, + "xenorchestra:index/cloudConfig:CloudConfig": { + "description": "Creates a Xen Orchestra cloud config resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as xenorchestra from \"@pulumi/xenorchestra\";\n\nconst demo = new xenorchestra.CloudConfig(\"demo\", {template: `#cloud-config\n\nruncmd:\n - [ ls, -l, / ]\n - [ sh, -xc, \"echo $(date) ': hello world!'\" ]\n - [ sh, -c, echo \"=========hello world'=========\" ]\n - ls -l /root\n`});\nconst bar = new xenorchestra.Vm(\"bar\", {cloudConfig: demo.template});\n// ...\n```\n```python\nimport pulumi\nimport pulumi_xenorchestra as xenorchestra\n\ndemo = xenorchestra.CloudConfig(\"demo\", template=\"\"\"#cloud-config\n\nruncmd:\n - [ ls, -l, / ]\n - [ sh, -xc, \"echo $(date) ': hello world!'\" ]\n - [ sh, -c, echo \"=========hello world'=========\" ]\n - ls -l /root\n\"\"\")\nbar = xenorchestra.Vm(\"bar\", cloud_config=demo.template)\n# ...\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Xenorchestra = Pulumi.Xenorchestra;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var demo = new Xenorchestra.CloudConfig(\"demo\", new()\n {\n Template = @\"#cloud-config\n\nruncmd:\n - [ ls, -l, / ]\n - [ sh, -xc, \"\"echo $(date) ': hello world!'\"\" ]\n - [ sh, -c, echo \"\"=========hello world'=========\"\" ]\n - ls -l /root\n\",\n });\n\n var bar = new Xenorchestra.Vm(\"bar\", new()\n {\n CloudConfig = demo.Template,\n });\n\n // ...\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/vatesfr/pulumi-xenorchestra/sdk/go/xenorchestra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdemo, err := xenorchestra.NewCloudConfig(ctx, \"demo\", \u0026xenorchestra.CloudConfigArgs{\n\t\t\tTemplate: pulumi.String(`#cloud-config\n\nruncmd:\n - [ ls, -l, / ]\n - [ sh, -xc, \"echo $(date) ': hello world!'\" ]\n - [ sh, -c, echo \"=========hello world'=========\" ]\n - ls -l /root\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = xenorchestra.NewVm(ctx, \"bar\", \u0026xenorchestra.VmArgs{\n\t\t\tCloudConfig: demo.Template,\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.xenorchestra.CloudConfig;\nimport com.pulumi.xenorchestra.CloudConfigArgs;\nimport com.pulumi.xenorchestra.Vm;\nimport com.pulumi.xenorchestra.VmArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 demo = new CloudConfig(\"demo\", CloudConfigArgs.builder() \n .template(\"\"\"\n#cloud-config\n\nruncmd:\n - [ ls, -l, / ]\n - [ sh, -xc, \"echo $(date) ': hello world!'\" ]\n - [ sh, -c, echo \"=========hello world'=========\" ]\n - ls -l /root\n \"\"\")\n .build());\n\n var bar = new Vm(\"bar\", VmArgs.builder() \n .cloudConfig(demo.template())\n .build());\n\n // ...\n }\n}\n```\n```yaml\nresources:\n demo:\n type: xenorchestra:CloudConfig\n properties:\n template: |\n #cloud-config\n\n runcmd:\n - [ ls, -l, / ]\n - [ sh, -xc, \"echo $(date) ': hello world!'\" ]\n - [ sh, -c, echo \"=========hello world'=========\" ]\n - ls -l /root\n bar:\n type: xenorchestra:Vm\n properties:\n # ...\n cloudConfig: ${demo.template}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "properties": { + "name": { + "type": "string", + "description": "The name of the cloud config.\n" + }, + "template": { + "type": "string", + "description": "The cloud init config. See the cloud init docs for more [information](https://cloudinit.readthedocs.io/en/latest/topics/examples.html).\n" + } + }, + "required": [ + "name", + "template" + ], + "inputProperties": { + "name": { + "type": "string", + "description": "The name of the cloud config.\n", + "willReplaceOnChanges": true + }, + "template": { + "type": "string", + "description": "The cloud init config. See the cloud init docs for more [information](https://cloudinit.readthedocs.io/en/latest/topics/examples.html).\n", + "willReplaceOnChanges": true + } + }, + "requiredInputs": [ + "template" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering CloudConfig resources.\n", + "properties": { + "name": { + "type": "string", + "description": "The name of the cloud config.\n", + "willReplaceOnChanges": true + }, + "template": { + "type": "string", + "description": "The cloud init config. See the cloud init docs for more [information](https://cloudinit.readthedocs.io/en/latest/topics/examples.html).\n", + "willReplaceOnChanges": true + } + }, + "type": "object" + } + }, + "xenorchestra:index/network:Network": { + "properties": { + "automatic": { + "type": "boolean" + }, + "defaultIsLocked": { + "type": "boolean", + "description": "This argument controls whether the network should enforce VIF locking. This defaults to `false` which means that no\nfiltering rules are applied.\n" + }, + "mtu": { + "type": "integer", + "description": "The MTU of the network. Defaults to `1500` if unspecified.\n" + }, + "nameDescription": { + "type": "string" + }, + "nameLabel": { + "type": "string", + "description": "The name label of the network.\n" + }, + "nbd": { + "type": "boolean", + "description": "Whether the network should use a network block device. Defaults to `false` if unspecified.\n" + }, + "poolId": { + "type": "string", + "description": "The pool id that this network should belong to.\n" + }, + "sourcePifDevice": { + "type": "string", + "description": "The PIF device (eth0, eth1, etc) that will be used as an input during network creation. This parameter is required if a\nvlan is specified.\n" + }, + "vlan": { + "type": "integer", + "description": "The vlan to use for the network. Defaults to `0` meaning no VLAN.\n" + } + }, + "required": [ + "nameLabel", + "poolId" + ], + "inputProperties": { + "automatic": { + "type": "boolean" + }, + "defaultIsLocked": { + "type": "boolean", + "description": "This argument controls whether the network should enforce VIF locking. This defaults to `false` which means that no\nfiltering rules are applied.\n" + }, + "mtu": { + "type": "integer", + "description": "The MTU of the network. Defaults to `1500` if unspecified.\n", + "willReplaceOnChanges": true + }, + "nameDescription": { + "type": "string" + }, + "nameLabel": { + "type": "string", + "description": "The name label of the network.\n" + }, + "nbd": { + "type": "boolean", + "description": "Whether the network should use a network block device. Defaults to `false` if unspecified.\n" + }, + "poolId": { + "type": "string", + "description": "The pool id that this network should belong to.\n", + "willReplaceOnChanges": true + }, + "sourcePifDevice": { + "type": "string", + "description": "The PIF device (eth0, eth1, etc) that will be used as an input during network creation. This parameter is required if a\nvlan is specified.\n", + "willReplaceOnChanges": true + }, + "vlan": { + "type": "integer", + "description": "The vlan to use for the network. Defaults to `0` meaning no VLAN.\n", + "willReplaceOnChanges": true + } + }, + "requiredInputs": [ + "nameLabel", + "poolId" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering Network resources.\n", + "properties": { + "automatic": { + "type": "boolean" + }, + "defaultIsLocked": { + "type": "boolean", + "description": "This argument controls whether the network should enforce VIF locking. This defaults to `false` which means that no\nfiltering rules are applied.\n" + }, + "mtu": { + "type": "integer", + "description": "The MTU of the network. Defaults to `1500` if unspecified.\n", + "willReplaceOnChanges": true + }, + "nameDescription": { + "type": "string" + }, + "nameLabel": { + "type": "string", + "description": "The name label of the network.\n" + }, + "nbd": { + "type": "boolean", + "description": "Whether the network should use a network block device. Defaults to `false` if unspecified.\n" + }, + "poolId": { + "type": "string", + "description": "The pool id that this network should belong to.\n", + "willReplaceOnChanges": true + }, + "sourcePifDevice": { + "type": "string", + "description": "The PIF device (eth0, eth1, etc) that will be used as an input during network creation. This parameter is required if a\nvlan is specified.\n", + "willReplaceOnChanges": true + }, + "vlan": { + "type": "integer", + "description": "The vlan to use for the network. Defaults to `0` meaning no VLAN.\n", + "willReplaceOnChanges": true + } + }, + "type": "object" + }, + "deprecationMessage": "xenorchestra.index/network.Network has been deprecated in favor of xenorchestra.index/xoanetwork.XoaNetwork" + }, + "xenorchestra:index/resourceSet:ResourceSet": { + "description": "Creates a Xen Orchestra resource set.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as xenorchestra from \"@pulumi/xenorchestra\";\n\nconst template = xenorchestra.getXoaTemplate({\n nameLabel: \"Ubuntu Bionic Beaver 18.04\",\n});\nconst sr = xenorchestra.getXoaStorageRepository({\n nameLabel: \"Your storage repository label\",\n});\nconst eth0 = xenorchestra.getXoaPif({\n device: \"eth0\",\n vlan: -1,\n});\nconst user = xenorchestra.getXoaUser({\n username: \"test_user\",\n});\nconst rs = new xenorchestra.ResourceSet(\"rs\", {\n subjects: [user.then(user =\u003e user.id)],\n objects: [\n template.then(template =\u003e template.id),\n sr.then(sr =\u003e sr.id),\n eth0.then(eth0 =\u003e eth0.network),\n ],\n limits: [\n {\n type: \"cpus\",\n quantity: 20,\n },\n {\n type: \"disk\",\n quantity: 107374182400,\n },\n {\n type: \"memory\",\n quantity: 12884901888,\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_xenorchestra as xenorchestra\n\ntemplate = xenorchestra.get_xoa_template(name_label=\"Ubuntu Bionic Beaver 18.04\")\nsr = xenorchestra.get_xoa_storage_repository(name_label=\"Your storage repository label\")\neth0 = xenorchestra.get_xoa_pif(device=\"eth0\",\n vlan=-1)\nuser = xenorchestra.get_xoa_user(username=\"test_user\")\nrs = xenorchestra.ResourceSet(\"rs\",\n subjects=[user.id],\n objects=[\n template.id,\n sr.id,\n eth0.network,\n ],\n limits=[\n xenorchestra.ResourceSetLimitArgs(\n type=\"cpus\",\n quantity=20,\n ),\n xenorchestra.ResourceSetLimitArgs(\n type=\"disk\",\n quantity=107374182400,\n ),\n xenorchestra.ResourceSetLimitArgs(\n type=\"memory\",\n quantity=12884901888,\n ),\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Xenorchestra = Pulumi.Xenorchestra;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var template = Xenorchestra.GetXoaTemplate.Invoke(new()\n {\n NameLabel = \"Ubuntu Bionic Beaver 18.04\",\n });\n\n var sr = Xenorchestra.GetXoaStorageRepository.Invoke(new()\n {\n NameLabel = \"Your storage repository label\",\n });\n\n var eth0 = Xenorchestra.GetXoaPif.Invoke(new()\n {\n Device = \"eth0\",\n Vlan = -1,\n });\n\n var user = Xenorchestra.GetXoaUser.Invoke(new()\n {\n Username = \"test_user\",\n });\n\n var rs = new Xenorchestra.ResourceSet(\"rs\", new()\n {\n Subjects = new[]\n {\n user.Apply(getXoaUserResult =\u003e getXoaUserResult.Id),\n },\n Objects = new[]\n {\n template.Apply(getXoaTemplateResult =\u003e getXoaTemplateResult.Id),\n sr.Apply(getXoaStorageRepositoryResult =\u003e getXoaStorageRepositoryResult.Id),\n eth0.Apply(getXoaPifResult =\u003e getXoaPifResult.Network),\n },\n Limits = new[]\n {\n new Xenorchestra.Inputs.ResourceSetLimitArgs\n {\n Type = \"cpus\",\n Quantity = 20,\n },\n new Xenorchestra.Inputs.ResourceSetLimitArgs\n {\n Type = \"disk\",\n Quantity = 107374182400,\n },\n new Xenorchestra.Inputs.ResourceSetLimitArgs\n {\n Type = \"memory\",\n Quantity = 12884901888,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/vatesfr/pulumi-xenorchestra/sdk/go/xenorchestra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttemplate, err := xenorchestra.GetXoaTemplate(ctx, \u0026xenorchestra.GetXoaTemplateArgs{\n\t\t\tNameLabel: \"Ubuntu Bionic Beaver 18.04\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsr, err := xenorchestra.GetXoaStorageRepository(ctx, \u0026xenorchestra.GetXoaStorageRepositoryArgs{\n\t\t\tNameLabel: \"Your storage repository label\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teth0, err := xenorchestra.GetXoaPif(ctx, \u0026xenorchestra.GetXoaPifArgs{\n\t\t\tDevice: \"eth0\",\n\t\t\tVlan: -1,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := xenorchestra.GetXoaUser(ctx, \u0026xenorchestra.GetXoaUserArgs{\n\t\t\tUsername: \"test_user\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = xenorchestra.NewResourceSet(ctx, \"rs\", \u0026xenorchestra.ResourceSetArgs{\n\t\t\tSubjects: pulumi.StringArray{\n\t\t\t\tpulumi.String(user.Id),\n\t\t\t},\n\t\t\tObjects: pulumi.StringArray{\n\t\t\t\tpulumi.String(template.Id),\n\t\t\t\tpulumi.String(sr.Id),\n\t\t\t\tpulumi.String(eth0.Network),\n\t\t\t},\n\t\t\tLimits: xenorchestra.ResourceSetLimitArray{\n\t\t\t\t\u0026xenorchestra.ResourceSetLimitArgs{\n\t\t\t\t\tType: pulumi.String(\"cpus\"),\n\t\t\t\t\tQuantity: pulumi.Int(20),\n\t\t\t\t},\n\t\t\t\t\u0026xenorchestra.ResourceSetLimitArgs{\n\t\t\t\t\tType: pulumi.String(\"disk\"),\n\t\t\t\t\tQuantity: pulumi.Int(107374182400),\n\t\t\t\t},\n\t\t\t\t\u0026xenorchestra.ResourceSetLimitArgs{\n\t\t\t\t\tType: pulumi.String(\"memory\"),\n\t\t\t\t\tQuantity: pulumi.Int(12884901888),\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.xenorchestra.XenorchestraFunctions;\nimport com.pulumi.xenorchestra.inputs.GetXoaTemplateArgs;\nimport com.pulumi.xenorchestra.inputs.GetXoaStorageRepositoryArgs;\nimport com.pulumi.xenorchestra.inputs.GetXoaPifArgs;\nimport com.pulumi.xenorchestra.inputs.GetXoaUserArgs;\nimport com.pulumi.xenorchestra.ResourceSet;\nimport com.pulumi.xenorchestra.ResourceSetArgs;\nimport com.pulumi.xenorchestra.inputs.ResourceSetLimitArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 template = XenorchestraFunctions.getXoaTemplate(GetXoaTemplateArgs.builder()\n .nameLabel(\"Ubuntu Bionic Beaver 18.04\")\n .build());\n\n final var sr = XenorchestraFunctions.getXoaStorageRepository(GetXoaStorageRepositoryArgs.builder()\n .nameLabel(\"Your storage repository label\")\n .build());\n\n final var eth0 = XenorchestraFunctions.getXoaPif(GetXoaPifArgs.builder()\n .device(\"eth0\")\n .vlan(\"TODO: GenUnaryOpExpression\")\n .build());\n\n final var user = XenorchestraFunctions.getXoaUser(GetXoaUserArgs.builder()\n .username(\"test_user\")\n .build());\n\n var rs = new ResourceSet(\"rs\", ResourceSetArgs.builder() \n .subjects(user.applyValue(getXoaUserResult -\u003e getXoaUserResult.id()))\n .objects( \n template.applyValue(getXoaTemplateResult -\u003e getXoaTemplateResult.id()),\n sr.applyValue(getXoaStorageRepositoryResult -\u003e getXoaStorageRepositoryResult.id()),\n eth0.applyValue(getXoaPifResult -\u003e getXoaPifResult.network()))\n .limits( \n ResourceSetLimitArgs.builder()\n .type(\"cpus\")\n .quantity(20)\n .build(),\n ResourceSetLimitArgs.builder()\n .type(\"disk\")\n .quantity(107374182400)\n .build(),\n ResourceSetLimitArgs.builder()\n .type(\"memory\")\n .quantity(12884901888)\n .build())\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nID can be found from the following command:\n\n$ xo-cli resourceSet.getAll\n\n```sh\n$ pulumi import xenorchestra:index/resourceSet:ResourceSet rs MGSpuwnbtUE\n```\n\n", + "properties": { + "limits": { + "type": "array", + "items": { + "$ref": "#/types/xenorchestra:index/ResourceSetLimit:ResourceSetLimit" + }, + "description": "The limit applied to the resource set.\n" + }, + "name": { + "type": "string", + "description": "The name of the resource set.\n" + }, + "objects": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The uuids of the objects that are within scope of the resource set. A minimum of a storage repository, network and VM template are required for users to launch VMs.\n" + }, + "subjects": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The uuids of the user accounts that should have access to the resource set.\n" + } + }, + "required": [ + "limits", + "name" + ], + "inputProperties": { + "limits": { + "type": "array", + "items": { + "$ref": "#/types/xenorchestra:index/ResourceSetLimit:ResourceSetLimit" + }, + "description": "The limit applied to the resource set.\n" + }, + "name": { + "type": "string", + "description": "The name of the resource set.\n" + }, + "objects": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The uuids of the objects that are within scope of the resource set. A minimum of a storage repository, network and VM template are required for users to launch VMs.\n" + }, + "subjects": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The uuids of the user accounts that should have access to the resource set.\n" + } + }, + "requiredInputs": [ + "limits" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering ResourceSet resources.\n", + "properties": { + "limits": { + "type": "array", + "items": { + "$ref": "#/types/xenorchestra:index/ResourceSetLimit:ResourceSetLimit" + }, + "description": "The limit applied to the resource set.\n" + }, + "name": { + "type": "string", + "description": "The name of the resource set.\n" + }, + "objects": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The uuids of the objects that are within scope of the resource set. A minimum of a storage repository, network and VM template are required for users to launch VMs.\n" + }, + "subjects": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The uuids of the user accounts that should have access to the resource set.\n" + } + }, + "type": "object" + } + }, + "xenorchestra:index/vdi:Vdi": { + "description": "Creates a Xen Orchestra vdi resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as xenorchestra from \"@pulumi/xenorchestra\";\n\nconst barVdi = new xenorchestra.Vdi(\"barVdi\", {\n nameLabel: \"alpine-virt-3-17-0\",\n srId: data.xenorchestra_sr.sr.id,\n filepath: `${path.module}/isos/alpine-virt-3.17.0-x86_64.iso`,\n type: \"raw\",\n});\n// Use the vdi with the VM resource\n// Other required options omitted\n// [ ... ]\nconst barVm = new xenorchestra.Vm(\"barVm\", {cdrom: {\n id: resource.xenorchestra_vdi.bar.id,\n}});\n```\n```python\nimport pulumi\nimport pulumi_xenorchestra as xenorchestra\n\nbar_vdi = xenorchestra.Vdi(\"barVdi\",\n name_label=\"alpine-virt-3-17-0\",\n sr_id=data[\"xenorchestra_sr\"][\"sr\"][\"id\"],\n filepath=f\"{path['module']}/isos/alpine-virt-3.17.0-x86_64.iso\",\n type=\"raw\")\n# Use the vdi with the VM resource\n# Other required options omitted\n# [ ... ]\nbar_vm = xenorchestra.Vm(\"barVm\", cdrom=xenorchestra.VmCdromArgs(\n id=resource[\"xenorchestra_vdi\"][\"bar\"][\"id\"],\n))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Xenorchestra = Pulumi.Xenorchestra;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var barVdi = new Xenorchestra.Vdi(\"barVdi\", new()\n {\n NameLabel = \"alpine-virt-3-17-0\",\n SrId = data.Xenorchestra_sr.Sr.Id,\n Filepath = $\"{path.Module}/isos/alpine-virt-3.17.0-x86_64.iso\",\n Type = \"raw\",\n });\n\n // Use the vdi with the VM resource\n // Other required options omitted\n // [ ... ]\n var barVm = new Xenorchestra.Vm(\"barVm\", new()\n {\n Cdrom = new Xenorchestra.Inputs.VmCdromArgs\n {\n Id = resource.Xenorchestra_vdi.Bar.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/vatesfr/pulumi-xenorchestra/sdk/go/xenorchestra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := xenorchestra.NewVdi(ctx, \"barVdi\", \u0026xenorchestra.VdiArgs{\n\t\t\tNameLabel: pulumi.String(\"alpine-virt-3-17-0\"),\n\t\t\tSrId: pulumi.Any(data.Xenorchestra_sr.Sr.Id),\n\t\t\tFilepath: pulumi.String(fmt.Sprintf(\"%v/isos/alpine-virt-3.17.0-x86_64.iso\", path.Module)),\n\t\t\tType: pulumi.String(\"raw\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Use the vdi with the VM resource\n\t\t// Other required options omitted\n\t\t// [ ... ]\n\t\t_, err = xenorchestra.NewVm(ctx, \"barVm\", \u0026xenorchestra.VmArgs{\n\t\t\tCdrom: \u0026xenorchestra.VmCdromArgs{\n\t\t\t\tId: pulumi.Any(resource.Xenorchestra_vdi.Bar.Id),\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.xenorchestra.Vdi;\nimport com.pulumi.xenorchestra.VdiArgs;\nimport com.pulumi.xenorchestra.Vm;\nimport com.pulumi.xenorchestra.VmArgs;\nimport com.pulumi.xenorchestra.inputs.VmCdromArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 barVdi = new Vdi(\"barVdi\", VdiArgs.builder() \n .nameLabel(\"alpine-virt-3-17-0\")\n .srId(data.xenorchestra_sr().sr().id())\n .filepath(String.format(\"%s/isos/alpine-virt-3.17.0-x86_64.iso\", path.module()))\n .type(\"raw\")\n .build());\n\n // Use the vdi with the VM resource\n // Other required options omitted\n // [ ... ]\n var barVm = new Vm(\"barVm\", VmArgs.builder() \n .cdrom(VmCdromArgs.builder()\n .id(resource.xenorchestra_vdi().bar().id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n barVdi:\n type: xenorchestra:Vdi\n properties:\n nameLabel: alpine-virt-3-17-0\n srId: ${data.xenorchestra_sr.sr.id}\n filepath: ${path.module}/isos/alpine-virt-3.17.0-x86_64.iso\n type: raw\n # Use the vdi with the VM resource\n barVm:\n type: xenorchestra:Vm\n properties:\n cdrom:\n id: ${resource.xenorchestra_vdi.bar.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "properties": { + "filepath": { + "type": "string", + "description": "The file path to the ISO or vdi image that should be uploaded when the VDI is created.\n" + }, + "nameLabel": { + "type": "string", + "description": "The name label of the VDI\n" + }, + "srId": { + "type": "string", + "description": "The id of the storage repository the VDI should be created in. Make sure the storage repository supports the file you are uploading! For example, ISOs should only be uploaded to ISO storage repositories.\n" + }, + "type": { + "type": "string", + "description": "Only `raw` uploads are supported today, but vhd support may be added in the future.\n" + } + }, + "required": [ + "filepath", + "nameLabel", + "srId", + "type" + ], + "inputProperties": { + "filepath": { + "type": "string", + "description": "The file path to the ISO or vdi image that should be uploaded when the VDI is created.\n", + "willReplaceOnChanges": true + }, + "nameLabel": { + "type": "string", + "description": "The name label of the VDI\n" + }, + "srId": { + "type": "string", + "description": "The id of the storage repository the VDI should be created in. Make sure the storage repository supports the file you are uploading! For example, ISOs should only be uploaded to ISO storage repositories.\n", + "willReplaceOnChanges": true + }, + "type": { + "type": "string", + "description": "Only `raw` uploads are supported today, but vhd support may be added in the future.\n" + } + }, + "requiredInputs": [ + "filepath", + "nameLabel", + "srId", + "type" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering Vdi resources.\n", + "properties": { + "filepath": { + "type": "string", + "description": "The file path to the ISO or vdi image that should be uploaded when the VDI is created.\n", + "willReplaceOnChanges": true + }, + "nameLabel": { + "type": "string", + "description": "The name label of the VDI\n" + }, + "srId": { + "type": "string", + "description": "The id of the storage repository the VDI should be created in. Make sure the storage repository supports the file you are uploading! For example, ISOs should only be uploaded to ISO storage repositories.\n", + "willReplaceOnChanges": true + }, + "type": { + "type": "string", + "description": "Only `raw` uploads are supported today, but vhd support may be added in the future.\n" + } + }, + "type": "object" + } + }, + "xenorchestra:index/vm:Vm": { + "description": "## Example Usage\n\n", + "properties": { + "affinityHost": { + "type": "string", + "description": "The preferred host you would like the VM to run on. If changed on an existing VM it will require a reboot for the VM to\nbe rescheduled.\n" + }, + "autoPoweron": { + "type": "boolean", + "description": "If the VM will automatically turn on. Defaults to `false`.\n" + }, + "blockedOperations": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of operations on a VM that are not permitted. Examples include: clean_reboot, clean_shutdown, hard_reboot,\nhard_shutdown, pause, shutdown, suspend, destroy. This can be used to prevent a VM from being destroyed. The entire list\ncan be found here\n" + }, + "cdrom": { + "$ref": "#/types/xenorchestra:index/VmCdrom:VmCdrom", + "description": "The ISO that should be attached to VM. This allows you to create a VM from a diskless template (any templates available\nfrom `xe template-list`) and install the OS from the following ISO.\n" + }, + "cloneType": { + "type": "string", + "description": "The type of clone to perform for the VM. Possible values include `fast` or `full` and defaults to `fast`. In order to\nperform a `full` clone, the VM template must not be a disk template.\n" + }, + "cloudConfig": { + "type": "string", + "description": "The content of the cloud-init config to use. See the cloud init docs for more\n[information](https://cloudinit.readthedocs.io/en/latest/topics/examples.html).\n" + }, + "cloudNetworkConfig": { + "type": "string", + "description": "The content of the cloud-init network configuration for the VM (uses [version\n1](https://cloudinit.readthedocs.io/en/latest/topics/network-config-format-v1.html))\n" + }, + "coreOs": { + "type": "boolean" + }, + "cpuCap": { + "type": "integer" + }, + "cpuWeight": { + "type": "integer" + }, + "cpus": { + "type": "integer", + "description": "The number of CPUs the VM will have. Updates to this field will cause a stop and start of the VM if the new CPU value is\ngreater than the max CPU value. This can be determined with the following command: ``` $ xo-cli xo.getAllObjects\nfilter='json:{\"id\": \"cf7b5d7d-3cd5-6b7c-5025-5c935c8cd0b8\"}' | jq '.[].CPUs' { \"max\": 4, \"number\": 2 } # Updating the VM\nto use 3 CPUs would happen without stopping/starting the VM # Updating the VM to use 5 CPUs would stop/start the VM ```\n" + }, + "destroyCloudConfigVdiAfterBoot": { + "type": "boolean", + "description": "Determines whether the cloud config VDI should be deleted once the VM has booted. Defaults to `false`. If set to `true`,\npower_state must be set to `Running`.\n" + }, + "disks": { + "type": "array", + "items": { + "$ref": "#/types/xenorchestra:index/VmDisk:VmDisk" + }, + "description": "The disk the VM will have access to.\n" + }, + "expNestedHvm": { + "type": "boolean", + "description": "Boolean parameter that allows a VM to use nested virtualization.\n" + }, + "highAvailability": { + "type": "string", + "description": "The restart priority for the VM. Possible values are `best-effort`, `restart` and empty string (no restarts on failure.\nDefaults to empty string\n" + }, + "host": { + "type": "string" + }, + "hvmBootFirmware": { + "type": "string", + "description": "The firmware to use for the VM. Possible values are `bios` and `uefi`.\n" + }, + "installationMethod": { + "type": "string", + "description": "This cannot be used with `cdrom`. Possible values are `network` which allows a VM to boot via PXE.\n" + }, + "ipv4Addresses": { + "type": "array", + "items": { + "type": "string" + }, + "description": "This is only accessible if guest-tools is installed in the VM and if `expected_ip_cidr` is set on any network\ninterfaces. This will contain a list of the ipv4 addresses across all network interfaces in order. See the example\nterraform code for more details.\n" + }, + "ipv6Addresses": { + "type": "array", + "items": { + "type": "string" + }, + "description": "This is only accessible if guest-tools is installed in the VM and if `expected_ip_cidr` is set on any network\ninterfaces. This will contain a list of the ipv6 addresses across all network interfaces in order.\n" + }, + "memoryMax": { + "type": "integer", + "description": "The amount of memory in bytes the VM will have. Updates to this field will case a stop and start of the VM if the new\nvalue is greater than the dynamic memory max. This can be determined with the following command: ``` $ xo-cli\nxo.getAllObjects filter='json:{\"id\": \"cf7b5d7d-3cd5-6b7c-5025-5c935c8cd0b8\"}' | jq '.[].memory.dynamic' [ 2147483648, #\nmemory dynamic min 4294967296 # memory dynamic max (4GB) ] # Updating the VM to use 3GB of memory would happen without\nstopping/starting the VM # Updating the VM to use 5GB of memory would stop/start the VM ```\n" + }, + "nameDescription": { + "type": "string", + "description": "The description of the VM.\n" + }, + "nameLabel": { + "type": "string", + "description": "The name of the VM.\n" + }, + "networks": { + "type": "array", + "items": { + "$ref": "#/types/xenorchestra:index/VmNetwork:VmNetwork" + }, + "description": "The network for the VM.\n" + }, + "powerState": { + "type": "string", + "description": "The power state of the VM. This can be Running, Halted, Paused or Suspended.\n" + }, + "resourceSet": { + "type": "string" + }, + "startDelay": { + "type": "integer", + "description": "Number of seconds the VM should be delayed from starting.\n" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The tags (labels) applied to the given entity.\n" + }, + "template": { + "type": "string", + "description": "The ID of the VM template to create the new VM from.\n" + }, + "vga": { + "type": "string", + "description": "The video adapter the VM should use. Possible values include std and cirrus.\n" + }, + "videoram": { + "type": "integer", + "description": "The videoram option the VM should use. Possible values include 1, 2, 4, 8, 16\n" + }, + "xenstore": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "The key value pairs to be populated in xenstore.\n" + } + }, + "required": [ + "cpus", + "disks", + "ipv4Addresses", + "ipv6Addresses", + "memoryMax", + "nameLabel", + "networks", + "template" + ], + "inputProperties": { + "affinityHost": { + "type": "string", + "description": "The preferred host you would like the VM to run on. If changed on an existing VM it will require a reboot for the VM to\nbe rescheduled.\n" + }, + "autoPoweron": { + "type": "boolean", + "description": "If the VM will automatically turn on. Defaults to `false`.\n" + }, + "blockedOperations": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of operations on a VM that are not permitted. Examples include: clean_reboot, clean_shutdown, hard_reboot,\nhard_shutdown, pause, shutdown, suspend, destroy. This can be used to prevent a VM from being destroyed. The entire list\ncan be found here\n" + }, + "cdrom": { + "$ref": "#/types/xenorchestra:index/VmCdrom:VmCdrom", + "description": "The ISO that should be attached to VM. This allows you to create a VM from a diskless template (any templates available\nfrom `xe template-list`) and install the OS from the following ISO.\n" + }, + "cloneType": { + "type": "string", + "description": "The type of clone to perform for the VM. Possible values include `fast` or `full` and defaults to `fast`. In order to\nperform a `full` clone, the VM template must not be a disk template.\n" + }, + "cloudConfig": { + "type": "string", + "description": "The content of the cloud-init config to use. See the cloud init docs for more\n[information](https://cloudinit.readthedocs.io/en/latest/topics/examples.html).\n" + }, + "cloudNetworkConfig": { + "type": "string", + "description": "The content of the cloud-init network configuration for the VM (uses [version\n1](https://cloudinit.readthedocs.io/en/latest/topics/network-config-format-v1.html))\n" + }, + "coreOs": { + "type": "boolean" + }, + "cpuCap": { + "type": "integer" + }, + "cpuWeight": { + "type": "integer" + }, + "cpus": { + "type": "integer", + "description": "The number of CPUs the VM will have. Updates to this field will cause a stop and start of the VM if the new CPU value is\ngreater than the max CPU value. This can be determined with the following command: ``` $ xo-cli xo.getAllObjects\nfilter='json:{\"id\": \"cf7b5d7d-3cd5-6b7c-5025-5c935c8cd0b8\"}' | jq '.[].CPUs' { \"max\": 4, \"number\": 2 } # Updating the VM\nto use 3 CPUs would happen without stopping/starting the VM # Updating the VM to use 5 CPUs would stop/start the VM ```\n" + }, + "destroyCloudConfigVdiAfterBoot": { + "type": "boolean", + "description": "Determines whether the cloud config VDI should be deleted once the VM has booted. Defaults to `false`. If set to `true`,\npower_state must be set to `Running`.\n", + "willReplaceOnChanges": true + }, + "disks": { + "type": "array", + "items": { + "$ref": "#/types/xenorchestra:index/VmDisk:VmDisk" + }, + "description": "The disk the VM will have access to.\n" + }, + "expNestedHvm": { + "type": "boolean", + "description": "Boolean parameter that allows a VM to use nested virtualization.\n" + }, + "highAvailability": { + "type": "string", + "description": "The restart priority for the VM. Possible values are `best-effort`, `restart` and empty string (no restarts on failure.\nDefaults to empty string\n" + }, + "host": { + "type": "string" + }, + "hvmBootFirmware": { + "type": "string", + "description": "The firmware to use for the VM. Possible values are `bios` and `uefi`.\n" + }, + "installationMethod": { + "type": "string", + "description": "This cannot be used with `cdrom`. Possible values are `network` which allows a VM to boot via PXE.\n" + }, + "memoryMax": { + "type": "integer", + "description": "The amount of memory in bytes the VM will have. Updates to this field will case a stop and start of the VM if the new\nvalue is greater than the dynamic memory max. This can be determined with the following command: ``` $ xo-cli\nxo.getAllObjects filter='json:{\"id\": \"cf7b5d7d-3cd5-6b7c-5025-5c935c8cd0b8\"}' | jq '.[].memory.dynamic' [ 2147483648, #\nmemory dynamic min 4294967296 # memory dynamic max (4GB) ] # Updating the VM to use 3GB of memory would happen without\nstopping/starting the VM # Updating the VM to use 5GB of memory would stop/start the VM ```\n" + }, + "nameDescription": { + "type": "string", + "description": "The description of the VM.\n" + }, + "nameLabel": { + "type": "string", + "description": "The name of the VM.\n" + }, + "networks": { + "type": "array", + "items": { + "$ref": "#/types/xenorchestra:index/VmNetwork:VmNetwork" + }, + "description": "The network for the VM.\n" + }, + "powerState": { + "type": "string", + "description": "The power state of the VM. This can be Running, Halted, Paused or Suspended.\n" + }, + "resourceSet": { + "type": "string" + }, + "startDelay": { + "type": "integer", + "description": "Number of seconds the VM should be delayed from starting.\n" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The tags (labels) applied to the given entity.\n" + }, + "template": { + "type": "string", + "description": "The ID of the VM template to create the new VM from.\n", + "willReplaceOnChanges": true + }, + "vga": { + "type": "string", + "description": "The video adapter the VM should use. Possible values include std and cirrus.\n" + }, + "videoram": { + "type": "integer", + "description": "The videoram option the VM should use. Possible values include 1, 2, 4, 8, 16\n" + }, + "xenstore": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "The key value pairs to be populated in xenstore.\n" + } + }, + "requiredInputs": [ + "cpus", + "disks", + "memoryMax", + "nameLabel", + "networks", + "template" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering Vm resources.\n", + "properties": { + "affinityHost": { + "type": "string", + "description": "The preferred host you would like the VM to run on. If changed on an existing VM it will require a reboot for the VM to\nbe rescheduled.\n" + }, + "autoPoweron": { + "type": "boolean", + "description": "If the VM will automatically turn on. Defaults to `false`.\n" + }, + "blockedOperations": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of operations on a VM that are not permitted. Examples include: clean_reboot, clean_shutdown, hard_reboot,\nhard_shutdown, pause, shutdown, suspend, destroy. This can be used to prevent a VM from being destroyed. The entire list\ncan be found here\n" + }, + "cdrom": { + "$ref": "#/types/xenorchestra:index/VmCdrom:VmCdrom", + "description": "The ISO that should be attached to VM. This allows you to create a VM from a diskless template (any templates available\nfrom `xe template-list`) and install the OS from the following ISO.\n" + }, + "cloneType": { + "type": "string", + "description": "The type of clone to perform for the VM. Possible values include `fast` or `full` and defaults to `fast`. In order to\nperform a `full` clone, the VM template must not be a disk template.\n" + }, + "cloudConfig": { + "type": "string", + "description": "The content of the cloud-init config to use. See the cloud init docs for more\n[information](https://cloudinit.readthedocs.io/en/latest/topics/examples.html).\n" + }, + "cloudNetworkConfig": { + "type": "string", + "description": "The content of the cloud-init network configuration for the VM (uses [version\n1](https://cloudinit.readthedocs.io/en/latest/topics/network-config-format-v1.html))\n" + }, + "coreOs": { + "type": "boolean" + }, + "cpuCap": { + "type": "integer" + }, + "cpuWeight": { + "type": "integer" + }, + "cpus": { + "type": "integer", + "description": "The number of CPUs the VM will have. Updates to this field will cause a stop and start of the VM if the new CPU value is\ngreater than the max CPU value. This can be determined with the following command: ``` $ xo-cli xo.getAllObjects\nfilter='json:{\"id\": \"cf7b5d7d-3cd5-6b7c-5025-5c935c8cd0b8\"}' | jq '.[].CPUs' { \"max\": 4, \"number\": 2 } # Updating the VM\nto use 3 CPUs would happen without stopping/starting the VM # Updating the VM to use 5 CPUs would stop/start the VM ```\n" + }, + "destroyCloudConfigVdiAfterBoot": { + "type": "boolean", + "description": "Determines whether the cloud config VDI should be deleted once the VM has booted. Defaults to `false`. If set to `true`,\npower_state must be set to `Running`.\n", + "willReplaceOnChanges": true + }, + "disks": { + "type": "array", + "items": { + "$ref": "#/types/xenorchestra:index/VmDisk:VmDisk" + }, + "description": "The disk the VM will have access to.\n" + }, + "expNestedHvm": { + "type": "boolean", + "description": "Boolean parameter that allows a VM to use nested virtualization.\n" + }, + "highAvailability": { + "type": "string", + "description": "The restart priority for the VM. Possible values are `best-effort`, `restart` and empty string (no restarts on failure.\nDefaults to empty string\n" + }, + "host": { + "type": "string" + }, + "hvmBootFirmware": { + "type": "string", + "description": "The firmware to use for the VM. Possible values are `bios` and `uefi`.\n" + }, + "installationMethod": { + "type": "string", + "description": "This cannot be used with `cdrom`. Possible values are `network` which allows a VM to boot via PXE.\n" + }, + "ipv4Addresses": { + "type": "array", + "items": { + "type": "string" + }, + "description": "This is only accessible if guest-tools is installed in the VM and if `expected_ip_cidr` is set on any network\ninterfaces. This will contain a list of the ipv4 addresses across all network interfaces in order. See the example\nterraform code for more details.\n" + }, + "ipv6Addresses": { + "type": "array", + "items": { + "type": "string" + }, + "description": "This is only accessible if guest-tools is installed in the VM and if `expected_ip_cidr` is set on any network\ninterfaces. This will contain a list of the ipv6 addresses across all network interfaces in order.\n" + }, + "memoryMax": { + "type": "integer", + "description": "The amount of memory in bytes the VM will have. Updates to this field will case a stop and start of the VM if the new\nvalue is greater than the dynamic memory max. This can be determined with the following command: ``` $ xo-cli\nxo.getAllObjects filter='json:{\"id\": \"cf7b5d7d-3cd5-6b7c-5025-5c935c8cd0b8\"}' | jq '.[].memory.dynamic' [ 2147483648, #\nmemory dynamic min 4294967296 # memory dynamic max (4GB) ] # Updating the VM to use 3GB of memory would happen without\nstopping/starting the VM # Updating the VM to use 5GB of memory would stop/start the VM ```\n" + }, + "nameDescription": { + "type": "string", + "description": "The description of the VM.\n" + }, + "nameLabel": { + "type": "string", + "description": "The name of the VM.\n" + }, + "networks": { + "type": "array", + "items": { + "$ref": "#/types/xenorchestra:index/VmNetwork:VmNetwork" + }, + "description": "The network for the VM.\n" + }, + "powerState": { + "type": "string", + "description": "The power state of the VM. This can be Running, Halted, Paused or Suspended.\n" + }, + "resourceSet": { + "type": "string" + }, + "startDelay": { + "type": "integer", + "description": "Number of seconds the VM should be delayed from starting.\n" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The tags (labels) applied to the given entity.\n" + }, + "template": { + "type": "string", + "description": "The ID of the VM template to create the new VM from.\n", + "willReplaceOnChanges": true + }, + "vga": { + "type": "string", + "description": "The video adapter the VM should use. Possible values include std and cirrus.\n" + }, + "videoram": { + "type": "integer", + "description": "The videoram option the VM should use. Possible values include 1, 2, 4, 8, 16\n" + }, + "xenstore": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "The key value pairs to be populated in xenstore.\n" + } + }, + "type": "object" + } + }, + "xenorchestra:index/xoaBondedNetwork:XoaBondedNetwork": { + "description": "A resource for managing Bonded Xen Orchestra networks. See the XCP-ng [networking docs](https://xcp-ng.org/docs/networking.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as xenorchestra from \"@pulumi/xenorchestra\";\n\nconst host1 = xenorchestra.getXoaHost({\n nameLabel: \"Your host\",\n});\nconst eth1 = host1.then(host1 =\u003e xenorchestra.getXoaPif({\n device: \"eth1\",\n vlan: -1,\n hostId: host1.id,\n}));\nconst eth2 = host1.then(host1 =\u003e xenorchestra.getXoaPif({\n device: \"eth2\",\n vlan: -1,\n hostId: host1.id,\n}));\n// Create a bonded network from normal PIFs\nconst network = new xenorchestra.XoaBondedNetwork(\"network\", {\n nameLabel: \"new network name\",\n bondMode: \"active-backup\",\n poolId: host1.then(host1 =\u003e host1.poolId),\n pifIds: [\n eth1.then(eth1 =\u003e eth1.id),\n eth2.then(eth2 =\u003e eth2.id),\n ],\n});\nconst eth1Vlan = host1.then(host1 =\u003e xenorchestra.getXoaPif({\n device: \"eth1\",\n vlan: 15,\n hostId: host1.id,\n}));\nconst eth2Vlan = host1.then(host1 =\u003e xenorchestra.getXoaPif({\n device: \"eth2\",\n vlan: 15,\n hostId: host1.id,\n}));\n// Create a bonded network from normal PIFs\nconst networkVlan = new xenorchestra.XoaBondedNetwork(\"networkVlan\", {\n nameLabel: \"new network name\",\n bondMode: \"active-backup\",\n poolId: host1.then(host1 =\u003e host1.poolId),\n pifIds: [\n eth1Vlan.then(eth1Vlan =\u003e eth1Vlan.id),\n eth2Vlan.then(eth2Vlan =\u003e eth2Vlan.id),\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_xenorchestra as xenorchestra\n\nhost1 = xenorchestra.get_xoa_host(name_label=\"Your host\")\neth1 = xenorchestra.get_xoa_pif(device=\"eth1\",\n vlan=-1,\n host_id=host1.id)\neth2 = xenorchestra.get_xoa_pif(device=\"eth2\",\n vlan=-1,\n host_id=host1.id)\n# Create a bonded network from normal PIFs\nnetwork = xenorchestra.XoaBondedNetwork(\"network\",\n name_label=\"new network name\",\n bond_mode=\"active-backup\",\n pool_id=host1.pool_id,\n pif_ids=[\n eth1.id,\n eth2.id,\n ])\neth1_vlan = xenorchestra.get_xoa_pif(device=\"eth1\",\n vlan=15,\n host_id=host1.id)\neth2_vlan = xenorchestra.get_xoa_pif(device=\"eth2\",\n vlan=15,\n host_id=host1.id)\n# Create a bonded network from normal PIFs\nnetwork_vlan = xenorchestra.XoaBondedNetwork(\"networkVlan\",\n name_label=\"new network name\",\n bond_mode=\"active-backup\",\n pool_id=host1.pool_id,\n pif_ids=[\n eth1_vlan.id,\n eth2_vlan.id,\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Xenorchestra = Pulumi.Xenorchestra;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var host1 = Xenorchestra.GetXoaHost.Invoke(new()\n {\n NameLabel = \"Your host\",\n });\n\n var eth1 = Xenorchestra.GetXoaPif.Invoke(new()\n {\n Device = \"eth1\",\n Vlan = -1,\n HostId = host1.Apply(getXoaHostResult =\u003e getXoaHostResult.Id),\n });\n\n var eth2 = Xenorchestra.GetXoaPif.Invoke(new()\n {\n Device = \"eth2\",\n Vlan = -1,\n HostId = host1.Apply(getXoaHostResult =\u003e getXoaHostResult.Id),\n });\n\n // Create a bonded network from normal PIFs\n var network = new Xenorchestra.XoaBondedNetwork(\"network\", new()\n {\n NameLabel = \"new network name\",\n BondMode = \"active-backup\",\n PoolId = host1.Apply(getXoaHostResult =\u003e getXoaHostResult.PoolId),\n PifIds = new[]\n {\n eth1.Apply(getXoaPifResult =\u003e getXoaPifResult.Id),\n eth2.Apply(getXoaPifResult =\u003e getXoaPifResult.Id),\n },\n });\n\n var eth1Vlan = Xenorchestra.GetXoaPif.Invoke(new()\n {\n Device = \"eth1\",\n Vlan = 15,\n HostId = host1.Apply(getXoaHostResult =\u003e getXoaHostResult.Id),\n });\n\n var eth2Vlan = Xenorchestra.GetXoaPif.Invoke(new()\n {\n Device = \"eth2\",\n Vlan = 15,\n HostId = host1.Apply(getXoaHostResult =\u003e getXoaHostResult.Id),\n });\n\n // Create a bonded network from normal PIFs\n var networkVlan = new Xenorchestra.XoaBondedNetwork(\"networkVlan\", new()\n {\n NameLabel = \"new network name\",\n BondMode = \"active-backup\",\n PoolId = host1.Apply(getXoaHostResult =\u003e getXoaHostResult.PoolId),\n PifIds = new[]\n {\n eth1Vlan.Apply(getXoaPifResult =\u003e getXoaPifResult.Id),\n eth2Vlan.Apply(getXoaPifResult =\u003e getXoaPifResult.Id),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/vatesfr/pulumi-xenorchestra/sdk/go/xenorchestra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\thost1, err := xenorchestra.GetXoaHost(ctx, \u0026xenorchestra.GetXoaHostArgs{\n\t\t\tNameLabel: \"Your host\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teth1, err := xenorchestra.GetXoaPif(ctx, \u0026xenorchestra.GetXoaPifArgs{\n\t\t\tDevice: \"eth1\",\n\t\t\tVlan: -1,\n\t\t\tHostId: pulumi.StringRef(host1.Id),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teth2, err := xenorchestra.GetXoaPif(ctx, \u0026xenorchestra.GetXoaPifArgs{\n\t\t\tDevice: \"eth2\",\n\t\t\tVlan: -1,\n\t\t\tHostId: pulumi.StringRef(host1.Id),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a bonded network from normal PIFs\n\t\t_, err = xenorchestra.NewXoaBondedNetwork(ctx, \"network\", \u0026xenorchestra.XoaBondedNetworkArgs{\n\t\t\tNameLabel: pulumi.String(\"new network name\"),\n\t\t\tBondMode: pulumi.String(\"active-backup\"),\n\t\t\tPoolId: pulumi.String(host1.PoolId),\n\t\t\tPifIds: pulumi.StringArray{\n\t\t\t\tpulumi.String(eth1.Id),\n\t\t\t\tpulumi.String(eth2.Id),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teth1Vlan, err := xenorchestra.GetXoaPif(ctx, \u0026xenorchestra.GetXoaPifArgs{\n\t\t\tDevice: \"eth1\",\n\t\t\tVlan: 15,\n\t\t\tHostId: pulumi.StringRef(host1.Id),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teth2Vlan, err := xenorchestra.GetXoaPif(ctx, \u0026xenorchestra.GetXoaPifArgs{\n\t\t\tDevice: \"eth2\",\n\t\t\tVlan: 15,\n\t\t\tHostId: pulumi.StringRef(host1.Id),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a bonded network from normal PIFs\n\t\t_, err = xenorchestra.NewXoaBondedNetwork(ctx, \"networkVlan\", \u0026xenorchestra.XoaBondedNetworkArgs{\n\t\t\tNameLabel: pulumi.String(\"new network name\"),\n\t\t\tBondMode: pulumi.String(\"active-backup\"),\n\t\t\tPoolId: pulumi.String(host1.PoolId),\n\t\t\tPifIds: pulumi.StringArray{\n\t\t\t\tpulumi.String(eth1Vlan.Id),\n\t\t\t\tpulumi.String(eth2Vlan.Id),\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.xenorchestra.XenorchestraFunctions;\nimport com.pulumi.xenorchestra.inputs.GetXoaHostArgs;\nimport com.pulumi.xenorchestra.inputs.GetXoaPifArgs;\nimport com.pulumi.xenorchestra.XoaBondedNetwork;\nimport com.pulumi.xenorchestra.XoaBondedNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 host1 = XenorchestraFunctions.getXoaHost(GetXoaHostArgs.builder()\n .nameLabel(\"Your host\")\n .build());\n\n final var eth1 = XenorchestraFunctions.getXoaPif(GetXoaPifArgs.builder()\n .device(\"eth1\")\n .vlan(\"TODO: GenUnaryOpExpression\")\n .hostId(host1.applyValue(getXoaHostResult -\u003e getXoaHostResult.id()))\n .build());\n\n final var eth2 = XenorchestraFunctions.getXoaPif(GetXoaPifArgs.builder()\n .device(\"eth2\")\n .vlan(\"TODO: GenUnaryOpExpression\")\n .hostId(host1.applyValue(getXoaHostResult -\u003e getXoaHostResult.id()))\n .build());\n\n // Create a bonded network from normal PIFs\n var network = new XoaBondedNetwork(\"network\", XoaBondedNetworkArgs.builder() \n .nameLabel(\"new network name\")\n .bondMode(\"active-backup\")\n .poolId(host1.applyValue(getXoaHostResult -\u003e getXoaHostResult.poolId()))\n .pifIds( \n eth1.applyValue(getXoaPifResult -\u003e getXoaPifResult.id()),\n eth2.applyValue(getXoaPifResult -\u003e getXoaPifResult.id()))\n .build());\n\n final var eth1Vlan = XenorchestraFunctions.getXoaPif(GetXoaPifArgs.builder()\n .device(\"eth1\")\n .vlan(15)\n .hostId(host1.applyValue(getXoaHostResult -\u003e getXoaHostResult.id()))\n .build());\n\n final var eth2Vlan = XenorchestraFunctions.getXoaPif(GetXoaPifArgs.builder()\n .device(\"eth2\")\n .vlan(15)\n .hostId(host1.applyValue(getXoaHostResult -\u003e getXoaHostResult.id()))\n .build());\n\n // Create a bonded network from normal PIFs\n var networkVlan = new XoaBondedNetwork(\"networkVlan\", XoaBondedNetworkArgs.builder() \n .nameLabel(\"new network name\")\n .bondMode(\"active-backup\")\n .poolId(host1.applyValue(getXoaHostResult -\u003e getXoaHostResult.poolId()))\n .pifIds( \n eth1Vlan.applyValue(getXoaPifResult -\u003e getXoaPifResult.id()),\n eth2Vlan.applyValue(getXoaPifResult -\u003e getXoaPifResult.id()))\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "properties": { + "automatic": { + "type": "boolean" + }, + "bondMode": { + "type": "string", + "description": "The bond mode that should be used for this network.\n" + }, + "defaultIsLocked": { + "type": "boolean", + "description": "This argument controls whether the network should enforce VIF locking. This defaults to `false` which means that no filtering rules are applied.\n" + }, + "mtu": { + "type": "integer", + "description": "The MTU of the network. Defaults to `1500` if unspecified.\n" + }, + "nameDescription": { + "type": "string" + }, + "nameLabel": { + "type": "string", + "description": "The name label of the network.\n" + }, + "pifIds": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The pifs (uuid) that should be used for this network.\n" + }, + "poolId": { + "type": "string", + "description": "The pool id that this network should belong to.\n" + } + }, + "required": [ + "nameLabel", + "poolId" + ], + "inputProperties": { + "automatic": { + "type": "boolean" + }, + "bondMode": { + "type": "string", + "description": "The bond mode that should be used for this network.\n", + "willReplaceOnChanges": true + }, + "defaultIsLocked": { + "type": "boolean", + "description": "This argument controls whether the network should enforce VIF locking. This defaults to `false` which means that no filtering rules are applied.\n" + }, + "mtu": { + "type": "integer", + "description": "The MTU of the network. Defaults to `1500` if unspecified.\n", + "willReplaceOnChanges": true + }, + "nameDescription": { + "type": "string" + }, + "nameLabel": { + "type": "string", + "description": "The name label of the network.\n" + }, + "pifIds": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The pifs (uuid) that should be used for this network.\n", + "willReplaceOnChanges": true + }, + "poolId": { + "type": "string", + "description": "The pool id that this network should belong to.\n", + "willReplaceOnChanges": true + } + }, + "requiredInputs": [ + "nameLabel", + "poolId" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering XoaBondedNetwork resources.\n", + "properties": { + "automatic": { + "type": "boolean" + }, + "bondMode": { + "type": "string", + "description": "The bond mode that should be used for this network.\n", + "willReplaceOnChanges": true + }, + "defaultIsLocked": { + "type": "boolean", + "description": "This argument controls whether the network should enforce VIF locking. This defaults to `false` which means that no filtering rules are applied.\n" + }, + "mtu": { + "type": "integer", + "description": "The MTU of the network. Defaults to `1500` if unspecified.\n", + "willReplaceOnChanges": true + }, + "nameDescription": { + "type": "string" + }, + "nameLabel": { + "type": "string", + "description": "The name label of the network.\n" + }, + "pifIds": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The pifs (uuid) that should be used for this network.\n", + "willReplaceOnChanges": true + }, + "poolId": { + "type": "string", + "description": "The pool id that this network should belong to.\n", + "willReplaceOnChanges": true + } + }, + "type": "object" + }, + "aliases": [ + { + "type": "xenorchestra:index/bondedNetwork:BondedNetwork" + } + ] + }, + "xenorchestra:index/xoaNetwork:XoaNetwork": { + "description": "## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as xenorchestra from \"@pulumi/xenorchestra\";\n\nconst host1 = xenorchestra.getXoaHost({\n nameLabel: \"Your host\",\n});\n// Create a single server network private network\nconst privateNetwork = new xenorchestra.XoaNetwork(\"privateNetwork\", {\n nameLabel: \"new network name\",\n poolId: host1.then(host1 =\u003e host1.poolId),\n});\n// Create a network with a 22 VLAN tag from the eth0 device\nconst vlanNetwork = new xenorchestra.XoaNetwork(\"vlanNetwork\", {\n nameLabel: \"new network name\",\n poolId: host1.then(host1 =\u003e host1.poolId),\n sourcePifDevice: \"eth0\",\n vlan: 22,\n});\n```\n```python\nimport pulumi\nimport pulumi_xenorchestra as xenorchestra\n\nhost1 = xenorchestra.get_xoa_host(name_label=\"Your host\")\n# Create a single server network private network\nprivate_network = xenorchestra.XoaNetwork(\"privateNetwork\",\n name_label=\"new network name\",\n pool_id=host1.pool_id)\n# Create a network with a 22 VLAN tag from the eth0 device\nvlan_network = xenorchestra.XoaNetwork(\"vlanNetwork\",\n name_label=\"new network name\",\n pool_id=host1.pool_id,\n source_pif_device=\"eth0\",\n vlan=22)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Xenorchestra = Pulumi.Xenorchestra;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var host1 = Xenorchestra.GetXoaHost.Invoke(new()\n {\n NameLabel = \"Your host\",\n });\n\n // Create a single server network private network\n var privateNetwork = new Xenorchestra.XoaNetwork(\"privateNetwork\", new()\n {\n NameLabel = \"new network name\",\n PoolId = host1.Apply(getXoaHostResult =\u003e getXoaHostResult.PoolId),\n });\n\n // Create a network with a 22 VLAN tag from the eth0 device\n var vlanNetwork = new Xenorchestra.XoaNetwork(\"vlanNetwork\", new()\n {\n NameLabel = \"new network name\",\n PoolId = host1.Apply(getXoaHostResult =\u003e getXoaHostResult.PoolId),\n SourcePifDevice = \"eth0\",\n Vlan = 22,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/vatesfr/pulumi-xenorchestra/sdk/go/xenorchestra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\thost1, err := xenorchestra.GetXoaHost(ctx, \u0026xenorchestra.GetXoaHostArgs{\n\t\t\tNameLabel: \"Your host\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a single server network private network\n\t\t_, err = xenorchestra.NewXoaNetwork(ctx, \"privateNetwork\", \u0026xenorchestra.XoaNetworkArgs{\n\t\t\tNameLabel: pulumi.String(\"new network name\"),\n\t\t\tPoolId: pulumi.String(host1.PoolId),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a network with a 22 VLAN tag from the eth0 device\n\t\t_, err = xenorchestra.NewXoaNetwork(ctx, \"vlanNetwork\", \u0026xenorchestra.XoaNetworkArgs{\n\t\t\tNameLabel: pulumi.String(\"new network name\"),\n\t\t\tPoolId: pulumi.String(host1.PoolId),\n\t\t\tSourcePifDevice: pulumi.String(\"eth0\"),\n\t\t\tVlan: pulumi.Int(22),\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.xenorchestra.XenorchestraFunctions;\nimport com.pulumi.xenorchestra.inputs.GetXoaHostArgs;\nimport com.pulumi.xenorchestra.XoaNetwork;\nimport com.pulumi.xenorchestra.XoaNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 host1 = XenorchestraFunctions.getXoaHost(GetXoaHostArgs.builder()\n .nameLabel(\"Your host\")\n .build());\n\n // Create a single server network private network\n var privateNetwork = new XoaNetwork(\"privateNetwork\", XoaNetworkArgs.builder() \n .nameLabel(\"new network name\")\n .poolId(host1.applyValue(getXoaHostResult -\u003e getXoaHostResult.poolId()))\n .build());\n\n // Create a network with a 22 VLAN tag from the eth0 device\n var vlanNetwork = new XoaNetwork(\"vlanNetwork\", XoaNetworkArgs.builder() \n .nameLabel(\"new network name\")\n .poolId(host1.applyValue(getXoaHostResult -\u003e getXoaHostResult.poolId()))\n .sourcePifDevice(\"eth0\")\n .vlan(22)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Create a single server network private network\n privateNetwork:\n type: xenorchestra:XoaNetwork\n properties:\n nameLabel: new network name\n poolId: ${host1.poolId}\n # Create a network with a 22 VLAN tag from the eth0 device\n vlanNetwork:\n type: xenorchestra:XoaNetwork\n properties:\n nameLabel: new network name\n poolId: ${host1.poolId}\n sourcePifDevice: eth0\n vlan: 22\nvariables:\n host1:\n fn::invoke:\n Function: xenorchestra:getXoaHost\n Arguments:\n nameLabel: Your host\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "properties": { + "automatic": { + "type": "boolean" + }, + "defaultIsLocked": { + "type": "boolean", + "description": "This argument controls whether the network should enforce VIF locking. This defaults to `false` which means that no filtering rules are applied.\n" + }, + "mtu": { + "type": "integer", + "description": "The MTU of the network. Defaults to `1500` if unspecified.\n" + }, + "nameDescription": { + "type": "string" + }, + "nameLabel": { + "type": "string", + "description": "The name label of the network.\n" + }, + "nbd": { + "type": "boolean", + "description": "Whether the network should use a network block device. Defaults to `false` if unspecified.\n" + }, + "poolId": { + "type": "string", + "description": "The pool id that this network should belong to.\n" + }, + "sourcePifDevice": { + "type": "string", + "description": "The PIF device (eth0, eth1, etc) that will be used as an input during network creation. This parameter is required if a vlan is specified.\n" + }, + "vlan": { + "type": "integer", + "description": "The vlan to use for the network. Defaults to `0` meaning no VLAN.\n" + } + }, + "required": [ + "nameLabel", + "poolId" + ], + "inputProperties": { + "automatic": { + "type": "boolean" + }, + "defaultIsLocked": { + "type": "boolean", + "description": "This argument controls whether the network should enforce VIF locking. This defaults to `false` which means that no filtering rules are applied.\n" + }, + "mtu": { + "type": "integer", + "description": "The MTU of the network. Defaults to `1500` if unspecified.\n", + "willReplaceOnChanges": true + }, + "nameDescription": { + "type": "string" + }, + "nameLabel": { + "type": "string", + "description": "The name label of the network.\n" + }, + "nbd": { + "type": "boolean", + "description": "Whether the network should use a network block device. Defaults to `false` if unspecified.\n" + }, + "poolId": { + "type": "string", + "description": "The pool id that this network should belong to.\n", + "willReplaceOnChanges": true + }, + "sourcePifDevice": { + "type": "string", + "description": "The PIF device (eth0, eth1, etc) that will be used as an input during network creation. This parameter is required if a vlan is specified.\n", + "willReplaceOnChanges": true + }, + "vlan": { + "type": "integer", + "description": "The vlan to use for the network. Defaults to `0` meaning no VLAN.\n", + "willReplaceOnChanges": true + } + }, + "requiredInputs": [ + "nameLabel", + "poolId" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering XoaNetwork resources.\n", + "properties": { + "automatic": { + "type": "boolean" + }, + "defaultIsLocked": { + "type": "boolean", + "description": "This argument controls whether the network should enforce VIF locking. This defaults to `false` which means that no filtering rules are applied.\n" + }, + "mtu": { + "type": "integer", + "description": "The MTU of the network. Defaults to `1500` if unspecified.\n", + "willReplaceOnChanges": true + }, + "nameDescription": { + "type": "string" + }, + "nameLabel": { + "type": "string", + "description": "The name label of the network.\n" + }, + "nbd": { + "type": "boolean", + "description": "Whether the network should use a network block device. Defaults to `false` if unspecified.\n" + }, + "poolId": { + "type": "string", + "description": "The pool id that this network should belong to.\n", + "willReplaceOnChanges": true + }, + "sourcePifDevice": { + "type": "string", + "description": "The PIF device (eth0, eth1, etc) that will be used as an input during network creation. This parameter is required if a vlan is specified.\n", + "willReplaceOnChanges": true + }, + "vlan": { + "type": "integer", + "description": "The vlan to use for the network. Defaults to `0` meaning no VLAN.\n", + "willReplaceOnChanges": true + } + }, + "type": "object" + }, + "aliases": [ + { + "type": "xenorchestra:index/network:Network" + } + ] + } + }, + "functions": { + "xenorchestra:index/getCloudConfig:getCloudConfig": { + "deprecationMessage": "xenorchestra.index/getcloudconfig.getCloudConfig has been deprecated in favor of xenorchestra.index/getxoacloudconfig.getXoaCloudConfig", + "inputs": { + "description": "A collection of arguments for invoking getCloudConfig.\n", + "properties": { + "name": { + "type": "string" + } + }, + "type": "object", + "required": [ + "name" + ] + }, + "outputs": { + "description": "A collection of values returned by getCloudConfig.\n", + "properties": { + "id": { + "type": "string", + "description": "The provider-assigned unique ID for this managed resource.\n" + }, + "name": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "type": "object", + "required": [ + "name", + "template", + "id" + ] + } + }, + "xenorchestra:index/getHost:getHost": { + "deprecationMessage": "xenorchestra.index/gethost.getHost has been deprecated in favor of xenorchestra.index/getxoahost.getXoaHost", + "inputs": { + "description": "A collection of arguments for invoking getHost.\n", + "properties": { + "nameLabel": { + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "type": "object", + "required": [ + "nameLabel" + ] + }, + "outputs": { + "description": "A collection of values returned by getHost.\n", + "properties": { + "cpus": { + "type": "object", + "additionalProperties": { + "type": "integer" + } + }, + "id": { + "type": "string", + "description": "The provider-assigned unique ID for this managed resource.\n" + }, + "memory": { + "type": "integer" + }, + "memoryUsage": { + "type": "integer" + }, + "nameLabel": { + "type": "string" + }, + "poolId": { + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "type": "object", + "required": [ + "cpus", + "memory", + "memoryUsage", + "nameLabel", + "poolId", + "id" + ] + } + }, + "xenorchestra:index/getHosts:getHosts": { + "deprecationMessage": "xenorchestra.index/gethosts.getHosts has been deprecated in favor of xenorchestra.index/getxoahosts.getXoaHosts", + "inputs": { + "description": "A collection of arguments for invoking getHosts.\n", + "properties": { + "poolId": { + "type": "string" + }, + "sortBy": { + "type": "string" + }, + "sortOrder": { + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "type": "object", + "required": [ + "poolId" + ] + }, + "outputs": { + "description": "A collection of values returned by getHosts.\n", + "properties": { + "hosts": { + "type": "array", + "items": { + "$ref": "#/types/xenorchestra:index/getHostsHost:getHostsHost" + } + }, + "id": { + "type": "string", + "description": "The provider-assigned unique ID for this managed resource.\n" + }, + "master": { + "type": "string" + }, + "poolId": { + "type": "string" + }, + "sortBy": { + "type": "string" + }, + "sortOrder": { + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "type": "object", + "required": [ + "hosts", + "master", + "poolId", + "id" + ] + } + }, + "xenorchestra:index/getNetwork:getNetwork": { + "deprecationMessage": "xenorchestra.index/getnetwork.getNetwork has been deprecated in favor of xenorchestra.index/getxoanetwork.getXoaNetwork", + "inputs": { + "description": "A collection of arguments for invoking getNetwork.\n", + "properties": { + "bridge": { + "type": "string" + }, + "nameLabel": { + "type": "string" + }, + "poolId": { + "type": "string" + } + }, + "type": "object", + "required": [ + "nameLabel" + ] + }, + "outputs": { + "description": "A collection of values returned by getNetwork.\n", + "properties": { + "bridge": { + "type": "string" + }, + "id": { + "type": "string", + "description": "The provider-assigned unique ID for this managed resource.\n" + }, + "nameLabel": { + "type": "string" + }, + "poolId": { + "type": "string" + } + }, + "type": "object", + "required": [ + "bridge", + "nameLabel", + "id" + ] + } + }, + "xenorchestra:index/getPif:getPif": { + "deprecationMessage": "xenorchestra.index/getpif.getPif has been deprecated in favor of xenorchestra.index/getxoapif.getXoaPif", + "inputs": { + "description": "A collection of arguments for invoking getPif.\n", + "properties": { + "device": { + "type": "string" + }, + "hostId": { + "type": "string" + }, + "vlan": { + "type": "integer" + } + }, + "type": "object", + "required": [ + "device", + "vlan" + ] + }, + "outputs": { + "description": "A collection of values returned by getPif.\n", + "properties": { + "attached": { + "type": "boolean" + }, + "device": { + "type": "string" + }, + "host": { + "type": "string" + }, + "hostId": { + "type": "string" + }, + "id": { + "type": "string", + "description": "The provider-assigned unique ID for this managed resource.\n" + }, + "network": { + "type": "string" + }, + "poolId": { + "type": "string" + }, + "uuid": { + "type": "string" + }, + "vlan": { + "type": "integer" + } + }, + "type": "object", + "required": [ + "attached", + "device", + "host", + "hostId", + "network", + "poolId", + "uuid", + "vlan", + "id" + ] + } + }, + "xenorchestra:index/getPool:getPool": { + "deprecationMessage": "xenorchestra.index/getpool.getPool has been deprecated in favor of xenorchestra.index/getxoapool.getXoaPool", + "inputs": { + "description": "A collection of arguments for invoking getPool.\n", + "properties": { + "nameLabel": { + "type": "string" + } + }, + "type": "object", + "required": [ + "nameLabel" + ] + }, + "outputs": { + "description": "A collection of values returned by getPool.\n", + "properties": { + "cpus": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "description": { + "type": "string" + }, + "id": { + "type": "string", + "description": "The provider-assigned unique ID for this managed resource.\n" + }, + "master": { + "type": "string" + }, + "nameLabel": { + "type": "string" + } + }, + "type": "object", + "required": [ + "cpus", + "description", + "master", + "nameLabel", + "id" + ] + } + }, + "xenorchestra:index/getResourceSet:getResourceSet": { + "deprecationMessage": "xenorchestra.index/getresourceset.getResourceSet has been deprecated in favor of xenorchestra.index/getxoaresourceset.getXoaResourceSet", + "inputs": { + "description": "A collection of arguments for invoking getResourceSet.\n", + "properties": { + "name": { + "type": "string" + } + }, + "type": "object", + "required": [ + "name" + ] + }, + "outputs": { + "description": "A collection of values returned by getResourceSet.\n", + "properties": { + "id": { + "type": "string", + "description": "The provider-assigned unique ID for this managed resource.\n" + }, + "name": { + "type": "string" + } + }, + "type": "object", + "required": [ + "name", + "id" + ] + } + }, + "xenorchestra:index/getSr:getSr": { + "deprecationMessage": "xenorchestra.index/getsr.getSr has been deprecated in favor of xenorchestra.index/getxoastoragerepository.getXoaStorageRepository", + "inputs": { + "description": "A collection of arguments for invoking getSr.\n", + "properties": { + "nameLabel": { + "type": "string" + }, + "poolId": { + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "type": "object", + "required": [ + "nameLabel" + ] + }, + "outputs": { + "description": "A collection of values returned by getSr.\n", + "properties": { + "container": { + "type": "string" + }, + "id": { + "type": "string", + "description": "The provider-assigned unique ID for this managed resource.\n" + }, + "nameLabel": { + "type": "string" + }, + "physicalUsage": { + "type": "integer" + }, + "poolId": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "srType": { + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "usage": { + "type": "integer" + }, + "uuid": { + "type": "string" + } + }, + "type": "object", + "required": [ + "container", + "nameLabel", + "physicalUsage", + "size", + "srType", + "usage", + "uuid", + "id" + ] + } + }, + "xenorchestra:index/getTemplate:getTemplate": { + "deprecationMessage": "xenorchestra.index/gettemplate.getTemplate has been deprecated in favor of xenorchestra.index/getxoatemplate.getXoaTemplate", + "inputs": { + "description": "A collection of arguments for invoking getTemplate.\n", + "properties": { + "nameLabel": { + "type": "string" + }, + "poolId": { + "type": "string" + } + }, + "type": "object", + "required": [ + "nameLabel" + ] + }, + "outputs": { + "description": "A collection of values returned by getTemplate.\n", + "properties": { + "id": { + "type": "string", + "description": "The provider-assigned unique ID for this managed resource.\n" + }, + "nameLabel": { + "type": "string" + }, + "poolId": { + "type": "string" + }, + "uuid": { + "type": "string" + } + }, + "type": "object", + "required": [ + "nameLabel", + "uuid", + "id" + ] + } + }, + "xenorchestra:index/getUser:getUser": { + "deprecationMessage": "xenorchestra.index/getuser.getUser has been deprecated in favor of xenorchestra.index/getxoauser.getXoaUser", + "inputs": { + "description": "A collection of arguments for invoking getUser.\n", + "properties": { + "searchInSession": { + "type": "boolean" + }, + "username": { + "type": "string" + } + }, + "type": "object", + "required": [ + "username" + ] + }, + "outputs": { + "description": "A collection of values returned by getUser.\n", + "properties": { + "id": { + "type": "string", + "description": "The provider-assigned unique ID for this managed resource.\n" + }, + "searchInSession": { + "type": "boolean" + }, + "username": { + "type": "string" + } + }, + "type": "object", + "required": [ + "username", + "id" + ] + } + }, + "xenorchestra:index/getVdi:getVdi": { + "deprecationMessage": "xenorchestra.index/getvdi.getVdi has been deprecated in favor of xenorchestra.index/getxoavdi.getXoaVdi", + "inputs": { + "description": "A collection of arguments for invoking getVdi.\n", + "properties": { + "id": { + "type": "string" + }, + "nameLabel": { + "type": "string" + }, + "poolId": { + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "type": "object" + }, + "outputs": { + "description": "A collection of values returned by getVdi.\n", + "properties": { + "id": { + "type": "string" + }, + "nameLabel": { + "type": "string" + }, + "parent": { + "type": "string" + }, + "poolId": { + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "type": "object", + "required": [ + "id", + "parent" + ] + } + }, + "xenorchestra:index/getVms:getVms": { + "deprecationMessage": "xenorchestra.index/getvms.getVms has been deprecated in favor of xenorchestra.index/getxoavms.getXoaVms", + "inputs": { + "description": "A collection of arguments for invoking getVms.\n", + "properties": { + "host": { + "type": "string" + }, + "poolId": { + "type": "string" + }, + "powerState": { + "type": "string" + } + }, + "type": "object", + "required": [ + "poolId" + ] + }, + "outputs": { + "description": "A collection of values returned by getVms.\n", + "properties": { + "host": { + "type": "string" + }, + "id": { + "type": "string", + "description": "The provider-assigned unique ID for this managed resource.\n" + }, + "poolId": { + "type": "string" + }, + "powerState": { + "type": "string" + }, + "vms": { + "type": "array", + "items": { + "$ref": "#/types/xenorchestra:index/getVmsVm:getVmsVm" + } + } + }, + "type": "object", + "required": [ + "poolId", + "vms", + "id" + ] + } + }, + "xenorchestra:index/getXoaCloudConfig:getXoaCloudConfig": { + "description": "## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as xenorchestra from \"@pulumi/xenorchestra\";\n\nconst cloudConfig = xenorchestra.getXoaCloudConfig({\n name: \"Name of cloud config\",\n});\n```\n```python\nimport pulumi\nimport pulumi_xenorchestra as xenorchestra\n\ncloud_config = xenorchestra.get_xoa_cloud_config(name=\"Name of cloud config\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Xenorchestra = Pulumi.Xenorchestra;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cloudConfig = Xenorchestra.GetXoaCloudConfig.Invoke(new()\n {\n Name = \"Name of cloud config\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/vatesfr/pulumi-xenorchestra/sdk/go/xenorchestra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := xenorchestra.GetXoaCloudConfig(ctx, \u0026xenorchestra.GetXoaCloudConfigArgs{\n\t\t\tName: \"Name of cloud config\",\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.xenorchestra.XenorchestraFunctions;\nimport com.pulumi.xenorchestra.inputs.GetXoaCloudConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 cloudConfig = XenorchestraFunctions.getXoaCloudConfig(GetXoaCloudConfigArgs.builder()\n .name(\"Name of cloud config\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n cloudConfig:\n fn::invoke:\n Function: xenorchestra:getXoaCloudConfig\n Arguments:\n name: Name of cloud config\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "inputs": { + "description": "A collection of arguments for invoking getXoaCloudConfig.\n", + "properties": { + "name": { + "type": "string", + "description": "The name of the cloud config you want to look up.\n" + } + }, + "type": "object", + "required": [ + "name" + ] + }, + "outputs": { + "description": "A collection of values returned by getXoaCloudConfig.\n", + "properties": { + "id": { + "type": "string", + "description": "The provider-assigned unique ID for this managed resource.\n" + }, + "name": { + "type": "string", + "description": "The name of the cloud config you want to look up.\n" + }, + "template": { + "type": "string", + "description": "The contents of the cloud-config.\n" + } + }, + "type": "object", + "required": [ + "name", + "template", + "id" + ] + } + }, + "xenorchestra:index/getXoaHost:getXoaHost": { + "description": "## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as xenorchestra from \"@pulumi/xenorchestra\";\n\nconst host1 = xenorchestra.getXoaHost({\n nameLabel: \"Your host\",\n});\nconst node = new xenorchestra.Vm(\"node\", {affinityHost: host1.then(host1 =\u003e host1.id)});\n//...\n```\n```python\nimport pulumi\nimport pulumi_xenorchestra as xenorchestra\n\nhost1 = xenorchestra.get_xoa_host(name_label=\"Your host\")\nnode = xenorchestra.Vm(\"node\", affinity_host=host1.id)\n#...\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Xenorchestra = Pulumi.Xenorchestra;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var host1 = Xenorchestra.GetXoaHost.Invoke(new()\n {\n NameLabel = \"Your host\",\n });\n\n var node = new Xenorchestra.Vm(\"node\", new()\n {\n AffinityHost = host1.Apply(getXoaHostResult =\u003e getXoaHostResult.Id),\n });\n\n //...\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/vatesfr/pulumi-xenorchestra/sdk/go/xenorchestra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\thost1, err := xenorchestra.GetXoaHost(ctx, \u0026xenorchestra.GetXoaHostArgs{\n\t\t\tNameLabel: \"Your host\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = xenorchestra.NewVm(ctx, \"node\", \u0026xenorchestra.VmArgs{\n\t\t\tAffinityHost: pulumi.String(host1.Id),\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.xenorchestra.XenorchestraFunctions;\nimport com.pulumi.xenorchestra.inputs.GetXoaHostArgs;\nimport com.pulumi.xenorchestra.Vm;\nimport com.pulumi.xenorchestra.VmArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 host1 = XenorchestraFunctions.getXoaHost(GetXoaHostArgs.builder()\n .nameLabel(\"Your host\")\n .build());\n\n var node = new Vm(\"node\", VmArgs.builder() \n .affinityHost(host1.applyValue(getXoaHostResult -\u003e getXoaHostResult.id()))\n .build());\n\n //...\n }\n}\n```\n```yaml\nresources:\n node:\n type: xenorchestra:Vm\n properties:\n # ...\n affinityHost: ${host1.id}\nvariables:\n host1:\n fn::invoke:\n Function: xenorchestra:getXoaHost\n Arguments:\n nameLabel: Your host\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "inputs": { + "description": "A collection of arguments for invoking getXoaHost.\n", + "properties": { + "nameLabel": { + "type": "string", + "description": "The name label of the host.\n" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The tags (labels) applied to the given entity.\n" + } + }, + "type": "object", + "required": [ + "nameLabel" + ] + }, + "outputs": { + "description": "A collection of values returned by getXoaHost.\n", + "properties": { + "cpus": { + "type": "object", + "additionalProperties": { + "type": "integer" + }, + "description": "CPU information about the host. The 'cores' key will contain the number of cpu cores and the 'sockets' key will contain the number of sockets.\n" + }, + "id": { + "type": "string", + "description": "The provider-assigned unique ID for this managed resource.\n" + }, + "memory": { + "type": "integer", + "description": "The memory size of the host.\n" + }, + "memoryUsage": { + "type": "integer", + "description": "The memory usage of the host.\n" + }, + "nameLabel": { + "type": "string", + "description": "The name label of the host.\n" + }, + "poolId": { + "type": "string", + "description": "Id of the pool that the host belongs to.\n" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The tags (labels) applied to the given entity.\n" + } + }, + "type": "object", + "required": [ + "cpus", + "memory", + "memoryUsage", + "nameLabel", + "poolId", + "id" + ] + } + }, + "xenorchestra:index/getXoaHosts:getXoaHosts": { + "description": "Use this data source to filter Xenorchestra hosts by certain criteria (name_label, tags) for use in other resources.\n\n", + "inputs": { + "description": "A collection of arguments for invoking getXoaHosts.\n", + "properties": { + "poolId": { + "type": "string" + }, + "sortBy": { + "type": "string", + "description": "The host field to sort the results by (id and name_label are supported).\n" + }, + "sortOrder": { + "type": "string", + "description": "Valid options are `asc` or `desc` and sort order is applied to `sort_by` argument.\n" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "type": "object", + "required": [ + "poolId" + ] + }, + "outputs": { + "description": "A collection of values returned by getXoaHosts.\n", + "properties": { + "hosts": { + "type": "array", + "items": { + "$ref": "#/types/xenorchestra:index/getXoaHostsHost:getXoaHostsHost" + }, + "description": "The resulting hosts after applying the argument filtering.\n" + }, + "id": { + "type": "string", + "description": "The provider-assigned unique ID for this managed resource.\n" + }, + "master": { + "type": "string", + "description": "The primary host of the pool.\n" + }, + "poolId": { + "type": "string", + "description": "The pool id used to filter the resulting hosts by.\n" + }, + "sortBy": { + "type": "string", + "description": "The host field to sort the results by (id and name_label are supported).\n" + }, + "sortOrder": { + "type": "string", + "description": "Valid options are `asc` or `desc` and sort order is applied to `sort_by` argument.\n" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The tags (labels) applied to the given entity.\n" + } + }, + "type": "object", + "required": [ + "hosts", + "master", + "poolId", + "id" + ] + } + }, + "xenorchestra:index/getXoaNetwork:getXoaNetwork": { + "description": "## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as xenorchestra from \"@pulumi/xenorchestra\";\n\nconst net = xenorchestra.getXoaNetwork({\n nameLabel: \"Pool-wide network associated with eth0\",\n});\nconst demo_vm = new xenorchestra.Vm(\"demo-vm\", {networks: [{\n networkId: net.then(net =\u003e net.id),\n}]});\n```\n```python\nimport pulumi\nimport pulumi_xenorchestra as xenorchestra\n\nnet = xenorchestra.get_xoa_network(name_label=\"Pool-wide network associated with eth0\")\ndemo_vm = xenorchestra.Vm(\"demo-vm\", networks=[xenorchestra.VmNetworkArgs(\n network_id=net.id,\n)])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Xenorchestra = Pulumi.Xenorchestra;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var net = Xenorchestra.GetXoaNetwork.Invoke(new()\n {\n NameLabel = \"Pool-wide network associated with eth0\",\n });\n\n var demo_vm = new Xenorchestra.Vm(\"demo-vm\", new()\n {\n Networks = new[]\n {\n new Xenorchestra.Inputs.VmNetworkArgs\n {\n NetworkId = net.Apply(getXoaNetworkResult =\u003e getXoaNetworkResult.Id),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/vatesfr/pulumi-xenorchestra/sdk/go/xenorchestra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnet, err := xenorchestra.LookupXoaNetwork(ctx, \u0026xenorchestra.LookupXoaNetworkArgs{\n\t\t\tNameLabel: \"Pool-wide network associated with eth0\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = xenorchestra.NewVm(ctx, \"demo-vm\", \u0026xenorchestra.VmArgs{\n\t\t\tNetworks: xenorchestra.VmNetworkArray{\n\t\t\t\t\u0026xenorchestra.VmNetworkArgs{\n\t\t\t\t\tNetworkId: pulumi.String(net.Id),\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.xenorchestra.XenorchestraFunctions;\nimport com.pulumi.xenorchestra.inputs.GetXoaNetworkArgs;\nimport com.pulumi.xenorchestra.Vm;\nimport com.pulumi.xenorchestra.VmArgs;\nimport com.pulumi.xenorchestra.inputs.VmNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 net = XenorchestraFunctions.getXoaNetwork(GetXoaNetworkArgs.builder()\n .nameLabel(\"Pool-wide network associated with eth0\")\n .build());\n\n var demo_vm = new Vm(\"demo-vm\", VmArgs.builder() \n .networks(VmNetworkArgs.builder()\n .networkId(net.applyValue(getXoaNetworkResult -\u003e getXoaNetworkResult.id()))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n demo-vm:\n type: xenorchestra:Vm\n properties:\n # ...\n networks:\n - networkId: ${net.id}\nvariables:\n net:\n fn::invoke:\n Function: xenorchestra:getXoaNetwork\n Arguments:\n nameLabel: Pool-wide network associated with eth0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "inputs": { + "description": "A collection of arguments for invoking getXoaNetwork.\n", + "properties": { + "bridge": { + "type": "string", + "description": "The name of the bridge network interface.\n" + }, + "nameLabel": { + "type": "string", + "description": "The name of the network.\n" + }, + "poolId": { + "type": "string", + "description": "The pool the network is associated with.\n" + } + }, + "type": "object", + "required": [ + "nameLabel" + ] + }, + "outputs": { + "description": "A collection of values returned by getXoaNetwork.\n", + "properties": { + "bridge": { + "type": "string", + "description": "The name of the bridge network interface.\n" + }, + "id": { + "type": "string", + "description": "The provider-assigned unique ID for this managed resource.\n" + }, + "nameLabel": { + "type": "string", + "description": "The name of the network.\n" + }, + "poolId": { + "type": "string", + "description": "The pool the network is associated with.\n" + } + }, + "type": "object", + "required": [ + "bridge", + "nameLabel", + "id" + ] + } + }, + "xenorchestra:index/getXoaPif:getXoaPif": { + "description": "## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as xenorchestra from \"@pulumi/xenorchestra\";\n\nconst eth0 = xenorchestra.getXoaPif({\n device: \"eth0\",\n vlan: -1,\n});\nconst demo_vm = new xenorchestra.Vm(\"demo-vm\", {networks: [{\n networkId: eth0.then(eth0 =\u003e eth0.network),\n}]});\n// ...\n```\n```python\nimport pulumi\nimport pulumi_xenorchestra as xenorchestra\n\neth0 = xenorchestra.get_xoa_pif(device=\"eth0\",\n vlan=-1)\ndemo_vm = xenorchestra.Vm(\"demo-vm\", networks=[xenorchestra.VmNetworkArgs(\n network_id=eth0.network,\n)])\n# ...\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Xenorchestra = Pulumi.Xenorchestra;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var eth0 = Xenorchestra.GetXoaPif.Invoke(new()\n {\n Device = \"eth0\",\n Vlan = -1,\n });\n\n var demo_vm = new Xenorchestra.Vm(\"demo-vm\", new()\n {\n Networks = new[]\n {\n new Xenorchestra.Inputs.VmNetworkArgs\n {\n NetworkId = eth0.Apply(getXoaPifResult =\u003e getXoaPifResult.Network),\n },\n },\n });\n\n // ...\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/vatesfr/pulumi-xenorchestra/sdk/go/xenorchestra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\teth0, err := xenorchestra.GetXoaPif(ctx, \u0026xenorchestra.GetXoaPifArgs{\n\t\t\tDevice: \"eth0\",\n\t\t\tVlan: -1,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = xenorchestra.NewVm(ctx, \"demo-vm\", \u0026xenorchestra.VmArgs{\n\t\t\tNetworks: xenorchestra.VmNetworkArray{\n\t\t\t\t\u0026xenorchestra.VmNetworkArgs{\n\t\t\t\t\tNetworkId: pulumi.String(eth0.Network),\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.xenorchestra.XenorchestraFunctions;\nimport com.pulumi.xenorchestra.inputs.GetXoaPifArgs;\nimport com.pulumi.xenorchestra.Vm;\nimport com.pulumi.xenorchestra.VmArgs;\nimport com.pulumi.xenorchestra.inputs.VmNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 eth0 = XenorchestraFunctions.getXoaPif(GetXoaPifArgs.builder()\n .device(\"eth0\")\n .vlan(\"TODO: GenUnaryOpExpression\")\n .build());\n\n var demo_vm = new Vm(\"demo-vm\", VmArgs.builder() \n .networks(VmNetworkArgs.builder()\n .networkId(eth0.applyValue(getXoaPifResult -\u003e getXoaPifResult.network()))\n .build())\n .build());\n\n // ...\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "inputs": { + "description": "A collection of arguments for invoking getXoaPif.\n", + "properties": { + "device": { + "type": "string", + "description": "The name of the network device. Examples include eth0, eth1, etc. See `ifconfig` for possible devices.\n" + }, + "hostId": { + "type": "string", + "description": "The ID of the host that the PIF belongs to.\n" + }, + "vlan": { + "type": "integer", + "description": "The VLAN the PIF belongs to.\n" + } + }, + "type": "object", + "required": [ + "device", + "vlan" + ] + }, + "outputs": { + "description": "A collection of values returned by getXoaPif.\n", + "properties": { + "attached": { + "type": "boolean", + "description": "If the PIF is attached to the network.\n" + }, + "device": { + "type": "string", + "description": "The name of the network device. Examples include eth0, eth1, etc. See `ifconfig` for possible devices.\n" + }, + "host": { + "type": "string", + "description": "The host the PIF is associated with.\n" + }, + "hostId": { + "type": "string", + "description": "The ID of the host that the PIF belongs to.\n" + }, + "id": { + "type": "string", + "description": "The provider-assigned unique ID for this managed resource.\n" + }, + "network": { + "type": "string", + "description": "The network the PIF is associated with.\n" + }, + "poolId": { + "type": "string", + "description": "The pool the PIF is associated with.\n" + }, + "uuid": { + "type": "string", + "description": "The uuid of the PIF.\n" + }, + "vlan": { + "type": "integer", + "description": "The VLAN the PIF belongs to.\n" + } + }, + "type": "object", + "required": [ + "attached", + "device", + "host", + "hostId", + "network", + "poolId", + "uuid", + "vlan", + "id" + ] + } + }, + "xenorchestra:index/getXoaPool:getXoaPool": { + "description": "Provides information about a pool.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as xenorchestra from \"@pulumi/xenorchestra\";\n\nconst pool = xenorchestra.getXoaPool({\n nameLabel: \"Your pool\",\n});\nconst localStorage = pool.then(pool =\u003e xenorchestra.getXoaStorageRepository({\n nameLabel: \"Your storage repository label\",\n poolId: pool.id,\n}));\n```\n```python\nimport pulumi\nimport pulumi_xenorchestra as xenorchestra\n\npool = xenorchestra.get_xoa_pool(name_label=\"Your pool\")\nlocal_storage = xenorchestra.get_xoa_storage_repository(name_label=\"Your storage repository label\",\n pool_id=pool.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Xenorchestra = Pulumi.Xenorchestra;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var pool = Xenorchestra.GetXoaPool.Invoke(new()\n {\n NameLabel = \"Your pool\",\n });\n\n var localStorage = Xenorchestra.GetXoaStorageRepository.Invoke(new()\n {\n NameLabel = \"Your storage repository label\",\n PoolId = pool.Apply(getXoaPoolResult =\u003e getXoaPoolResult.Id),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/vatesfr/pulumi-xenorchestra/sdk/go/xenorchestra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpool, err := xenorchestra.GetXoaPool(ctx, \u0026xenorchestra.GetXoaPoolArgs{\n\t\t\tNameLabel: \"Your pool\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = xenorchestra.GetXoaStorageRepository(ctx, \u0026xenorchestra.GetXoaStorageRepositoryArgs{\n\t\t\tNameLabel: \"Your storage repository label\",\n\t\t\tPoolId: pulumi.StringRef(pool.Id),\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.xenorchestra.XenorchestraFunctions;\nimport com.pulumi.xenorchestra.inputs.GetXoaPoolArgs;\nimport com.pulumi.xenorchestra.inputs.GetXoaStorageRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 pool = XenorchestraFunctions.getXoaPool(GetXoaPoolArgs.builder()\n .nameLabel(\"Your pool\")\n .build());\n\n final var localStorage = XenorchestraFunctions.getXoaStorageRepository(GetXoaStorageRepositoryArgs.builder()\n .nameLabel(\"Your storage repository label\")\n .poolId(pool.applyValue(getXoaPoolResult -\u003e getXoaPoolResult.id()))\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n pool:\n fn::invoke:\n Function: xenorchestra:getXoaPool\n Arguments:\n nameLabel: Your pool\n localStorage:\n fn::invoke:\n Function: xenorchestra:getXoaStorageRepository\n Arguments:\n nameLabel: Your storage repository label\n poolId: ${pool.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "inputs": { + "description": "A collection of arguments for invoking getXoaPool.\n", + "properties": { + "nameLabel": { + "type": "string", + "description": "The name_label of the pool to look up.\n" + } + }, + "type": "object", + "required": [ + "nameLabel" + ] + }, + "outputs": { + "description": "A collection of values returned by getXoaPool.\n", + "properties": { + "cpus": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "CPU information about the pool. The 'cores' key will contain the number of cpu cores and the 'sockets' key will contain the number of sockets.\n" + }, + "description": { + "type": "string", + "description": "The description of the pool.\n" + }, + "id": { + "type": "string", + "description": "The provider-assigned unique ID for this managed resource.\n" + }, + "master": { + "type": "string", + "description": "The id of the primary instance in the pool.\n" + }, + "nameLabel": { + "type": "string", + "description": "The name_label of the pool to look up.\n" + } + }, + "type": "object", + "required": [ + "cpus", + "description", + "master", + "nameLabel", + "id" + ] + } + }, + "xenorchestra:index/getXoaResourceSet:getXoaResourceSet": { + "description": "## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as xenorchestra from \"@pulumi/xenorchestra\";\n\nconst rs = xenorchestra.getXoaResourceSet({\n name: \"my resource set\",\n});\n```\n```python\nimport pulumi\nimport pulumi_xenorchestra as xenorchestra\n\nrs = xenorchestra.get_xoa_resource_set(name=\"my resource set\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Xenorchestra = Pulumi.Xenorchestra;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var rs = Xenorchestra.GetXoaResourceSet.Invoke(new()\n {\n Name = \"my resource set\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/vatesfr/pulumi-xenorchestra/sdk/go/xenorchestra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := xenorchestra.GetXoaResourceSet(ctx, \u0026xenorchestra.GetXoaResourceSetArgs{\n\t\t\tName: \"my resource set\",\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.xenorchestra.XenorchestraFunctions;\nimport com.pulumi.xenorchestra.inputs.GetXoaResourceSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 rs = XenorchestraFunctions.getXoaResourceSet(GetXoaResourceSetArgs.builder()\n .name(\"my resource set\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n rs:\n fn::invoke:\n Function: xenorchestra:getXoaResourceSet\n Arguments:\n name: my resource set\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "inputs": { + "description": "A collection of arguments for invoking getXoaResourceSet.\n", + "properties": { + "name": { + "type": "string", + "description": "The name of the resource set to look up.\n" + } + }, + "type": "object", + "required": [ + "name" + ] + }, + "outputs": { + "description": "A collection of values returned by getXoaResourceSet.\n", + "properties": { + "id": { + "type": "string", + "description": "The provider-assigned unique ID for this managed resource.\n" + }, + "name": { + "type": "string", + "description": "The name of the resource set to look up.\n" + } + }, + "type": "object", + "required": [ + "name", + "id" + ] + } + }, + "xenorchestra:index/getXoaStorageRepository:getXoaStorageRepository": { + "description": "## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as xenorchestra from \"@pulumi/xenorchestra\";\n\nconst localStorage = xenorchestra.getXoaStorageRepository({\n nameLabel: \"Your storage repository label\",\n});\nconst demo_vm = new xenorchestra.Vm(\"demo-vm\", {disks: [{\n srId: localStorage.then(localStorage =\u003e localStorage.id),\n nameLabel: \"Ubuntu Bionic Beaver 18.04_imavo\",\n size: 32212254720,\n}]});\n// ...\n```\n```python\nimport pulumi\nimport pulumi_xenorchestra as xenorchestra\n\nlocal_storage = xenorchestra.get_xoa_storage_repository(name_label=\"Your storage repository label\")\ndemo_vm = xenorchestra.Vm(\"demo-vm\", disks=[xenorchestra.VmDiskArgs(\n sr_id=local_storage.id,\n name_label=\"Ubuntu Bionic Beaver 18.04_imavo\",\n size=32212254720,\n)])\n# ...\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Xenorchestra = Pulumi.Xenorchestra;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var localStorage = Xenorchestra.GetXoaStorageRepository.Invoke(new()\n {\n NameLabel = \"Your storage repository label\",\n });\n\n var demo_vm = new Xenorchestra.Vm(\"demo-vm\", new()\n {\n Disks = new[]\n {\n new Xenorchestra.Inputs.VmDiskArgs\n {\n SrId = localStorage.Apply(getXoaStorageRepositoryResult =\u003e getXoaStorageRepositoryResult.Id),\n NameLabel = \"Ubuntu Bionic Beaver 18.04_imavo\",\n Size = 32212254720,\n },\n },\n });\n\n // ...\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/vatesfr/pulumi-xenorchestra/sdk/go/xenorchestra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tlocalStorage, err := xenorchestra.GetXoaStorageRepository(ctx, \u0026xenorchestra.GetXoaStorageRepositoryArgs{\n\t\t\tNameLabel: \"Your storage repository label\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = xenorchestra.NewVm(ctx, \"demo-vm\", \u0026xenorchestra.VmArgs{\n\t\t\tDisks: xenorchestra.VmDiskArray{\n\t\t\t\t\u0026xenorchestra.VmDiskArgs{\n\t\t\t\t\tSrId: pulumi.String(localStorage.Id),\n\t\t\t\t\tNameLabel: pulumi.String(\"Ubuntu Bionic Beaver 18.04_imavo\"),\n\t\t\t\t\tSize: pulumi.Int(32212254720),\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.xenorchestra.XenorchestraFunctions;\nimport com.pulumi.xenorchestra.inputs.GetXoaStorageRepositoryArgs;\nimport com.pulumi.xenorchestra.Vm;\nimport com.pulumi.xenorchestra.VmArgs;\nimport com.pulumi.xenorchestra.inputs.VmDiskArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 localStorage = XenorchestraFunctions.getXoaStorageRepository(GetXoaStorageRepositoryArgs.builder()\n .nameLabel(\"Your storage repository label\")\n .build());\n\n var demo_vm = new Vm(\"demo-vm\", VmArgs.builder() \n .disks(VmDiskArgs.builder()\n .srId(localStorage.applyValue(getXoaStorageRepositoryResult -\u003e getXoaStorageRepositoryResult.id()))\n .nameLabel(\"Ubuntu Bionic Beaver 18.04_imavo\")\n .size(32212254720)\n .build())\n .build());\n\n // ...\n }\n}\n```\n```yaml\nresources:\n demo-vm:\n type: xenorchestra:Vm\n properties:\n # ...\n disks:\n - srId: ${localStorage.id}\n nameLabel: Ubuntu Bionic Beaver 18.04_imavo\n size: 3.221225472e+10\nvariables:\n localStorage:\n fn::invoke:\n Function: xenorchestra:getXoaStorageRepository\n Arguments:\n nameLabel: Your storage repository label\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "inputs": { + "description": "A collection of arguments for invoking getXoaStorageRepository.\n", + "properties": { + "nameLabel": { + "type": "string", + "description": "The name of the storage repository to look up\n" + }, + "poolId": { + "type": "string", + "description": "The Id of the pool the storage repository exists on.\n" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The tags (labels) applied to the given entity.\n" + } + }, + "type": "object", + "required": [ + "nameLabel" + ] + }, + "outputs": { + "description": "A collection of values returned by getXoaStorageRepository.\n", + "properties": { + "container": { + "type": "string", + "description": "The storage container.\n" + }, + "id": { + "type": "string", + "description": "The provider-assigned unique ID for this managed resource.\n" + }, + "nameLabel": { + "type": "string", + "description": "The name of the storage repository to look up\n" + }, + "physicalUsage": { + "type": "integer", + "description": "The physical storage size.\n" + }, + "poolId": { + "type": "string", + "description": "The Id of the pool the storage repository exists on.\n" + }, + "size": { + "type": "integer", + "description": "The storage size.\n" + }, + "srType": { + "type": "string", + "description": "The type of storage repository (lvm, udev, iso, user, etc).\n" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The tags (labels) applied to the given entity.\n" + }, + "usage": { + "type": "integer", + "description": "The current usage for this storage repository.\n" + }, + "uuid": { + "type": "string", + "description": "uuid of the storage repository. This is equivalent to the id.\n" + } + }, + "type": "object", + "required": [ + "container", + "nameLabel", + "physicalUsage", + "size", + "srType", + "usage", + "uuid", + "id" + ] + } + }, + "xenorchestra:index/getXoaTemplate:getXoaTemplate": { + "description": "## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as xenorchestra from \"@pulumi/xenorchestra\";\n\nconst template = xenorchestra.getXoaTemplate({\n nameLabel: \"Ubuntu Bionic Beaver 18.04\",\n});\nconst demo_vm = new xenorchestra.Vm(\"demo-vm\", {template: template.then(template =\u003e template.id)});\n// ...\n```\n```python\nimport pulumi\nimport pulumi_xenorchestra as xenorchestra\n\ntemplate = xenorchestra.get_xoa_template(name_label=\"Ubuntu Bionic Beaver 18.04\")\ndemo_vm = xenorchestra.Vm(\"demo-vm\", template=template.id)\n# ...\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Xenorchestra = Pulumi.Xenorchestra;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var template = Xenorchestra.GetXoaTemplate.Invoke(new()\n {\n NameLabel = \"Ubuntu Bionic Beaver 18.04\",\n });\n\n var demo_vm = new Xenorchestra.Vm(\"demo-vm\", new()\n {\n Template = template.Apply(getXoaTemplateResult =\u003e getXoaTemplateResult.Id),\n });\n\n // ...\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/vatesfr/pulumi-xenorchestra/sdk/go/xenorchestra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttemplate, err := xenorchestra.GetXoaTemplate(ctx, \u0026xenorchestra.GetXoaTemplateArgs{\n\t\t\tNameLabel: \"Ubuntu Bionic Beaver 18.04\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = xenorchestra.NewVm(ctx, \"demo-vm\", \u0026xenorchestra.VmArgs{\n\t\t\tTemplate: pulumi.String(template.Id),\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.xenorchestra.XenorchestraFunctions;\nimport com.pulumi.xenorchestra.inputs.GetXoaTemplateArgs;\nimport com.pulumi.xenorchestra.Vm;\nimport com.pulumi.xenorchestra.VmArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 template = XenorchestraFunctions.getXoaTemplate(GetXoaTemplateArgs.builder()\n .nameLabel(\"Ubuntu Bionic Beaver 18.04\")\n .build());\n\n var demo_vm = new Vm(\"demo-vm\", VmArgs.builder() \n .template(template.applyValue(getXoaTemplateResult -\u003e getXoaTemplateResult.id()))\n .build());\n\n // ...\n }\n}\n```\n```yaml\nresources:\n demo-vm:\n type: xenorchestra:Vm\n properties:\n # ...\n template: ${template.id}\nvariables:\n template:\n fn::invoke:\n Function: xenorchestra:getXoaTemplate\n Arguments:\n nameLabel: Ubuntu Bionic Beaver 18.04\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "inputs": { + "description": "A collection of arguments for invoking getXoaTemplate.\n", + "properties": { + "nameLabel": { + "type": "string", + "description": "The name of the template to look up.\n" + }, + "poolId": { + "type": "string", + "description": "The id of the pool that the template belongs to.\n" + } + }, + "type": "object", + "required": [ + "nameLabel" + ] + }, + "outputs": { + "description": "A collection of values returned by getXoaTemplate.\n", + "properties": { + "id": { + "type": "string", + "description": "The provider-assigned unique ID for this managed resource.\n" + }, + "nameLabel": { + "type": "string", + "description": "The name of the template to look up.\n" + }, + "poolId": { + "type": "string", + "description": "The id of the pool that the template belongs to.\n" + }, + "uuid": { + "type": "string", + "description": "The uuid of the template.\n" + } + }, + "type": "object", + "required": [ + "nameLabel", + "uuid", + "id" + ] + } + }, + "xenorchestra:index/getXoaUser:getXoaUser": { + "description": "Provides information about a Xen Orchestra user. If the Xen Orchestra user account you are using is not an admin, see the `search_in_session` parameter.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as xenorchestra from \"@pulumi/xenorchestra\";\n\nconst user = xenorchestra.getXoaUser({\n username: \"my-username\",\n});\n```\n```python\nimport pulumi\nimport pulumi_xenorchestra as xenorchestra\n\nuser = xenorchestra.get_xoa_user(username=\"my-username\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Xenorchestra = Pulumi.Xenorchestra;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var user = Xenorchestra.GetXoaUser.Invoke(new()\n {\n Username = \"my-username\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/vatesfr/pulumi-xenorchestra/sdk/go/xenorchestra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := xenorchestra.GetXoaUser(ctx, \u0026xenorchestra.GetXoaUserArgs{\n\t\t\tUsername: \"my-username\",\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.xenorchestra.XenorchestraFunctions;\nimport com.pulumi.xenorchestra.inputs.GetXoaUserArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 user = XenorchestraFunctions.getXoaUser(GetXoaUserArgs.builder()\n .username(\"my-username\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n user:\n fn::invoke:\n Function: xenorchestra:getXoaUser\n Arguments:\n username: my-username\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "inputs": { + "description": "A collection of arguments for invoking getXoaUser.\n", + "properties": { + "searchInSession": { + "type": "boolean", + "description": "A boolean which will search for the user in the current session (`session.getUser` Xen Orchestra RPC call). This allows a non admin user to look up their own user account.\n" + }, + "username": { + "type": "string", + "description": "The username of the XO user.\n" + } + }, + "type": "object", + "required": [ + "username" + ] + }, + "outputs": { + "description": "A collection of values returned by getXoaUser.\n", + "properties": { + "id": { + "type": "string", + "description": "The provider-assigned unique ID for this managed resource.\n" + }, + "searchInSession": { + "type": "boolean", + "description": "A boolean which will search for the user in the current session (`session.getUser` Xen Orchestra RPC call). This allows a non admin user to look up their own user account.\n" + }, + "username": { + "type": "string", + "description": "The username of the XO user.\n" + } + }, + "type": "object", + "required": [ + "username", + "id" + ] + } + }, + "xenorchestra:index/getXoaVdi:getXoaVdi": { + "description": "## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as xenorchestra from \"@pulumi/xenorchestra\";\n\nconst vdi = xenorchestra.getXoaVdi({\n nameLabel: \"ubuntu-20.04.4-live-server-amd64.iso\",\n});\nconst demo_vm = new xenorchestra.Vm(\"demo-vm\", {cdrom: vdi.then(vdi =\u003e vdi.id)});\n```\n```python\nimport pulumi\nimport pulumi_xenorchestra as xenorchestra\n\nvdi = xenorchestra.get_xoa_vdi(name_label=\"ubuntu-20.04.4-live-server-amd64.iso\")\ndemo_vm = xenorchestra.Vm(\"demo-vm\", cdrom=vdi.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Xenorchestra = Pulumi.Xenorchestra;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var vdi = Xenorchestra.GetXoaVdi.Invoke(new()\n {\n NameLabel = \"ubuntu-20.04.4-live-server-amd64.iso\",\n });\n\n var demo_vm = new Xenorchestra.Vm(\"demo-vm\", new()\n {\n Cdrom = vdi.Apply(getXoaVdiResult =\u003e getXoaVdiResult.Id),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/vatesfr/pulumi-xenorchestra/sdk/go/xenorchestra\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvdi, err := xenorchestra.GetXoaVdi(ctx, \u0026xenorchestra.GetXoaVdiArgs{\n\t\t\tNameLabel: pulumi.StringRef(\"ubuntu-20.04.4-live-server-amd64.iso\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = xenorchestra.NewVm(ctx, \"demo-vm\", \u0026xenorchestra.VmArgs{\n\t\t\tCdrom: pulumi.String(vdi.Id),\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.xenorchestra.XenorchestraFunctions;\nimport com.pulumi.xenorchestra.inputs.GetXoaVdiArgs;\nimport com.pulumi.xenorchestra.Vm;\nimport com.pulumi.xenorchestra.VmArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 vdi = XenorchestraFunctions.getXoaVdi(GetXoaVdiArgs.builder()\n .nameLabel(\"ubuntu-20.04.4-live-server-amd64.iso\")\n .build());\n\n var demo_vm = new Vm(\"demo-vm\", VmArgs.builder() \n .cdrom(vdi.applyValue(getXoaVdiResult -\u003e getXoaVdiResult.id()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n demo-vm:\n type: xenorchestra:Vm\n properties:\n cdrom: ${vdi.id}\nvariables:\n vdi:\n fn::invoke:\n Function: xenorchestra:getXoaVdi\n Arguments:\n nameLabel: ubuntu-20.04.4-live-server-amd64.iso\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "inputs": { + "description": "A collection of arguments for invoking getXoaVdi.\n", + "properties": { + "id": { + "type": "string", + "description": "The ID of the VDI.\n" + }, + "nameLabel": { + "type": "string", + "description": "The name of the VDI to look up.\n" + }, + "poolId": { + "type": "string", + "description": "The ID of the pool the VDI belongs to. This is useful if you have a VDI with the same name on different pools.\n" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The tags (labels) applied to the given entity.\n" + } + }, + "type": "object" + }, + "outputs": { + "description": "A collection of values returned by getXoaVdi.\n", + "properties": { + "id": { + "type": "string", + "description": "The ID of the VDI.\n" + }, + "nameLabel": { + "type": "string", + "description": "The name of the VDI to look up.\n" + }, + "parent": { + "type": "string", + "description": "The ID of the parent VDI if one exists. An example of when a VDI will have a parent is when it was created from a VM fast clone.\n" + }, + "poolId": { + "type": "string", + "description": "The ID of the pool the VDI belongs to. This is useful if you have a VDI with the same name on different pools.\n" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The tags (labels) applied to the given entity.\n" + } + }, + "type": "object", + "required": [ + "id", + "parent" + ] + } + }, + "xenorchestra:index/getXoaVms:getXoaVms": { + "description": "Use this data source to filter Xenorchestra VMs by certain criteria (pool_id, power_state or host) for use in other resources.\n\n", + "inputs": { + "description": "A collection of arguments for invoking getXoaVms.\n", + "properties": { + "host": { + "type": "string" + }, + "poolId": { + "type": "string", + "description": "The ID of the pool the VM belongs to.\n" + }, + "powerState": { + "type": "string" + } + }, + "type": "object", + "required": [ + "poolId" + ] + }, + "outputs": { + "description": "A collection of values returned by getXoaVms.\n", + "properties": { + "host": { + "type": "string" + }, + "id": { + "type": "string", + "description": "The provider-assigned unique ID for this managed resource.\n" + }, + "poolId": { + "type": "string", + "description": "The ID of the pool the VM belongs to.\n" + }, + "powerState": { + "type": "string", + "description": "The power state of the vms. (Running, Halted)\n" + }, + "vms": { + "type": "array", + "items": { + "$ref": "#/types/xenorchestra:index/getXoaVmsVm:getXoaVmsVm" + }, + "description": "A list of information for all vms found in this pool.\n" + } + }, + "type": "object", + "required": [ + "poolId", + "vms", + "id" + ] + } + } + } +} \ No newline at end of file diff --git a/provider/cmd/pulumi-tfgen-xenorchestra/main.go b/provider/cmd/pulumi-tfgen-xenorchestra/main.go index b36267c..000041f 100644 --- a/provider/cmd/pulumi-tfgen-xenorchestra/main.go +++ b/provider/cmd/pulumi-tfgen-xenorchestra/main.go @@ -15,9 +15,9 @@ package main import ( + "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfgen" xenorchestra "github.com/vatesfr/pulumi-xenorchestra/provider" "github.com/vatesfr/pulumi-xenorchestra/provider/pkg/version" - "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfgen" ) func main() { diff --git a/provider/go.mod b/provider/go.mod index 9d1321f..6f28bee 100644 --- a/provider/go.mod +++ b/provider/go.mod @@ -4,6 +4,8 @@ go 1.21 replace github.com/hashicorp/terraform-plugin-sdk/v2 => github.com/pulumi/terraform-plugin-sdk/v2 v2.0.0-20240229143312-4f60ee4e2975 +replace github.com/vatesfr/terraform-provider-xenorchestra => github.com/belfhi/terraform-provider-xenorchestra v0.0.0-20240422080402-42dda369d43c + require ( github.com/pulumi/pulumi-terraform-bridge/v3 v3.80.0 github.com/pulumi/pulumi/sdk/v3 v3.113.0 diff --git a/provider/go.sum b/provider/go.sum index 0e5f29d..a8f765a 100644 --- a/provider/go.sum +++ b/provider/go.sum @@ -1422,6 +1422,8 @@ github.com/aws/smithy-go v1.19.0 h1:KWFKQV80DpP3vJrrA9sVAHQ5gc2z8i4EzrLhLlWXcBM= github.com/aws/smithy-go v1.19.0/go.mod h1:NukqUGpCZIILqqiV0NIjeFh24kd/FAa4beRb6nbIUPE= github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= +github.com/belfhi/terraform-provider-xenorchestra v0.0.0-20240422080402-42dda369d43c h1:n5jPBjYatZHhJ5JrdfeZ4gr79IXQExMWerKtE0QI2H0= +github.com/belfhi/terraform-provider-xenorchestra v0.0.0-20240422080402-42dda369d43c/go.mod h1:GvxH0mHA3KAM1WXs3oIA+zfQQxKrolIIrTT7M3fmrWk= github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -2970,8 +2972,6 @@ github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/vatesfr/terraform-provider-xenorchestra v0.29.0 h1:N6ZyRGQb/pIBcaUXHxyRQg+YWDjM94CkP+9xY3cwe0s= -github.com/vatesfr/terraform-provider-xenorchestra v0.29.0/go.mod h1:GvxH0mHA3KAM1WXs3oIA+zfQQxKrolIIrTT7M3fmrWk= github.com/vatesfr/terraform-provider-xenorchestra/client v0.0.0-20240320231457-516842d718d7 h1:CiKffq28f1yH6nGqXmejoCJYNSaHOJbsmO3vYE+5X4k= github.com/vatesfr/terraform-provider-xenorchestra/client v0.0.0-20240320231457-516842d718d7/go.mod h1:qu/D/zw83f4vThCU6ttHxe2o4cGgOnFn9/uRNi+K8bI= github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= diff --git a/provider/resources.go b/provider/resources.go index 26c7a1b..9d7e16a 100644 --- a/provider/resources.go +++ b/provider/resources.go @@ -67,7 +67,7 @@ func Provider() tfbridge.ProviderInfo { // Change this to your personal name (or a company name) that you // would like to be shown in the Pulumi Registry if this package is published // there. - Publisher: "Pulumi", + Publisher: "Vates", // LogoURL is optional but useful to help identify your package in the Pulumi Registry // if this package is published there. // @@ -77,8 +77,8 @@ func Provider() tfbridge.ProviderInfo { // PluginDownloadURL is an optional URL used to download the Provider // for use in Pulumi programs // e.g https://github.com/org/pulumi-provider-name/releases/ - PluginDownloadURL: "", - Description: "A Pulumi package for creating and managing xenorchestra cloud resources.", + PluginDownloadURL: "https://github.com/vatesfr/pulumi-xenorchestra/releases/", + Description: "A Pulumi package for creating and managing Xen Orchestra cloud resources.", // category/cloud tag helps with categorizing the package in the Pulumi Registry. // For all available categories, see `Keywords` in // https://www.pulumi.com/docs/guides/pulumi-packages/schema/#package. @@ -91,34 +91,55 @@ func Provider() tfbridge.ProviderInfo { GitHubOrg: "vatesfr", MetadataInfo: tfbridge.NewProviderMetadata(metadata), Config: map[string]*tfbridge.SchemaInfo{ - // Add any required configuration here, or remove the example below if - // no additional points are required. - // "region": { - // Type: tfbridge.MakeType("region", "Region"), + // "url": { // Default: &tfbridge.DefaultInfo{ - // EnvVars: []string{"AWS_REGION", "AWS_DEFAULT_REGION"}, - // }, + // EnvVars: []string{"XOA_URL"}, + // } // }, + // "username": { + // Default: &tfbridge.DefaultInfo{ + // EnvVars: []string{"XOA_USERNAME"}, + // } + // }, + // "password": { + // Default: &tfbridge.DefaultInfo{ + // EnvVars: []string{"XOA_PASSWORD"}, + // } + // }, + // "token": { + // Default: &tfbridge.DefaultInfo{ + // EnvVars: []string{"XOA_TOKEN"}, + // } + // }, + // "insecure": { + // Default: &tfbridge.DefaultInfo{ + // EnvVars: []string{"XOA_INSECURE"}, + // } + // } }, PreConfigureCallback: preConfigureCallback, - Resources: map[string]*tfbridge.ResourceInfo{ - // Map each resource in the Terraform provider to a Pulumi type. Two examples - // are below - the single line form is the common case. The multi-line form is - // needed only if you wish to override types or other default options. - // - // "aws_iam_role": {Tok: tfbridge.MakeResource(mainPkg, mainMod, "IamRole")} - // - // "aws_acm_certificate": { - // Tok: tfbridge.MakeResource(mainPkg, mainMod, "Certificate"), - // Fields: map[string]*tfbridge.SchemaInfo{ - // "tags": {Type: tfbridge.MakeType(mainPkg, "Tags")}, - // }, - // }, + Resources: map[string]*tfbridge.ResourceInfo{ + "xenorchestra_acl": {Tok: tfbridge.MakeResource(mainPkg, mainMod, "Acl")}, + "xenorchestra_bonded_network": {Tok: tfbridge.MakeResource(mainPkg, mainMod, "XoaBondedNetwork")}, + "xenorchestra_cloud_config": {Tok: tfbridge.MakeResource(mainPkg, mainMod, "CloudConfig")}, + "xenorchestra_network": {Tok: tfbridge.MakeResource(mainPkg, mainMod, "XoaNetwork")}, + "xenorchestra_resource_set": {Tok: tfbridge.MakeResource(mainPkg, mainMod, "ResourceSet")}, + "xenorchestra_vdi": {Tok: tfbridge.MakeResource(mainPkg, mainMod, "Vdi")}, + "xenorchestra_vm": {Tok: tfbridge.MakeResource(mainPkg, mainMod, "Vm")}, }, DataSources: map[string]*tfbridge.DataSourceInfo{ - // Map each resource in the Terraform provider to a Pulumi function. An example - // is below. - // "aws_ami": {Tok: tfbridge.MakeDataSource(mainPkg, mainMod, "getAmi")}, + "xenorchestra_cloud_config": {Tok: tfbridge.MakeDataSource(mainPkg, mainMod, "getXoaCloudConfig")}, + "xenorchestra_host": {Tok: tfbridge.MakeDataSource(mainPkg, mainMod, "getXoaHost")}, + "xenorchestra_hosts": {Tok: tfbridge.MakeDataSource(mainPkg, mainMod, "getXoaHosts")}, + "xenorchestra_network": {Tok: tfbridge.MakeDataSource(mainPkg, mainMod, "getXoaNetwork")}, + "xenorchestra_pif": {Tok: tfbridge.MakeDataSource(mainPkg, mainMod, "getXoaPif")}, + "xenorchestra_pool": {Tok: tfbridge.MakeDataSource(mainPkg, mainMod, "getXoaPool")}, + "xenorchestra_resource_set": {Tok: tfbridge.MakeDataSource(mainPkg, mainMod, "getXoaResourceSet")}, + "xenorchestra_sr": {Tok: tfbridge.MakeDataSource(mainPkg, mainMod, "getXoaStorageRepository")}, + "xenorchestra_template": {Tok: tfbridge.MakeDataSource(mainPkg, mainMod, "getXoaTemplate")}, + "xenorchestra_user": {Tok: tfbridge.MakeDataSource(mainPkg, mainMod, "getXoaUser")}, + "xenorchestra_vdi": {Tok: tfbridge.MakeDataSource(mainPkg, mainMod, "getXoaVdi")}, + "xenorchestra_vms": {Tok: tfbridge.MakeDataSource(mainPkg, mainMod, "getXoaVms")}, }, JavaScript: &tfbridge.JavaScriptInfo{ // List any npm dependencies and their versions @@ -142,7 +163,7 @@ func Provider() tfbridge.ProviderInfo { }, Golang: &tfbridge.GolangInfo{ ImportBasePath: path.Join( - fmt.Sprintf("github.com/pulumi/pulumi-%[1]s/sdk/", mainPkg), + fmt.Sprintf("github.com/vatesfr/pulumi-%[1]s/sdk/", mainPkg), tfbridge.GetModuleMajorVersion(version.Version), "go", mainPkg, diff --git a/sdk/go.mod b/sdk/go.mod index acae673..f07c338 100644 --- a/sdk/go.mod +++ b/sdk/go.mod @@ -2,4 +2,91 @@ module github.com/vatesfr/pulumi-xenorchestra/sdk go 1.21 -require github.com/pulumi/pulumi/sdk/v3 v3.38.0 +require ( + github.com/blang/semver v3.5.1+incompatible + github.com/pulumi/pulumi/sdk/v3 v3.113.3 +) + +require ( + dario.cat/mergo v1.0.0 // indirect + github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect + github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect + github.com/agext/levenshtein v1.2.3 // indirect + github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect + github.com/atotto/clipboard v0.1.4 // indirect + github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect + github.com/charmbracelet/bubbles v0.16.1 // indirect + github.com/charmbracelet/bubbletea v0.24.2 // indirect + github.com/charmbracelet/lipgloss v0.7.1 // indirect + github.com/cheggaaa/pb v1.0.29 // indirect + 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/djherbis/times v1.5.0 // indirect + github.com/emirpasic/gods v1.18.1 // indirect + 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.11.0 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/glog v1.1.0 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/protobuf v1.5.3 // indirect + github.com/google/uuid v1.3.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-multierror v1.1.1 // indirect + github.com/hashicorp/hcl/v2 v2.17.0 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect + github.com/kevinburke/ssh_config v1.2.0 // indirect + github.com/lucasb-eyer/go-colorful v1.2.0 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-localereader v0.0.1 // indirect + github.com/mattn/go-runewidth v0.0.15 // indirect + github.com/mitchellh/go-ps v1.0.0 // indirect + github.com/mitchellh/go-wordwrap v1.0.1 // indirect + github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect + github.com/muesli/cancelreader v0.2.2 // indirect + github.com/muesli/reflow v0.3.0 // indirect + github.com/muesli/termenv v0.15.2 // indirect + github.com/opentracing/basictracer-go v1.1.0 // indirect + github.com/opentracing/opentracing-go v1.2.0 // indirect + github.com/pgavlin/fx v0.1.6 // indirect + github.com/pjbgf/sha1cd v0.3.0 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pkg/term v1.1.0 // indirect + github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 // indirect + github.com/pulumi/esc v0.6.2 // indirect + github.com/rivo/uniseg v0.4.4 // indirect + github.com/rogpeppe/go-internal v1.11.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/sergi/go-diff v1.3.1 // indirect + github.com/skeema/knownhosts v1.2.1 // indirect + github.com/spf13/cast v1.4.1 // indirect + github.com/spf13/cobra v1.7.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/texttheater/golang-levenshtein v1.0.1 // indirect + github.com/tweekmonster/luser v0.0.0-20161003172636-3fa38070dbd7 // indirect + github.com/uber/jaeger-client-go v2.30.0+incompatible // indirect + github.com/uber/jaeger-lib v2.4.1+incompatible // indirect + github.com/xanzy/ssh-agent v0.3.3 // indirect + github.com/zclconf/go-cty v1.13.2 // indirect + go.uber.org/atomic v1.9.0 // indirect + golang.org/x/crypto v0.21.0 // indirect + golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect + golang.org/x/mod v0.14.0 // indirect + golang.org/x/net v0.21.0 // indirect + golang.org/x/sync v0.5.0 // indirect + golang.org/x/sys v0.18.0 // indirect + golang.org/x/term v0.18.0 // indirect + golang.org/x/text v0.14.0 // indirect + golang.org/x/tools v0.15.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130 // indirect + google.golang.org/grpc v1.57.1 // indirect + google.golang.org/protobuf v1.33.0 // indirect + gopkg.in/warnings.v0 v0.1.2 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + lukechampine.com/frand v1.4.2 // indirect +) diff --git a/sdk/go.sum b/sdk/go.sum new file mode 100644 index 0000000..0038795 --- /dev/null +++ b/sdk/go.sum @@ -0,0 +1,317 @@ +dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= +dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= +github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= +github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg= +github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= +github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da h1:KjTM2ks9d14ZYCvmHS9iAKVt9AyzRSqNU1qabPih5BY= +github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da/go.mod h1:eHEWzANqSiWQsof+nXEI9bUVUyV6F53Fp89EuCh2EAA= +github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= +github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= +github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= +github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= +github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= +github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= +github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4= +github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI= +github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= +github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= +github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= +github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= +github.com/charmbracelet/bubbles v0.16.1 h1:6uzpAAaT9ZqKssntbvZMlksWHruQLNxg49H5WdeuYSY= +github.com/charmbracelet/bubbles v0.16.1/go.mod h1:2QCp9LFlEsBQMvIYERr7Ww2H2bA7xen1idUDIzm/+Xc= +github.com/charmbracelet/bubbletea v0.24.2 h1:uaQIKx9Ai6Gdh5zpTbGiWpytMU+CfsPp06RaW2cx/SY= +github.com/charmbracelet/bubbletea v0.24.2/go.mod h1:XdrNrV4J8GiyshTtx3DNuYkR1FDaJmO3l2nejekbsgg= +github.com/charmbracelet/lipgloss v0.7.1 h1:17WMwi7N1b1rVWOjMT+rCh7sQkvDU75B2hbZpc5Kc1E= +github.com/charmbracelet/lipgloss v0.7.1/go.mod h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNWpFujkNawKNhE2c= +github.com/cheggaaa/pb v1.0.29 h1:FckUN5ngEk2LpvuG0fw1GEFx6LtyY2pWI/Z2QgCnEYo= +github.com/cheggaaa/pb v1.0.29/go.mod h1:W40334L7FMC5JKWldsTWbdGjLo0RxUKK73K+TuPxX30= +github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= +github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= +github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= +github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 h1:q2hJAaP1k2wIvVRd/hEHD7lacgqrCPS+k8g1MndzfWY= +github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= +github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/djherbis/times v1.5.0 h1:79myA211VwPhFTqUk8xehWrsEO+zcIZj0zT8mXPVARU= +github.com/djherbis/times v1.5.0/go.mod h1:5q7FDLvbNg1L/KaBmPcWlVR9NmoKo3+ucqUA3ijQhA0= +github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= +github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= +github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= +github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= +github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= +github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= +github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= +github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= +github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= +github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= +github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= +github.com/go-git/go-git/v5 v5.11.0 h1:XIZc1p+8YzypNr34itUfSvYJcv+eYdTnTvOZ2vD3cA4= +github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= +github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 h1:MJG/KsmcqMwFAkh8mTnAwhyKoB+sTAnY4CACC110tbU= +github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= +github.com/hashicorp/hcl/v2 v2.17.0 h1:z1XvSUyXd1HP10U4lrLg5e0JMVz6CPaJvAgxM0KNZVY= +github.com/hashicorp/hcl/v2 v2.17.0/go.mod h1:gJyW2PTShkJqQBKpAmPO3yxMxIuoXkOF2TpqXzrQyx4= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= +github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= +github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= +github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= +github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4= +github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88= +github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= +github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= +github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mitchellh/go-ps v1.0.0 h1:i6ampVEEF4wQFF+bkYfwYgY+F/uYJDktmvLPf7qIgjc= +github.com/mitchellh/go-ps v1.0.0/go.mod h1:J4lOc8z8yJs6vUwklHw2XEIiT4z4C40KtWVN3nvg8Pg= +github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= +github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= +github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 h1:ZK8zHtRHOkbHy6Mmr5D264iyp3TiX5OmNcI5cIARiQI= +github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6/go.mod h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo= +github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA= +github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo= +github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= +github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= +github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo= +github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8= +github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= +github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= +github.com/opentracing/basictracer-go v1.1.0 h1:Oa1fTSBvAl8pa3U+IJYqrKm0NALwH9OsgwOqDv4xJW0= +github.com/opentracing/basictracer-go v1.1.0/go.mod h1:V2HZueSJEp879yv285Aap1BS69fQMD+MNP1mRs6mBQc= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= +github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= +github.com/pgavlin/fx v0.1.6 h1:r9jEg69DhNoCd3Xh0+5mIbdbS3PqWrVWujkY76MFRTU= +github.com/pgavlin/fx v0.1.6/go.mod h1:KWZJ6fqBBSh8GxHYqwYCf3rYE7Gp2p0N8tJp8xv9u9M= +github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= +github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/term v1.1.0 h1:xIAAdCMh3QIAy+5FrE8Ad8XoDhEU4ufwbaSozViP9kk= +github.com/pkg/term v1.1.0/go.mod h1:E25nymQcrSllhX42Ok8MRm1+hyBdHY0dCeiKZ9jpNGw= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435cARxCW6q9gc0S/Yxz7Mkd38pOb0= +github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE= +github.com/pulumi/esc v0.6.2 h1:+z+l8cuwIauLSwXQS0uoI3rqB+YG4SzsZYtHfNoXBvw= +github.com/pulumi/esc v0.6.2/go.mod h1:jNnYNjzsOgVTjCp0LL24NsCk8ZJxq4IoLQdCT0X7l8k= +github.com/pulumi/pulumi/sdk/v3 v3.113.3 h1:ySNxoL+O9TtS9WiPa9SWu6mthJryryRzP0kyYaQlNaU= +github.com/pulumi/pulumi/sdk/v3 v3.113.3/go.mod h1:JWSzKBoHd8rlncC1DhXLf7YdV+Bk/Qf+hSZOOQh0WwQ= +github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= +github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 h1:OkMGxebDjyw0ULyrTYWeN0UNCCkmCWfjPnIA2W6oviI= +github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06/go.mod h1:+ePHsJ1keEjQtpvf9HHw0f4ZeJ0TLRsxhunSI2hYJSs= +github.com/santhosh-tekuri/jsonschema/v5 v5.0.0 h1:TToq11gyfNlrMFZiYujSekIsPd9AmsA2Bj/iv+s4JHE= +github.com/santhosh-tekuri/jsonschema/v5 v5.0.0/go.mod h1:FKdcjfQW6rpZSnxxUvEA5H/cDPdvJ/SZJQLWWXWGrZ0= +github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= +github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2AQ= +github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= +github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA= +github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= +github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/texttheater/golang-levenshtein v1.0.1 h1:+cRNoVrfiwufQPhoMzB6N0Yf/Mqajr6t1lOv8GyGE2U= +github.com/texttheater/golang-levenshtein v1.0.1/go.mod h1:PYAKrbF5sAiq9wd+H82hs7gNaen0CplQ9uvm6+enD/8= +github.com/tweekmonster/luser v0.0.0-20161003172636-3fa38070dbd7 h1:X9dsIWPuuEJlPX//UmRKophhOKCGXc46RVIGuttks68= +github.com/tweekmonster/luser v0.0.0-20161003172636-3fa38070dbd7/go.mod h1:UxoP3EypF8JfGEjAII8jx1q8rQyDnX8qdTCs/UQBVIE= +github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o= +github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= +github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg= +github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= +github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= +github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/zclconf/go-cty v1.13.2 h1:4GvrUxe/QUDYuJKAav4EYqdM47/kZa672LwmXFmEKT0= +github.com/zclconf/go-cty v1.13.2/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= +go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= +go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= +golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= +golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= +golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.15.0 h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8= +golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130 h1:2FZP5XuJY9zQyGM5N0rtovnoXjiMUEIUMvw0m9wlpLc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:8mL13HKkDa+IuJ8yruA3ci0q+0vsUz4m//+ottjwS5o= +google.golang.org/grpc v1.57.1 h1:upNTNqv0ES+2ZOOqACwVtS3Il8M12/+Hz41RCPzAjQg= +google.golang.org/grpc v1.57.1/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +lukechampine.com/frand v1.4.2 h1:RzFIpOvkMXuPMBb9maa4ND4wjBn71E1Jpf8BzJHMaVw= +lukechampine.com/frand v1.4.2/go.mod h1:4S/TM2ZgrKejMcKMbeLjISpJMO+/eZ1zu3vYX9dtj3s= +pgregory.net/rapid v0.5.5 h1:jkgx1TjbQPD/feRoK+S/mXw9e1uj6WilpHrXJowi6oA= +pgregory.net/rapid v0.5.5/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04=