{"name":"openstack","version":"5.4.1","description":"A Pulumi package for creating and managing OpenStack cloud resources.","keywords":["pulumi","openstack"],"homepage":"https://pulumi.io","license":"Apache-2.0","attribution":"This Pulumi package is based on the [`openstack` Terraform Provider](https://github.com/terraform-provider-openstack/terraform-provider-openstack).","repository":"https://github.com/pulumi/pulumi-openstack","meta":{"moduleFormat":"(.*)(?:/[^/]*)"},"language":{"csharp":{"packageReferences":{"Pulumi":"3.*"},"namespaces":{"bgpvpn":"BGPVPN","blockstorage":"BlockStorage","compute":"Compute","containerinfra":"ContainerInfra","database":"Database","dns":"Dns","firewall":"Firewall","identity":"Identity","images":"Images","index":"index","keymanager":"KeyManager","loadbalancer":"LoadBalancer","networking":"Networking","objectstorage":"ObjectStorage","openstack":"OpenStack","orchestration":"Orchestration","sharedfilesystem":"SharedFileSystem","vpnaas":"VPNaaS"},"compatibility":"tfbridge20","respectSchemaVersion":true},"go":{"importBasePath":"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack","generateResourceContainerTypes":true,"generateExtraInputTypes":true,"respectSchemaVersion":true},"nodejs":{"packageDescription":"A Pulumi package for creating and managing OpenStack cloud resources.","readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/terraform-provider-openstack/terraform-provider-openstack)\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-openstack` repo](https://github.com/pulumi/pulumi-openstack/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-openstack` repo](https://github.com/terraform-provider-openstack/terraform-provider-openstack/issues).","devDependencies":{"@types/node":"^10.0.0"},"compatibility":"tfbridge20","disableUnionOutputTypes":true,"respectSchemaVersion":true},"python":{"readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/terraform-provider-openstack/terraform-provider-openstack)\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-openstack` repo](https://github.com/pulumi/pulumi-openstack/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-openstack` repo](https://github.com/terraform-provider-openstack/terraform-provider-openstack/issues).","compatibility":"tfbridge20","respectSchemaVersion":true,"pyproject":{"enabled":true}}},"config":{"variables":{"allowReauth":{"type":"boolean","description":"If set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, OpenStack authorization won't be perfomed\nautomatically, if the initial auth token get expired. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e","defaultInfo":{"environment":["OS_ALLOW_REAUTH"]}},"applicationCredentialId":{"type":"string","description":"Application Credential ID to login with."},"applicationCredentialName":{"type":"string","description":"Application Credential name to login with."},"applicationCredentialSecret":{"type":"string","description":"Application Credential secret to login with."},"authUrl":{"type":"string","description":"The Identity authentication URL."},"cacertFile":{"type":"string","description":"A Custom CA certificate."},"cert":{"type":"string","description":"A client certificate to authenticate with."},"cloud":{"type":"string","description":"An entry in a `clouds.yaml` file to use.","defaultInfo":{"environment":["OS_CLOUD"]}},"defaultDomain":{"type":"string","description":"The name of the Domain ID to scope to if no other domain is specified. Defaults to \u003cspan pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\"\u003e`default`\u003c/span\u003e (Identity v3)."},"delayedAuth":{"type":"boolean","description":"If set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, OpenStack authorization will be perfomed,\nevery time the service provider client is called. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.","defaultInfo":{"environment":["OS_DELAYED_AUTH"]}},"disableNoCacheHeader":{"type":"boolean","description":"If set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the HTTP `Cache-Control: no-cache` header will not be added by default to all API requests."},"domainId":{"type":"string","description":"The ID of the Domain to scope to (Identity v3)."},"domainName":{"type":"string","description":"The name of the Domain to scope to (Identity v3)."},"enableLogging":{"type":"boolean","description":"Outputs very verbose logs with all calls made to and responses from OpenStack"},"endpointOverrides":{"type":"object","additionalProperties":{"type":"string"},"description":"A map of services with an endpoint to override what was\nfrom the Keystone catalog"},"endpointType":{"type":"string","defaultInfo":{"environment":["OS_ENDPOINT_TYPE"]}},"insecure":{"type":"boolean","description":"Trust self-signed certificates.","defaultInfo":{"environment":["OS_INSECURE"]}},"key":{"type":"string","description":"A client private key to authenticate with."},"maxRetries":{"type":"integer","description":"How many times HTTP connection should be retried until giving up."},"password":{"type":"string","description":"Password to login with.","secret":true},"projectDomainId":{"type":"string","description":"The ID of the domain where the proejct resides (Identity v3)."},"projectDomainName":{"type":"string","description":"The name of the domain where the project resides (Identity v3)."},"region":{"type":"string","description":"The OpenStack region to connect to.","defaultInfo":{"environment":["OS_REGION_NAME"]}},"swauth":{"type":"boolean","description":"Use Swift's authentication system instead of Keystone. Only used for\ninteraction with Swift.","defaultInfo":{"environment":["OS_SWAUTH"]}},"systemScope":{"type":"boolean","description":"If set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, system scoped authorization will be enabled. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e (Identity v3)."},"tenantId":{"type":"string","description":"The ID of the Tenant (Identity v2) or Project (Identity v3)\nto login with."},"tenantName":{"type":"string","description":"The name of the Tenant (Identity v2) or Project (Identity v3)\nto login with."},"token":{"type":"string","description":"Authentication token to use as an alternative to username/password."},"userDomainId":{"type":"string","description":"The ID of the domain where the user resides (Identity v3)."},"userDomainName":{"type":"string","description":"The name of the domain where the user resides (Identity v3)."},"userId":{"type":"string","description":"User ID to login with."},"userName":{"type":"string","description":"Username to login with."}}},"types":{"openstack:bgpvpn/PortAssociateV2Route:PortAssociateV2Route":{"properties":{"bgpvpnId":{"type":"string","description":"The ID of the BGP VPN to be advertised. Required\nif \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`bgpvpn`\" pulumi-lang-dotnet=\"`Bgpvpn`\" pulumi-lang-go=\"`bgpvpn`\" pulumi-lang-python=\"`bgpvpn`\" pulumi-lang-yaml=\"`bgpvpn`\" pulumi-lang-java=\"`bgpvpn`\"\u003e`bgpvpn`\u003c/span\u003e. Conflicts with \u003cspan pulumi-lang-nodejs=\"`prefix`\" pulumi-lang-dotnet=\"`Prefix`\" pulumi-lang-go=\"`prefix`\" pulumi-lang-python=\"`prefix`\" pulumi-lang-yaml=\"`prefix`\" pulumi-lang-java=\"`prefix`\"\u003e`prefix`\u003c/span\u003e.\n"},"localPref":{"type":"integer","description":"The BGP LOCAL\\_PREF value of the routes that will\nbe advertised.\n"},"prefix":{"type":"string","description":"The CIDR prefix (v4 or v6) to be advertised. Required\nif \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`prefix`\" pulumi-lang-dotnet=\"`Prefix`\" pulumi-lang-go=\"`prefix`\" pulumi-lang-python=\"`prefix`\" pulumi-lang-yaml=\"`prefix`\" pulumi-lang-java=\"`prefix`\"\u003e`prefix`\u003c/span\u003e. Conflicts with \u003cspan pulumi-lang-nodejs=\"`bgpvpnId`\" pulumi-lang-dotnet=\"`BgpvpnId`\" pulumi-lang-go=\"`bgpvpnId`\" pulumi-lang-python=\"`bgpvpn_id`\" pulumi-lang-yaml=\"`bgpvpnId`\" pulumi-lang-java=\"`bgpvpnId`\"\u003e`bgpvpn_id`\u003c/span\u003e.\n"},"type":{"type":"string","description":"Can be \u003cspan pulumi-lang-nodejs=\"`prefix`\" pulumi-lang-dotnet=\"`Prefix`\" pulumi-lang-go=\"`prefix`\" pulumi-lang-python=\"`prefix`\" pulumi-lang-yaml=\"`prefix`\" pulumi-lang-java=\"`prefix`\"\u003e`prefix`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`bgpvpn`\" pulumi-lang-dotnet=\"`Bgpvpn`\" pulumi-lang-go=\"`bgpvpn`\" pulumi-lang-python=\"`bgpvpn`\" pulumi-lang-yaml=\"`bgpvpn`\" pulumi-lang-java=\"`bgpvpn`\"\u003e`bgpvpn`\u003c/span\u003e. For the \u003cspan pulumi-lang-nodejs=\"`prefix`\" pulumi-lang-dotnet=\"`Prefix`\" pulumi-lang-go=\"`prefix`\" pulumi-lang-python=\"`prefix`\" pulumi-lang-yaml=\"`prefix`\" pulumi-lang-java=\"`prefix`\"\u003e`prefix`\u003c/span\u003e type, the\nCIDR prefix (v4 or v6) must be specified in the \u003cspan pulumi-lang-nodejs=\"`prefix`\" pulumi-lang-dotnet=\"`Prefix`\" pulumi-lang-go=\"`prefix`\" pulumi-lang-python=\"`prefix`\" pulumi-lang-yaml=\"`prefix`\" pulumi-lang-java=\"`prefix`\"\u003e`prefix`\u003c/span\u003e key. For the\n\u003cspan pulumi-lang-nodejs=\"`bgpvpn`\" pulumi-lang-dotnet=\"`Bgpvpn`\" pulumi-lang-go=\"`bgpvpn`\" pulumi-lang-python=\"`bgpvpn`\" pulumi-lang-yaml=\"`bgpvpn`\" pulumi-lang-java=\"`bgpvpn`\"\u003e`bgpvpn`\u003c/span\u003e type, the BGP VPN ID must be specified in the \u003cspan pulumi-lang-nodejs=\"`bgpvpnId`\" pulumi-lang-dotnet=\"`BgpvpnId`\" pulumi-lang-go=\"`bgpvpnId`\" pulumi-lang-python=\"`bgpvpn_id`\" pulumi-lang-yaml=\"`bgpvpnId`\" pulumi-lang-java=\"`bgpvpnId`\"\u003e`bgpvpn_id`\u003c/span\u003e key.\n"}},"type":"object","required":["type"]},"openstack:blockstorage/VolumeAttachment:VolumeAttachment":{"properties":{"device":{"type":"string"},"id":{"type":"string"},"instanceId":{"type":"string"}},"type":"object","language":{"nodejs":{"requiredOutputs":["device","id","instanceId"]}}},"openstack:blockstorage/VolumeSchedulerHint:VolumeSchedulerHint":{"properties":{"additionalProperties":{"type":"object","additionalProperties":{"type":"string"},"description":"Arbitrary key/value pairs of additional\nproperties to pass to the scheduler.\n","willReplaceOnChanges":true},"differentHosts":{"type":"array","items":{"type":"string"},"description":"The volume should be scheduled on a \ndifferent host from the set of volumes specified in the list provided.\n","willReplaceOnChanges":true},"localToInstance":{"type":"string","description":"An instance UUID. The volume should be \nscheduled on the same host as the instance.\n","willReplaceOnChanges":true},"query":{"type":"string","description":"A conditional query that a back-end must pass in\norder to host a volume. The query must use the `JsonFilter` syntax\nwhich is described\n[here](https://docs.openstack.org/cinder/latest/configuration/block-storage/scheduler-filters.html#jsonfilter).\nAt this time, only simple queries are supported. Compound queries using\n\u003cspan pulumi-lang-nodejs=\"`and`\" pulumi-lang-dotnet=\"`And`\" pulumi-lang-go=\"`and`\" pulumi-lang-python=\"`and`\" pulumi-lang-yaml=\"`and`\" pulumi-lang-java=\"`and`\"\u003e`and`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`or`\" pulumi-lang-dotnet=\"`Or`\" pulumi-lang-go=\"`or`\" pulumi-lang-python=\"`or`\" pulumi-lang-yaml=\"`or`\" pulumi-lang-java=\"`or`\"\u003e`or`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`not`\" pulumi-lang-dotnet=\"`Not`\" pulumi-lang-go=\"`not`\" pulumi-lang-python=\"`not`\" pulumi-lang-yaml=\"`not`\" pulumi-lang-java=\"`not`\"\u003e`not`\u003c/span\u003e are not supported. An example of a simple query is:\n\n```\n[“=”, “$backend_id”, “rbd:vol@ceph#cloud”]\n```\n","willReplaceOnChanges":true},"sameHosts":{"type":"array","items":{"type":"string"},"description":"A list of volume UUIDs. The volume should be\nscheduled on the same host as another volume specified in the list provided.\n","willReplaceOnChanges":true}},"type":"object"},"openstack:blockstorage/getVolumeV3Attachment:getVolumeV3Attachment":{"properties":{"device":{"type":"string"},"id":{"type":"string"},"instanceId":{"type":"string"}},"type":"object","required":["device","id","instanceId"],"language":{"nodejs":{"requiredInputs":[]}}},"openstack:compute/InstanceBlockDevice:InstanceBlockDevice":{"properties":{"bootIndex":{"type":"integer","description":"The boot index of the volume. It defaults to 0.\nChanging this creates a new server.\n","willReplaceOnChanges":true},"deleteOnTermination":{"type":"boolean","description":"Delete the volume / block device upon\ntermination of the instance. Defaults to false. Changing this creates a\nnew server.\n","willReplaceOnChanges":true},"destinationType":{"type":"string","description":"The type that gets created. Possible values\nare \"volume\" and \"local\". Changing this creates a new server.\n","willReplaceOnChanges":true},"deviceType":{"type":"string","description":"The low-level device type that will be used. Most\ncommon thing is to leave this empty. Changing this creates a new server.\n","willReplaceOnChanges":true},"diskBus":{"type":"string","description":"The low-level disk bus that will be used. Most common\nthing is to leave this empty. Changing this creates a new server.\n","willReplaceOnChanges":true},"guestFormat":{"type":"string","description":"Specifies the guest server disk file system format,\nsuch as \u003cspan pulumi-lang-nodejs=\"`ext2`\" pulumi-lang-dotnet=\"`Ext2`\" pulumi-lang-go=\"`ext2`\" pulumi-lang-python=\"`ext2`\" pulumi-lang-yaml=\"`ext2`\" pulumi-lang-java=\"`ext2`\"\u003e`ext2`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ext3`\" pulumi-lang-dotnet=\"`Ext3`\" pulumi-lang-go=\"`ext3`\" pulumi-lang-python=\"`ext3`\" pulumi-lang-yaml=\"`ext3`\" pulumi-lang-java=\"`ext3`\"\u003e`ext3`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ext4`\" pulumi-lang-dotnet=\"`Ext4`\" pulumi-lang-go=\"`ext4`\" pulumi-lang-python=\"`ext4`\" pulumi-lang-yaml=\"`ext4`\" pulumi-lang-java=\"`ext4`\"\u003e`ext4`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`xfs`\" pulumi-lang-dotnet=\"`Xfs`\" pulumi-lang-go=\"`xfs`\" pulumi-lang-python=\"`xfs`\" pulumi-lang-yaml=\"`xfs`\" pulumi-lang-java=\"`xfs`\"\u003e`xfs`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`swap`\" pulumi-lang-dotnet=\"`Swap`\" pulumi-lang-go=\"`swap`\" pulumi-lang-python=\"`swap`\" pulumi-lang-yaml=\"`swap`\" pulumi-lang-java=\"`swap`\"\u003e`swap`\u003c/span\u003e. Swap block device mappings\nhave the following restrictions:\u003cspan pulumi-lang-nodejs=\" sourceType \" pulumi-lang-dotnet=\" SourceType \" pulumi-lang-go=\" sourceType \" pulumi-lang-python=\" source_type \" pulumi-lang-yaml=\" sourceType \" pulumi-lang-java=\" sourceType \"\u003e source_type \u003c/span\u003emust be blank and\u003cspan pulumi-lang-nodejs=\" destinationType\n\" pulumi-lang-dotnet=\" DestinationType\n\" pulumi-lang-go=\" destinationType\n\" pulumi-lang-python=\" destination_type\n\" pulumi-lang-yaml=\" destinationType\n\" pulumi-lang-java=\" destinationType\n\"\u003e destination_type\n\u003c/span\u003emust be local and only one swap disk per server and the size of the swap disk\nmust be less than or equal to the swap size of the flavor. Changing this\ncreates a new server.\n","willReplaceOnChanges":true},"multiattach":{"type":"boolean","description":"Enable the attachment of multiattach-capable\nvolumes.\n","willReplaceOnChanges":true},"sourceType":{"type":"string","description":"The source type of the device. Must be one of\n\"blank\", \"image\", \"volume\", or \"snapshot\". Changing this creates a new\nserver.\n","willReplaceOnChanges":true},"uuid":{"type":"string","description":"The UUID of\nthe image, volume, or snapshot. Changing this creates a new server.\n","willReplaceOnChanges":true},"volumeSize":{"type":"integer","description":"The size of the volume to create (in gigabytes). Required\nin the following combinations: source=image and destination=volume,\nsource=blank and destination=local, and source=blank and destination=volume.\nChanging this creates a new server.\n","willReplaceOnChanges":true},"volumeType":{"type":"string","description":"The volume type that will be used, for example SSD\nor HDD storage. The available options depend on how your specific OpenStack\ncloud is configured and what classes of storage are provided. Changing this\ncreates a new server.\n","willReplaceOnChanges":true}},"type":"object","required":["sourceType"]},"openstack:compute/InstanceNetwork:InstanceNetwork":{"properties":{"accessNetwork":{"type":"boolean","description":"Specifies if this network should be used for\nprovisioning access. Accepts true or false. Defaults to false.\n"},"fixedIpV4":{"type":"string","description":"Specifies a fixed IPv4 address to be used on this\nnetwork. Changing this creates a new server.\n","willReplaceOnChanges":true},"fixedIpV6":{"type":"string","willReplaceOnChanges":true},"mac":{"type":"string"},"name":{"type":"string","description":"The human-readable\nname of the network. Changing this creates a new server.\n","willReplaceOnChanges":true},"port":{"type":"string","description":"The port UUID of a\nnetwork to attach to the server. Changing this creates a new server.\n","willReplaceOnChanges":true},"uuid":{"type":"string","description":"The network UUID to\nattach to the server. Changing this creates a new server.\n","willReplaceOnChanges":true}},"type":"object","language":{"nodejs":{"requiredOutputs":["fixedIpV4","fixedIpV6","mac","name","port","uuid"]}}},"openstack:compute/InstancePersonality:InstancePersonality":{"properties":{"content":{"type":"string","description":"The contents of the file. Limited to 255 bytes.\n"},"file":{"type":"string","description":"The absolute path of the destination file.\n"}},"type":"object","required":["content","file"]},"openstack:compute/InstanceSchedulerHint:InstanceSchedulerHint":{"properties":{"additionalProperties":{"type":"object","additionalProperties":{"type":"string"},"description":"Arbitrary key/value pairs of additional\nproperties to pass to the scheduler.\n","willReplaceOnChanges":true},"buildNearHostIp":{"type":"string","description":"An IP Address in CIDR form. The instance\nwill be placed on a compute node that is in the same subnet.\n","willReplaceOnChanges":true},"differentCells":{"type":"array","items":{"type":"string"},"description":"The names of cells where not to build the instance.\n","willReplaceOnChanges":true},"differentHosts":{"type":"array","items":{"type":"string"},"description":"A list of instance UUIDs. The instance will\nbe scheduled on a different host than all other instances.\n","willReplaceOnChanges":true},"group":{"type":"string","description":"A UUID of a Server Group. The instance will be placed\ninto that group. See reference\nfor details on managing servergroup resources\n","willReplaceOnChanges":true},"queries":{"type":"array","items":{"type":"string"},"description":"A conditional query that a compute node must pass in\norder to host an instance. The query must use the `JsonFilter` syntax\nwhich is described\n[here](https://docs.openstack.org/nova/latest/admin/configuration/schedulers.html#jsonfilter).\nAt this time, only simple queries are supported. Compound queries using\n\u003cspan pulumi-lang-nodejs=\"`and`\" pulumi-lang-dotnet=\"`And`\" pulumi-lang-go=\"`and`\" pulumi-lang-python=\"`and`\" pulumi-lang-yaml=\"`and`\" pulumi-lang-java=\"`and`\"\u003e`and`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`or`\" pulumi-lang-dotnet=\"`Or`\" pulumi-lang-go=\"`or`\" pulumi-lang-python=\"`or`\" pulumi-lang-yaml=\"`or`\" pulumi-lang-java=\"`or`\"\u003e`or`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`not`\" pulumi-lang-dotnet=\"`Not`\" pulumi-lang-go=\"`not`\" pulumi-lang-python=\"`not`\" pulumi-lang-yaml=\"`not`\" pulumi-lang-java=\"`not`\"\u003e`not`\u003c/span\u003e are not supported. An example of a simple query is:\n\n```\n[\"\u003e=\", \"$free_ram_mb\", \"1024\"]\n```\n","willReplaceOnChanges":true},"sameHosts":{"type":"array","items":{"type":"string"},"description":"A list of instance UUIDs. The instance will be\nscheduled on the same host of those specified.\n","willReplaceOnChanges":true},"targetCell":{"type":"string","description":"The name of a cell to host the instance.\n","willReplaceOnChanges":true}},"type":"object"},"openstack:compute/InstanceVendorOptions:InstanceVendorOptions":{"properties":{"detachPortsBeforeDestroy":{"type":"boolean","description":"Whether to try to detach all attached\nports to the vm before destroying it to make sure the port state is correct\nafter the vm destruction. This is helpful when the port is not deleted.\n"},"ignoreResizeConfirmation":{"type":"boolean","description":"Boolean to control whether\nto ignore manual confirmation of the instance resizing. This can be helpful\nto work with some OpenStack clouds which automatically confirm resizing of\ninstances after some timeout.\n"}},"type":"object"},"openstack:compute/ServerGroupRules:ServerGroupRules":{"properties":{"maxServerPerHost":{"type":"integer","willReplaceOnChanges":true}},"type":"object"},"openstack:compute/VolumeAttachVendorOptions:VolumeAttachVendorOptions":{"properties":{"ignoreVolumeConfirmation":{"type":"boolean","description":"Boolean to control whether\nto ignore volume status confirmation of the attached volume. This can be helpful\nto work with some OpenStack clouds which don't have the Block Storage V3 API available.\n"}},"type":"object"},"openstack:compute/getInstanceV2Network:getInstanceV2Network":{"properties":{"fixedIpV4":{"type":"string","description":"The IPv4 address assigned to this network port.\n"},"fixedIpV6":{"type":"string","description":"The IPv6 address assigned to this network port.\n"},"mac":{"type":"string","description":"The MAC address assigned to this network interface.\n"},"name":{"type":"string","description":"The name of the network\n"},"port":{"type":"string","description":"The port UUID for this network\n"},"uuid":{"type":"string","description":"The UUID of the network\n"}},"type":"object","required":["fixedIpV4","fixedIpV6","mac","name","port","uuid"],"language":{"nodejs":{"requiredInputs":[]}}},"openstack:compute/getServergroupV2Rule:getServergroupV2Rule":{"properties":{"maxServerPerHost":{"type":"integer"}},"type":"object","required":["maxServerPerHost"],"language":{"nodejs":{"requiredInputs":[]}}},"openstack:database/ConfigurationConfiguration:ConfigurationConfiguration":{"properties":{"name":{"type":"string","description":"Configuration parameter name. Changing this creates a new resource.\n","willReplaceOnChanges":true},"stringType":{"type":"boolean","description":"Whether or not to store configuration parameter value as string. Changing this creates a new resource. See the below note for more information.\n","willReplaceOnChanges":true},"value":{"type":"string","description":"Configuration parameter value. Changing this creates a new resource.\n","willReplaceOnChanges":true}},"type":"object","required":["name","value"]},"openstack:database/ConfigurationDatastore:ConfigurationDatastore":{"properties":{"type":{"type":"string","description":"Database engine type to be used with this configuration. Changing this creates a new resource.\n","willReplaceOnChanges":true},"version":{"type":"string","description":"Version of database engine type to be used with this configuration. Changing this creates a new resource.\n","willReplaceOnChanges":true}},"type":"object","required":["type","version"]},"openstack:database/InstanceDatabase:InstanceDatabase":{"properties":{"charset":{"type":"string","description":"Database character set. Changing this creates a\nnew instance.\n","willReplaceOnChanges":true},"collate":{"type":"string","description":"Database collation. Changing this creates a new instance.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"Database to be created on new instance. Changing this creates a\nnew instance.\n","willReplaceOnChanges":true}},"type":"object","required":["name"]},"openstack:database/InstanceDatastore:InstanceDatastore":{"properties":{"type":{"type":"string","description":"Database engine type to be used in new instance. Changing this\ncreates a new instance.\n","willReplaceOnChanges":true},"version":{"type":"string","description":"Version of database engine type to be used in new instance.\nChanging this creates a new instance.\n","willReplaceOnChanges":true}},"type":"object","required":["type","version"]},"openstack:database/InstanceNetwork:InstanceNetwork":{"properties":{"fixedIpV4":{"type":"string","description":"Specifies a fixed IPv4 address to be used on this\nnetwork. Changing this creates a new instance.\n","willReplaceOnChanges":true},"fixedIpV6":{"type":"string","description":"Specifies a fixed IPv6 address to be used on this\nnetwork. Changing this creates a new instance.\n","willReplaceOnChanges":true},"port":{"type":"string","description":"The port UUID of a\nnetwork to attach to the instance. Changing this creates a new instance.\n","willReplaceOnChanges":true},"uuid":{"type":"string","description":"The network UUID to\nattach to the instance. Changing this creates a new instance.\n","willReplaceOnChanges":true}},"type":"object"},"openstack:database/InstanceUser:InstanceUser":{"properties":{"databases":{"type":"array","items":{"type":"string"},"description":"A list of databases that user will have access to. If not specified,\nuser has access to all databases on th einstance. Changing this creates a new instance.\n","willReplaceOnChanges":true},"host":{"type":"string","description":"An ip address or % sign indicating what ip addresses can connect with\nthis user credentials. Changing this creates a new instance.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"Username to be created on new instance. Changing this creates a\nnew instance.\n","willReplaceOnChanges":true},"password":{"type":"string","description":"User's password. Changing this creates a\nnew instance.\n","secret":true,"willReplaceOnChanges":true}},"type":"object","required":["name"]},"openstack:identity/ApplicationCredentialAccessRule:ApplicationCredentialAccessRule":{"properties":{"id":{"type":"string","description":"The ID of the existing access rule. The access rule ID of\nanother application credential can be provided.\n"},"method":{"type":"string","description":"The request method that the application credential is\npermitted to use for a given API endpoint. Allowed values: `POST`, `GET`,\n`HEAD`, `PATCH`, `PUT` and `DELETE`.\n","willReplaceOnChanges":true},"path":{"type":"string","description":"The API path that the application credential is permitted\nto access. May use named wildcards such as **{tag}** or the unnamed wildcard\n**\\*** to match against any string in the path up to a **/**, or the recursive\nwildcard **\\*\\*** to include **/** in the matched path.\n","willReplaceOnChanges":true},"service":{"type":"string","description":"The service type identifier for the service that the\napplication credential is granted to access. Must be a service type that is\nlisted in the service catalog and not a code name for a service. E.g.\n**identity**, **compute**, **volumev3**, **image**, **network**,\n**object-store**, **sharev2**, **dns**, **key-manager**, **monitoring**, etc.\n","willReplaceOnChanges":true}},"type":"object","required":["method","path","service"],"language":{"nodejs":{"requiredOutputs":["id","method","path","service"]}}},"openstack:identity/UserMultiFactorAuthRule:UserMultiFactorAuthRule":{"properties":{"rules":{"type":"array","items":{"type":"string"},"description":"A list of authentication plugins that the user must\nauthenticate with.\n"}},"type":"object","required":["rules"]},"openstack:identity/getAuthScopeRole:getAuthScopeRole":{"properties":{"roleId":{"type":"string","description":"The ID of the role.\n"},"roleName":{"type":"string","description":"The name of the role.\n"}},"type":"object","required":["roleId","roleName"],"language":{"nodejs":{"requiredInputs":[]}}},"openstack:identity/getAuthScopeServiceCatalog:getAuthScopeServiceCatalog":{"properties":{"endpoints":{"type":"array","items":{"$ref":"#/types/openstack:identity/getAuthScopeServiceCatalogEndpoint:getAuthScopeServiceCatalogEndpoint"},"description":"A list of endpoints for the service.\n"},"id":{"type":"string","description":"The ID of the endpoint.\n"},"name":{"type":"string","description":"The name of the scope. This is an arbitrary name which is\nonly used as a unique identifier so an actual token isn't used as the ID.\n"},"type":{"type":"string","description":"The type of the service.\n"}},"type":"object","required":["endpoints","id","name","type"],"language":{"nodejs":{"requiredInputs":[]}}},"openstack:identity/getAuthScopeServiceCatalogEndpoint:getAuthScopeServiceCatalogEndpoint":{"properties":{"id":{"type":"string","description":"The ID of the endpoint.\n"},"interface":{"type":"string","description":"The interface of the endpoint.\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Identity client.\nA Identity client is needed to retrieve tokens IDs. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"},"regionId":{"type":"string","description":"The region ID of the endpoint.\n"},"url":{"type":"string","description":"The URL of the endpoint.\n"}},"type":"object","required":["id","interface","region","regionId","url"],"language":{"nodejs":{"requiredInputs":[]}}},"openstack:index/BgpvpnPortAssociateV2Route:BgpvpnPortAssociateV2Route":{"properties":{"bgpvpnId":{"type":"string","description":"The ID of the BGP VPN to be advertised. Required\nif \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`bgpvpn`\" pulumi-lang-dotnet=\"`Bgpvpn`\" pulumi-lang-go=\"`bgpvpn`\" pulumi-lang-python=\"`bgpvpn`\" pulumi-lang-yaml=\"`bgpvpn`\" pulumi-lang-java=\"`bgpvpn`\"\u003e`bgpvpn`\u003c/span\u003e. Conflicts with \u003cspan pulumi-lang-nodejs=\"`prefix`\" pulumi-lang-dotnet=\"`Prefix`\" pulumi-lang-go=\"`prefix`\" pulumi-lang-python=\"`prefix`\" pulumi-lang-yaml=\"`prefix`\" pulumi-lang-java=\"`prefix`\"\u003e`prefix`\u003c/span\u003e.\n"},"localPref":{"type":"integer","description":"The BGP LOCAL\\_PREF value of the routes that will\nbe advertised.\n"},"prefix":{"type":"string","description":"The CIDR prefix (v4 or v6) to be advertised. Required\nif \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`prefix`\" pulumi-lang-dotnet=\"`Prefix`\" pulumi-lang-go=\"`prefix`\" pulumi-lang-python=\"`prefix`\" pulumi-lang-yaml=\"`prefix`\" pulumi-lang-java=\"`prefix`\"\u003e`prefix`\u003c/span\u003e. Conflicts with \u003cspan pulumi-lang-nodejs=\"`bgpvpnId`\" pulumi-lang-dotnet=\"`BgpvpnId`\" pulumi-lang-go=\"`bgpvpnId`\" pulumi-lang-python=\"`bgpvpn_id`\" pulumi-lang-yaml=\"`bgpvpnId`\" pulumi-lang-java=\"`bgpvpnId`\"\u003e`bgpvpn_id`\u003c/span\u003e.\n"},"type":{"type":"string","description":"Can be \u003cspan pulumi-lang-nodejs=\"`prefix`\" pulumi-lang-dotnet=\"`Prefix`\" pulumi-lang-go=\"`prefix`\" pulumi-lang-python=\"`prefix`\" pulumi-lang-yaml=\"`prefix`\" pulumi-lang-java=\"`prefix`\"\u003e`prefix`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`bgpvpn`\" pulumi-lang-dotnet=\"`Bgpvpn`\" pulumi-lang-go=\"`bgpvpn`\" pulumi-lang-python=\"`bgpvpn`\" pulumi-lang-yaml=\"`bgpvpn`\" pulumi-lang-java=\"`bgpvpn`\"\u003e`bgpvpn`\u003c/span\u003e. For the \u003cspan pulumi-lang-nodejs=\"`prefix`\" pulumi-lang-dotnet=\"`Prefix`\" pulumi-lang-go=\"`prefix`\" pulumi-lang-python=\"`prefix`\" pulumi-lang-yaml=\"`prefix`\" pulumi-lang-java=\"`prefix`\"\u003e`prefix`\u003c/span\u003e type, the\nCIDR prefix (v4 or v6) must be specified in the \u003cspan pulumi-lang-nodejs=\"`prefix`\" pulumi-lang-dotnet=\"`Prefix`\" pulumi-lang-go=\"`prefix`\" pulumi-lang-python=\"`prefix`\" pulumi-lang-yaml=\"`prefix`\" pulumi-lang-java=\"`prefix`\"\u003e`prefix`\u003c/span\u003e key. For the\n\u003cspan pulumi-lang-nodejs=\"`bgpvpn`\" pulumi-lang-dotnet=\"`Bgpvpn`\" pulumi-lang-go=\"`bgpvpn`\" pulumi-lang-python=\"`bgpvpn`\" pulumi-lang-yaml=\"`bgpvpn`\" pulumi-lang-java=\"`bgpvpn`\"\u003e`bgpvpn`\u003c/span\u003e type, the BGP VPN ID must be specified in the \u003cspan pulumi-lang-nodejs=\"`bgpvpnId`\" pulumi-lang-dotnet=\"`BgpvpnId`\" pulumi-lang-go=\"`bgpvpnId`\" pulumi-lang-python=\"`bgpvpn_id`\" pulumi-lang-yaml=\"`bgpvpnId`\" pulumi-lang-java=\"`bgpvpnId`\"\u003e`bgpvpn_id`\u003c/span\u003e key.\n"}},"type":"object","required":["type"]},"openstack:index/TaasTapMirrorV2Directions:TaasTapMirrorV2Directions":{"properties":{"in":{"type":"integer","description":"Declares ingress traffic to the port will be mirrored. The value\nis the identifier of the ERSPAN or GRE session between the source and destination,\nthis must be unique within the project.\n","willReplaceOnChanges":true},"out":{"type":"integer","description":"Declares egress traffic will be mirrored. The value is the\nidentifier of the ERSPAN or GRE session between the source and destination,\nthis must be unique within the project.\n","willReplaceOnChanges":true}},"type":"object"},"openstack:keymanager/ContainerV1Acl:ContainerV1Acl":{"properties":{"read":{"$ref":"#/types/openstack:keymanager/ContainerV1AclRead:ContainerV1AclRead"}},"type":"object","language":{"nodejs":{"requiredOutputs":["read"]}}},"openstack:keymanager/ContainerV1AclRead:ContainerV1AclRead":{"properties":{"createdAt":{"type":"string","description":"The date the container was created.\n"},"projectAccess":{"type":"boolean","description":"Whether the container is accessible project wide.\nDefaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"},"updatedAt":{"type":"string","description":"The date the container was last updated.\n"},"users":{"type":"array","items":{"type":"string"},"description":"The list of user IDs, which are allowed to access the\ncontainer, when \u003cspan pulumi-lang-nodejs=\"`projectAccess`\" pulumi-lang-dotnet=\"`ProjectAccess`\" pulumi-lang-go=\"`projectAccess`\" pulumi-lang-python=\"`project_access`\" pulumi-lang-yaml=\"`projectAccess`\" pulumi-lang-java=\"`projectAccess`\"\u003e`project_access`\u003c/span\u003e is set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["createdAt","updatedAt"]}}},"openstack:keymanager/ContainerV1Consumer:ContainerV1Consumer":{"properties":{"name":{"type":"string","description":"Human-readable name for the Container. Does not have\nto be unique.\n"},"url":{"type":"string","description":"The consumer URL.\n"}},"type":"object"},"openstack:keymanager/ContainerV1SecretRef:ContainerV1SecretRef":{"properties":{"name":{"type":"string","description":"The name of the secret reference. The reference names must correspond the container type, more details are available [here](https://docs.openstack.org/barbican/stein/api/reference/containers.html).\n"},"secretRef":{"type":"string","description":"The secret reference / where to find the secret, URL.\n"}},"type":"object","required":["secretRef"]},"openstack:keymanager/OrderV1Meta:OrderV1Meta":{"properties":{"algorithm":{"type":"string","description":"Algorithm to use for key generation.\n","willReplaceOnChanges":true},"bitLength":{"type":"integer","description":"Bit lenght of key to be generated.\n","willReplaceOnChanges":true},"expiration":{"type":"string","description":"This is a UTC timestamp in ISO 8601 format YYYY-MM-DDTHH:MM:SSZ. If set, the secret will not be available after this time.\n","willReplaceOnChanges":true},"mode":{"type":"string","description":"The mode to use for key generation.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"The name of the secret set by the user.\n","willReplaceOnChanges":true},"payloadContentType":{"type":"string","description":"The media type for the content of the secrets payload. Must be one of `text/plain`, `text/plain;charset=utf-8`, `text/plain; charset=utf-8`, `application/octet-stream`, `application/pkcs8`.\n","willReplaceOnChanges":true}},"type":"object","required":["algorithm","bitLength"]},"openstack:keymanager/SecretV1Acl:SecretV1Acl":{"properties":{"read":{"$ref":"#/types/openstack:keymanager/SecretV1AclRead:SecretV1AclRead"}},"type":"object","language":{"nodejs":{"requiredOutputs":["read"]}}},"openstack:keymanager/SecretV1AclRead:SecretV1AclRead":{"properties":{"createdAt":{"type":"string","description":"The date the secret was created.\n"},"projectAccess":{"type":"boolean","description":"Whether the secret is accessible project wide.\nDefaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"},"updatedAt":{"type":"string","description":"The date the secret was last updated.\n"},"users":{"type":"array","items":{"type":"string"},"description":"The list of user IDs, which are allowed to access the\nsecret, when \u003cspan pulumi-lang-nodejs=\"`projectAccess`\" pulumi-lang-dotnet=\"`ProjectAccess`\" pulumi-lang-go=\"`projectAccess`\" pulumi-lang-python=\"`project_access`\" pulumi-lang-yaml=\"`projectAccess`\" pulumi-lang-java=\"`projectAccess`\"\u003e`project_access`\u003c/span\u003e is set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["createdAt","updatedAt"]}}},"openstack:keymanager/getContainerAcl:getContainerAcl":{"properties":{"read":{"$ref":"#/types/openstack:keymanager/getContainerAclRead:getContainerAclRead"}},"type":"object","required":["read"],"language":{"nodejs":{"requiredInputs":[]}}},"openstack:keymanager/getContainerAclRead:getContainerAclRead":{"properties":{"createdAt":{"type":"string","description":"The date the container ACL was created.\n"},"projectAccess":{"type":"boolean","description":"Whether the container is accessible project wide.\n"},"updatedAt":{"type":"string","description":"The date the container ACL was last updated.\n"},"users":{"type":"array","items":{"type":"string"},"description":"The list of user IDs, which are allowed to access the container,\nwhen \u003cspan pulumi-lang-nodejs=\"`projectAccess`\" pulumi-lang-dotnet=\"`ProjectAccess`\" pulumi-lang-go=\"`projectAccess`\" pulumi-lang-python=\"`project_access`\" pulumi-lang-yaml=\"`projectAccess`\" pulumi-lang-java=\"`projectAccess`\"\u003e`project_access`\u003c/span\u003e is set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"}},"type":"object","required":["createdAt","updatedAt"],"language":{"nodejs":{"requiredInputs":[]}}},"openstack:keymanager/getContainerConsumer:getContainerConsumer":{"properties":{"name":{"type":"string","description":"The Container name.\n"},"url":{"type":"string","description":"The consumer URL.\n"}},"type":"object"},"openstack:keymanager/getContainerSecretRef:getContainerSecretRef":{"properties":{"name":{"type":"string","description":"The Container name.\n"},"secretRef":{"type":"string","description":"The secret reference / where to find the secret, URL.\n"}},"type":"object"},"openstack:keymanager/getSecretAcl:getSecretAcl":{"properties":{"read":{"$ref":"#/types/openstack:keymanager/getSecretAclRead:getSecretAclRead"}},"type":"object","required":["read"],"language":{"nodejs":{"requiredInputs":[]}}},"openstack:keymanager/getSecretAclRead:getSecretAclRead":{"properties":{"createdAt":{"type":"string","description":"The date the secret ACL was created.\n"},"projectAccess":{"type":"boolean","description":"Whether the secret is accessible project wide.\n"},"updatedAt":{"type":"string","description":"The date the secret ACL was last updated.\n"},"users":{"type":"array","items":{"type":"string"},"description":"The list of user IDs, which are allowed to access the secret, when\n\u003cspan pulumi-lang-nodejs=\"`projectAccess`\" pulumi-lang-dotnet=\"`ProjectAccess`\" pulumi-lang-go=\"`projectAccess`\" pulumi-lang-python=\"`project_access`\" pulumi-lang-yaml=\"`projectAccess`\" pulumi-lang-java=\"`projectAccess`\"\u003e`project_access`\u003c/span\u003e is set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"}},"type":"object","required":["createdAt","updatedAt"],"language":{"nodejs":{"requiredInputs":[]}}},"openstack:loadbalancer/MembersMember:MembersMember":{"properties":{"address":{"type":"string","description":"The IP address of the members to receive traffic from\nthe load balancer.\n"},"adminStateUp":{"type":"boolean","description":"The administrative state of the member.\nA valid value is true (UP) or false (DOWN). Defaults to true.\n"},"backup":{"type":"boolean","description":"A bool that indicates whether the member is\nbackup. **Requires octavia minor version 2.1 or later**.\n"},"id":{"type":"string","description":"The unique ID for the members.\n"},"monitorAddress":{"type":"string","description":"An alternate IP address used for health \nmonitoring a backend member.\n"},"monitorPort":{"type":"integer","description":"An alternate protocol port used for health \nmonitoring a backend member.\n"},"name":{"type":"string","description":"Human-readable name for the member.\n"},"protocolPort":{"type":"integer","description":"The port on which to listen for client traffic.\n"},"subnetId":{"type":"string","description":"The subnet in which to access the member.\n"},"weight":{"type":"integer","description":"A positive integer value that indicates the relative\nportion of traffic that this members should receive from the pool. For\nexample, a member with a weight of 10 receives five times as much traffic\nas a member with a weight of 2. Defaults to 1.\n"}},"type":"object","required":["address","protocolPort"],"language":{"nodejs":{"requiredOutputs":["address","id","protocolPort"]}}},"openstack:loadbalancer/PoolPersistence:PoolPersistence":{"properties":{"cookieName":{"type":"string","description":"The name of the cookie if persistence mode is set\nappropriately. Required if `type = APP_COOKIE`.\n"},"type":{"type":"string","description":"The type of persistence mode. The current specification\nsupports SOURCE_IP, HTTP_COOKIE, and APP_COOKIE.\n"}},"type":"object","required":["type"]},"openstack:loadbalancer/getListenerV2L7policy:getListenerV2L7policy":{"properties":{"id":{"type":"string"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"openstack:loadbalancer/getListenerV2Loadbalancer:getListenerV2Loadbalancer":{"properties":{"id":{"type":"string"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"openstack:loadbalancer/getListenerV2Pool:getListenerV2Pool":{"properties":{"id":{"type":"string"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"openstack:loadbalancer/getLoadbalancerV2Listener:getLoadbalancerV2Listener":{"properties":{"id":{"type":"string"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"openstack:loadbalancer/getLoadbalancerV2Pool:getLoadbalancerV2Pool":{"properties":{"id":{"type":"string"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"openstack:loadbalancer/getPoolV2Listener:getPoolV2Listener":{"properties":{"id":{"type":"string"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"openstack:loadbalancer/getPoolV2Loadbalancer:getPoolV2Loadbalancer":{"properties":{"id":{"type":"string"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredInputs":[]}}},"openstack:loadbalancer/getPoolV2Member:getPoolV2Member":{"properties":{"address":{"type":"string"},"adminStateUp":{"type":"boolean","description":"The administrative state of the Pool, which is up (true)\nor down (false).\n"},"backup":{"type":"boolean"},"id":{"type":"string"},"monitorAddress":{"type":"string"},"monitorPort":{"type":"integer"},"name":{"type":"string","description":"The name of the pool. Exactly one of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`poolId`\" pulumi-lang-dotnet=\"`PoolId`\" pulumi-lang-go=\"`poolId`\" pulumi-lang-python=\"`pool_id`\" pulumi-lang-yaml=\"`poolId`\" pulumi-lang-java=\"`poolId`\"\u003e`pool_id`\u003c/span\u003e\nis required to be set.\n"},"operatingStatus":{"type":"string","description":"The operating status of the pool.\n"},"poolId":{"type":"string","description":"The ID of the pool. Exactly one of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`poolId`\" pulumi-lang-dotnet=\"`PoolId`\" pulumi-lang-go=\"`poolId`\" pulumi-lang-python=\"`pool_id`\" pulumi-lang-yaml=\"`poolId`\" pulumi-lang-java=\"`poolId`\"\u003e`pool_id`\u003c/span\u003e\nis required to be set.\n"},"projectId":{"type":"string","description":"The owner (project/tenant) ID of the pool.\n"},"protocolPort":{"type":"integer"},"provisioningStatus":{"type":"string","description":"The provisioning status of the pool.\n"},"subnetId":{"type":"string"},"tags":{"type":"array","items":{"type":"string"},"description":"A set of tags applied to the loadbalancer's pool. The\nloadbalancer' pool will be returned if it has all of the specified tags.\n"},"weight":{"type":"integer"}},"type":"object","required":["address","adminStateUp","backup","id","monitorAddress","monitorPort","name","operatingStatus","poolId","projectId","protocolPort","provisioningStatus","subnetId","tags","weight"],"language":{"nodejs":{"requiredInputs":[]}}},"openstack:loadbalancer/getPoolV2SessionPersistence:getPoolV2SessionPersistence":{"properties":{"cookieName":{"type":"string"},"type":{"type":"string"}},"type":"object","required":["cookieName","type"],"language":{"nodejs":{"requiredInputs":[]}}},"openstack:networking/BgpSpeakerV2AdvertisedRoute:BgpSpeakerV2AdvertisedRoute":{"properties":{"destination":{"type":"string"},"nextHop":{"type":"string"}},"type":"object","language":{"nodejs":{"requiredOutputs":["destination","nextHop"]}}},"openstack:networking/NetworkSegment:NetworkSegment":{"properties":{"networkType":{"type":"string","description":"The type of physical network.\n"},"physicalNetwork":{"type":"string","description":"The physical network where this network is implemented.\n"},"segmentationId":{"type":"integer","description":"An isolated segment on the physical network.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["segmentationId"]}}},"openstack:networking/PortAllowedAddressPair:PortAllowedAddressPair":{"properties":{"ipAddress":{"type":"string","description":"The additional IP address.\n"},"macAddress":{"type":"string","description":"The additional MAC address.\n"}},"type":"object","required":["ipAddress"]},"openstack:networking/PortBinding:PortBinding":{"properties":{"hostId":{"type":"string","description":"The ID of the host to allocate port on.\n"},"profile":{"type":"string","description":"Custom data to be passed as `binding:profile`. Data\nmust be passed as JSON.\n"},"vifDetails":{"type":"object","additionalProperties":{"type":"string"},"description":"A map of JSON strings containing additional\ndetails for this specific binding.\n"},"vifType":{"type":"string","description":"The VNIC type of the port binding.\n"},"vnicType":{"type":"string","description":"VNIC type for the port. Can either be \u003cspan pulumi-lang-nodejs=\"`direct`\" pulumi-lang-dotnet=\"`Direct`\" pulumi-lang-go=\"`direct`\" pulumi-lang-python=\"`direct`\" pulumi-lang-yaml=\"`direct`\" pulumi-lang-java=\"`direct`\"\u003e`direct`\u003c/span\u003e,\n`direct-physical`, \u003cspan pulumi-lang-nodejs=\"`macvtap`\" pulumi-lang-dotnet=\"`Macvtap`\" pulumi-lang-go=\"`macvtap`\" pulumi-lang-python=\"`macvtap`\" pulumi-lang-yaml=\"`macvtap`\" pulumi-lang-java=\"`macvtap`\"\u003e`macvtap`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`normal`\" pulumi-lang-dotnet=\"`Normal`\" pulumi-lang-go=\"`normal`\" pulumi-lang-python=\"`normal`\" pulumi-lang-yaml=\"`normal`\" pulumi-lang-java=\"`normal`\"\u003e`normal`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`baremetal`\" pulumi-lang-dotnet=\"`Baremetal`\" pulumi-lang-go=\"`baremetal`\" pulumi-lang-python=\"`baremetal`\" pulumi-lang-yaml=\"`baremetal`\" pulumi-lang-java=\"`baremetal`\"\u003e`baremetal`\u003c/span\u003e or `virtio-forwarder`.\nDefault value is \u003cspan pulumi-lang-nodejs=\"`normal`\" pulumi-lang-dotnet=\"`Normal`\" pulumi-lang-go=\"`normal`\" pulumi-lang-python=\"`normal`\" pulumi-lang-yaml=\"`normal`\" pulumi-lang-java=\"`normal`\"\u003e`normal`\u003c/span\u003e. It can be updated on unbound ports only.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["hostId","vifDetails","vifType"]}}},"openstack:networking/PortExtraDhcpOption:PortExtraDhcpOption":{"properties":{"ipVersion":{"type":"integer","description":"IP protocol version. Defaults to 4.\n"},"name":{"type":"string","description":"Name of the DHCP option.\n"},"value":{"type":"string","description":"Value of the DHCP option.\n"}},"type":"object","required":["name","value"]},"openstack:networking/PortFixedIp:PortFixedIp":{"properties":{"ipAddress":{"type":"string","description":"IP address desired in the subnet for this port. If\nyou don't specify \u003cspan pulumi-lang-nodejs=\"`ipAddress`\" pulumi-lang-dotnet=\"`IpAddress`\" pulumi-lang-go=\"`ipAddress`\" pulumi-lang-python=\"`ip_address`\" pulumi-lang-yaml=\"`ipAddress`\" pulumi-lang-java=\"`ipAddress`\"\u003e`ip_address`\u003c/span\u003e, an available IP address from the specified\nsubnet will be allocated to this port. This field will not be populated if it\nis left blank or omitted. To retrieve the assigned IP address, use the\n\u003cspan pulumi-lang-nodejs=\"`allFixedIps`\" pulumi-lang-dotnet=\"`AllFixedIps`\" pulumi-lang-go=\"`allFixedIps`\" pulumi-lang-python=\"`all_fixed_ips`\" pulumi-lang-yaml=\"`allFixedIps`\" pulumi-lang-java=\"`allFixedIps`\"\u003e`all_fixed_ips`\u003c/span\u003e attribute.\n"},"subnetId":{"type":"string","description":"Subnet in which to allocate IP address for\nthis port.\n"}},"type":"object"},"openstack:networking/RouterExternalFixedIp:RouterExternalFixedIp":{"properties":{"ipAddress":{"type":"string","description":"The IP address to set on the router.\n"},"subnetId":{"type":"string","description":"Subnet in which the fixed IP belongs to.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["ipAddress","subnetId"]}}},"openstack:networking/RouterRoutesV2Route:RouterRoutesV2Route":{"properties":{"destinationCidr":{"type":"string","description":"CIDR block to match on the packet’s\ndestination IP.\n"},"nextHop":{"type":"string","description":"IP address of the next hop gateway.\n"}},"type":"object","required":["destinationCidr","nextHop"]},"openstack:networking/RouterVendorOptions:RouterVendorOptions":{"properties":{"setRouterGatewayAfterCreate":{"type":"boolean","description":"Boolean to control whether\nthe Router gateway is assigned during creation or updated after creation.\n"}},"type":"object"},"openstack:networking/SubnetAllocationPool:SubnetAllocationPool":{"properties":{"end":{"type":"string","description":"The ending address.\n"},"start":{"type":"string","description":"The starting address.\n"}},"type":"object","required":["end","start"]},"openstack:networking/TrunkSubPort:TrunkSubPort":{"properties":{"portId":{"type":"string","description":"The ID of the port to be made a subport of the trunk.\n"},"segmentationId":{"type":"integer","description":"The numeric id of the subport segment.\n"},"segmentationType":{"type":"string","description":"The segmentation technology to use, e.g., \"vlan\".\n"}},"type":"object","required":["portId","segmentationId","segmentationType"]},"openstack:networking/getNetworkSegment:getNetworkSegment":{"properties":{"networkType":{"type":"string"},"physicalNetwork":{"type":"string"},"segmentationId":{"type":"integer"}},"type":"object","required":["networkType","physicalNetwork","segmentationId"],"language":{"nodejs":{"requiredInputs":[]}}},"openstack:networking/getPortAllowedAddressPair:getPortAllowedAddressPair":{"properties":{"ipAddress":{"type":"string","description":"The additional IP address.\n"},"macAddress":{"type":"string","description":"The MAC address of the port.\n"}},"type":"object","required":["ipAddress","macAddress"],"language":{"nodejs":{"requiredInputs":[]}}},"openstack:networking/getPortBinding:getPortBinding":{"properties":{"hostId":{"type":"string","description":"The ID of the host, which has the allocatee port.\n"},"profile":{"type":"string","description":"A JSON string containing the binding profile information.\n"},"vifDetails":{"type":"object","additionalProperties":{"type":"string"},"description":"A map of JSON strings containing additional details for this\nspecific binding.\n"},"vifType":{"type":"string","description":"The VNIC type of the port binding.\n"},"vnicType":{"type":"string","description":"VNIC type for the port.\n"}},"type":"object","required":["hostId","profile","vifDetails","vifType","vnicType"],"language":{"nodejs":{"requiredInputs":[]}}},"openstack:networking/getPortExtraDhcpOption:getPortExtraDhcpOption":{"properties":{"ipVersion":{"type":"integer","description":"IP protocol version\n"},"name":{"type":"string","description":"The name of the port.\n"},"value":{"type":"string","description":"Value of the DHCP option.\n"}},"type":"object","required":["ipVersion","name","value"],"language":{"nodejs":{"requiredInputs":[]}}},"openstack:networking/getRouterExternalFixedIp:getRouterExternalFixedIp":{"properties":{"ipAddress":{"type":"string","description":"The IP address to set on the router.\n"},"subnetId":{"type":"string","description":"Subnet in which the fixed IP belongs to.\n"}},"type":"object"},"openstack:networking/getRouterRoute:getRouterRoute":{"properties":{"destinationCidr":{"type":"string"},"nextHop":{"type":"string"}},"type":"object","required":["destinationCidr","nextHop"],"language":{"nodejs":{"requiredInputs":[]}}},"openstack:networking/getSubnetAllocationPool:getSubnetAllocationPool":{"properties":{"end":{"type":"string"},"start":{"type":"string"}},"type":"object","required":["end","start"],"language":{"nodejs":{"requiredInputs":[]}}},"openstack:networking/getSubnetHostRoute:getSubnetHostRoute":{"properties":{"destinationCidr":{"type":"string"},"nextHop":{"type":"string"}},"type":"object","required":["destinationCidr","nextHop"],"language":{"nodejs":{"requiredInputs":[]}}},"openstack:networking/getTrunkSubPort:getTrunkSubPort":{"properties":{"portId":{"type":"string","description":"The ID of the trunk parent port.\n"},"segmentationId":{"type":"integer","description":"The numeric id of the subport segment.\n"},"segmentationType":{"type":"string","description":"The segmenation tecnology used, e.g., \"vlan\".\n"}},"type":"object","required":["portId","segmentationId","segmentationType"],"language":{"nodejs":{"requiredInputs":[]}}},"openstack:objectstorage/ContainerVersioningLegacy:ContainerVersioningLegacy":{"properties":{"location":{"type":"string","description":"Container in which versions will be stored.\n"},"type":{"type":"string","description":"Versioning type which can be \u003cspan pulumi-lang-nodejs=\"`versions`\" pulumi-lang-dotnet=\"`Versions`\" pulumi-lang-go=\"`versions`\" pulumi-lang-python=\"`versions`\" pulumi-lang-yaml=\"`versions`\" pulumi-lang-java=\"`versions`\"\u003e`versions`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`history`\" pulumi-lang-dotnet=\"`History`\" pulumi-lang-go=\"`history`\" pulumi-lang-python=\"`history`\" pulumi-lang-yaml=\"`history`\" pulumi-lang-java=\"`history`\"\u003e`history`\u003c/span\u003e\naccording to [OpenStack\ndocumentation](https://docs.openstack.org/swift/latest/api/object_versioning.html).\n"}},"type":"object","required":["location","type"]},"openstack:orchestration/StackV1StackOutput:StackV1StackOutput":{"properties":{"description":{"type":"string","description":"The description of the stack resource.\n"},"outputKey":{"type":"string"},"outputValue":{"type":"string"}},"type":"object","required":["outputKey","outputValue"],"language":{"nodejs":{"requiredOutputs":["description","outputKey","outputValue"]}}},"openstack:sharedfilesystem/ShareExportLocation:ShareExportLocation":{"properties":{"path":{"type":"string"},"preferred":{"type":"string"}},"type":"object","language":{"nodejs":{"requiredOutputs":["path","preferred"]}}},"openstack:sharedfilesystem/getShareExportLocation:getShareExportLocation":{"properties":{"path":{"type":"string"},"preferred":{"type":"string"}},"type":"object","required":["path","preferred"],"language":{"nodejs":{"requiredInputs":[]}}},"openstack:vpnaas/IkePolicyLifetime:IkePolicyLifetime":{"properties":{"units":{"type":"string"},"value":{"type":"integer","description":"The value for the lifetime of the security association. Must be a positive integer.\nDefault is 3600.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["units","value"]}}},"openstack:vpnaas/IpSecPolicyLifetime:IpSecPolicyLifetime":{"properties":{"units":{"type":"string"},"value":{"type":"integer","description":"The value for the lifetime of the security association. Must be a positive integer.\nDefault is 3600.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["units","value"]}}},"openstack:vpnaas/SiteConnectionDpd:SiteConnectionDpd":{"properties":{"action":{"type":"string","description":"The dead peer detection (DPD) action.\nA valid value is clear, hold, restart, disabled, or restart-by-peer.\nDefault value is hold.\n"},"interval":{"type":"integer","description":"The dead peer detection (DPD) interval, in seconds.\nA valid value is a positive integer.\nDefault is 30.\n"},"timeout":{"type":"integer","description":"The dead peer detection (DPD) timeout in seconds.\nA valid value is a positive integer that is greater than the DPD interval value.\nDefault is 120.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["action","interval","timeout"]}}}},"provider":{"description":"The provider type for the openstack 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":{"allowReauth":{"type":"boolean","description":"If set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, OpenStack authorization won't be perfomed\nautomatically, if the initial auth token get expired. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e"},"applicationCredentialId":{"type":"string","description":"Application Credential ID to login with."},"applicationCredentialName":{"type":"string","description":"Application Credential name to login with."},"applicationCredentialSecret":{"type":"string","description":"Application Credential secret to login with."},"authUrl":{"type":"string","description":"The Identity authentication URL."},"cacertFile":{"type":"string","description":"A Custom CA certificate."},"cert":{"type":"string","description":"A client certificate to authenticate with."},"cloud":{"type":"string","description":"An entry in a `clouds.yaml` file to use."},"defaultDomain":{"type":"string","description":"The name of the Domain ID to scope to if no other domain is specified. Defaults to \u003cspan pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\"\u003e`default`\u003c/span\u003e (Identity v3)."},"delayedAuth":{"type":"boolean","description":"If set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, OpenStack authorization will be perfomed,\nevery time the service provider client is called. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e."},"disableNoCacheHeader":{"type":"boolean","description":"If set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the HTTP `Cache-Control: no-cache` header will not be added by default to all API requests."},"domainId":{"type":"string","description":"The ID of the Domain to scope to (Identity v3)."},"domainName":{"type":"string","description":"The name of the Domain to scope to (Identity v3)."},"enableLogging":{"type":"boolean","description":"Outputs very verbose logs with all calls made to and responses from OpenStack"},"endpointOverrides":{"type":"object","additionalProperties":{"type":"string"},"description":"A map of services with an endpoint to override what was\nfrom the Keystone catalog"},"endpointType":{"type":"string"},"insecure":{"type":"boolean","description":"Trust self-signed certificates."},"key":{"type":"string","description":"A client private key to authenticate with."},"maxRetries":{"type":"integer","description":"How many times HTTP connection should be retried until giving up."},"password":{"type":"string","description":"Password to login with.","secret":true},"projectDomainId":{"type":"string","description":"The ID of the domain where the proejct resides (Identity v3)."},"projectDomainName":{"type":"string","description":"The name of the domain where the project resides (Identity v3)."},"region":{"type":"string","description":"The OpenStack region to connect to."},"swauth":{"type":"boolean","description":"Use Swift's authentication system instead of Keystone. Only used for\ninteraction with Swift."},"systemScope":{"type":"boolean","description":"If set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, system scoped authorization will be enabled. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e (Identity v3)."},"tenantId":{"type":"string","description":"The ID of the Tenant (Identity v2) or Project (Identity v3)\nto login with."},"tenantName":{"type":"string","description":"The name of the Tenant (Identity v2) or Project (Identity v3)\nto login with."},"token":{"type":"string","description":"Authentication token to use as an alternative to username/password."},"userDomainId":{"type":"string","description":"The ID of the domain where the user resides (Identity v3)."},"userDomainName":{"type":"string","description":"The name of the domain where the user resides (Identity v3)."},"userId":{"type":"string","description":"User ID to login with."},"userName":{"type":"string","description":"Username to login with."}},"inputProperties":{"allowReauth":{"type":"boolean","description":"If set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, OpenStack authorization won't be perfomed\nautomatically, if the initial auth token get expired. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e","defaultInfo":{"environment":["OS_ALLOW_REAUTH"]}},"applicationCredentialId":{"type":"string","description":"Application Credential ID to login with."},"applicationCredentialName":{"type":"string","description":"Application Credential name to login with."},"applicationCredentialSecret":{"type":"string","description":"Application Credential secret to login with."},"authUrl":{"type":"string","description":"The Identity authentication URL."},"cacertFile":{"type":"string","description":"A Custom CA certificate."},"cert":{"type":"string","description":"A client certificate to authenticate with."},"cloud":{"type":"string","description":"An entry in a `clouds.yaml` file to use.","defaultInfo":{"environment":["OS_CLOUD"]}},"defaultDomain":{"type":"string","description":"The name of the Domain ID to scope to if no other domain is specified. Defaults to \u003cspan pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\"\u003e`default`\u003c/span\u003e (Identity v3)."},"delayedAuth":{"type":"boolean","description":"If set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, OpenStack authorization will be perfomed,\nevery time the service provider client is called. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.","defaultInfo":{"environment":["OS_DELAYED_AUTH"]}},"disableNoCacheHeader":{"type":"boolean","description":"If set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the HTTP `Cache-Control: no-cache` header will not be added by default to all API requests."},"domainId":{"type":"string","description":"The ID of the Domain to scope to (Identity v3)."},"domainName":{"type":"string","description":"The name of the Domain to scope to (Identity v3)."},"enableLogging":{"type":"boolean","description":"Outputs very verbose logs with all calls made to and responses from OpenStack"},"endpointOverrides":{"type":"object","additionalProperties":{"type":"string"},"description":"A map of services with an endpoint to override what was\nfrom the Keystone catalog"},"endpointType":{"type":"string","defaultInfo":{"environment":["OS_ENDPOINT_TYPE"]}},"insecure":{"type":"boolean","description":"Trust self-signed certificates.","defaultInfo":{"environment":["OS_INSECURE"]}},"key":{"type":"string","description":"A client private key to authenticate with."},"maxRetries":{"type":"integer","description":"How many times HTTP connection should be retried until giving up."},"password":{"type":"string","description":"Password to login with.","secret":true},"projectDomainId":{"type":"string","description":"The ID of the domain where the proejct resides (Identity v3)."},"projectDomainName":{"type":"string","description":"The name of the domain where the project resides (Identity v3)."},"region":{"type":"string","description":"The OpenStack region to connect to.","defaultInfo":{"environment":["OS_REGION_NAME"]}},"swauth":{"type":"boolean","description":"Use Swift's authentication system instead of Keystone. Only used for\ninteraction with Swift.","defaultInfo":{"environment":["OS_SWAUTH"]}},"systemScope":{"type":"boolean","description":"If set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, system scoped authorization will be enabled. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e (Identity v3)."},"tenantId":{"type":"string","description":"The ID of the Tenant (Identity v2) or Project (Identity v3)\nto login with."},"tenantName":{"type":"string","description":"The name of the Tenant (Identity v2) or Project (Identity v3)\nto login with."},"token":{"type":"string","description":"Authentication token to use as an alternative to username/password."},"userDomainId":{"type":"string","description":"The ID of the domain where the user resides (Identity v3)."},"userDomainName":{"type":"string","description":"The name of the domain where the user resides (Identity v3)."},"userId":{"type":"string","description":"User ID to login with."},"userName":{"type":"string","description":"Username to login with."}},"methods":{"terraformConfig":"pulumi:providers:openstack/terraformConfig"}},"resources":{"openstack:bgpvpn/networkAssociateV2:NetworkAssociateV2":{"description":"Manages a V2 BGP VPN network association resource within OpenStack.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst association1 = new openstack.bgpvpn.NetworkAssociateV2(\"association_1\", {\n    bgpvpnId: \"e7189337-5684-46ee-bcb1-44f1a57066c9\",\n    networkId: \"de83d56c-4d2f-44f7-ac24-af393252204f\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nassociation1 = openstack.bgpvpn.NetworkAssociateV2(\"association_1\",\n    bgpvpn_id=\"e7189337-5684-46ee-bcb1-44f1a57066c9\",\n    network_id=\"de83d56c-4d2f-44f7-ac24-af393252204f\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var association1 = new OpenStack.BGPVPN.NetworkAssociateV2(\"association_1\", new()\n    {\n        BgpvpnId = \"e7189337-5684-46ee-bcb1-44f1a57066c9\",\n        NetworkId = \"de83d56c-4d2f-44f7-ac24-af393252204f\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/bgpvpn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bgpvpn.NewNetworkAssociateV2(ctx, \"association_1\", \u0026bgpvpn.NetworkAssociateV2Args{\n\t\t\tBgpvpnId:  pulumi.String(\"e7189337-5684-46ee-bcb1-44f1a57066c9\"),\n\t\t\tNetworkId: pulumi.String(\"de83d56c-4d2f-44f7-ac24-af393252204f\"),\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.openstack.bgpvpn.NetworkAssociateV2;\nimport com.pulumi.openstack.bgpvpn.NetworkAssociateV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 association1 = new NetworkAssociateV2(\"association1\", NetworkAssociateV2Args.builder()\n            .bgpvpnId(\"e7189337-5684-46ee-bcb1-44f1a57066c9\")\n            .networkId(\"de83d56c-4d2f-44f7-ac24-af393252204f\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  association1:\n    type: openstack:bgpvpn:NetworkAssociateV2\n    name: association_1\n    properties:\n      bgpvpnId: e7189337-5684-46ee-bcb1-44f1a57066c9\n      networkId: de83d56c-4d2f-44f7-ac24-af393252204f\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBGP VPN network associations can be imported using the BGP VPN ID and BGP VPN\n\nnetwork association ID separated by a slash, e.g.:\n\nhcl\n\n```sh\n$ pulumi import openstack:bgpvpn/networkAssociateV2:NetworkAssociateV2 association_1 2145aaa9-edaa-44fb-9815-e47a96677a72/67bb952a-f9d1-4fc8-ae84-082253a879d4\n```\n\n","properties":{"bgpvpnId":{"type":"string","description":"The ID of the BGP VPN to which the network will be\nassociated. Changing this creates a new BGP VPN network association\n"},"networkId":{"type":"string","description":"The ID of the network to be associated with the BGP\nVPN. Changing this creates a new BGP VPN network association.\n"},"projectId":{"type":"string","description":"The ID of the project that owns the BGP VPN network\nassociation. Only administrative and users with \u003cspan pulumi-lang-nodejs=\"`advsvc`\" pulumi-lang-dotnet=\"`Advsvc`\" pulumi-lang-go=\"`advsvc`\" pulumi-lang-python=\"`advsvc`\" pulumi-lang-yaml=\"`advsvc`\" pulumi-lang-java=\"`advsvc`\"\u003e`advsvc`\u003c/span\u003e role can specify a\nproject ID other than their own. Changing this creates a new BGP VPN network\nassociation.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a BGP VPN network association. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new BGP VPN network association.\n"}},"required":["bgpvpnId","networkId","projectId","region"],"inputProperties":{"bgpvpnId":{"type":"string","description":"The ID of the BGP VPN to which the network will be\nassociated. Changing this creates a new BGP VPN network association\n","willReplaceOnChanges":true},"networkId":{"type":"string","description":"The ID of the network to be associated with the BGP\nVPN. Changing this creates a new BGP VPN network association.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"The ID of the project that owns the BGP VPN network\nassociation. Only administrative and users with \u003cspan pulumi-lang-nodejs=\"`advsvc`\" pulumi-lang-dotnet=\"`Advsvc`\" pulumi-lang-go=\"`advsvc`\" pulumi-lang-python=\"`advsvc`\" pulumi-lang-yaml=\"`advsvc`\" pulumi-lang-java=\"`advsvc`\"\u003e`advsvc`\u003c/span\u003e role can specify a\nproject ID other than their own. Changing this creates a new BGP VPN network\nassociation.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a BGP VPN network association. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new BGP VPN network association.\n","willReplaceOnChanges":true}},"requiredInputs":["bgpvpnId","networkId"],"stateInputs":{"description":"Input properties used for looking up and filtering NetworkAssociateV2 resources.\n","properties":{"bgpvpnId":{"type":"string","description":"The ID of the BGP VPN to which the network will be\nassociated. Changing this creates a new BGP VPN network association\n","willReplaceOnChanges":true},"networkId":{"type":"string","description":"The ID of the network to be associated with the BGP\nVPN. Changing this creates a new BGP VPN network association.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"The ID of the project that owns the BGP VPN network\nassociation. Only administrative and users with \u003cspan pulumi-lang-nodejs=\"`advsvc`\" pulumi-lang-dotnet=\"`Advsvc`\" pulumi-lang-go=\"`advsvc`\" pulumi-lang-python=\"`advsvc`\" pulumi-lang-yaml=\"`advsvc`\" pulumi-lang-java=\"`advsvc`\"\u003e`advsvc`\u003c/span\u003e role can specify a\nproject ID other than their own. Changing this creates a new BGP VPN network\nassociation.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a BGP VPN network association. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new BGP VPN network association.\n","willReplaceOnChanges":true}},"type":"object"},"aliases":[{"type":"openstack:index/bgpvpnNetworkAssociateV2:BgpvpnNetworkAssociateV2"}]},"openstack:bgpvpn/portAssociateV2:PortAssociateV2":{"description":"Manages a V2 BGP VPN port association resource within OpenStack.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst association1 = new openstack.bgpvpn.PortAssociateV2(\"association_1\", {\n    bgpvpnId: \"19382ec5-8098-47d9-a9c6-6270c91103f4\",\n    portId: \"b83a95b8-c2c8-4eac-9a9e-ddc85bd1266f\",\n    routes: [\n        {\n            type: \"prefix\",\n            prefix: \"192.168.170.1/32\",\n        },\n        {\n            type: \"bgpvpn\",\n            bgpvpnId: \"35af1cc6-3d0f-4c5d-86f8-8cdb508d3f0c\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nassociation1 = openstack.bgpvpn.PortAssociateV2(\"association_1\",\n    bgpvpn_id=\"19382ec5-8098-47d9-a9c6-6270c91103f4\",\n    port_id=\"b83a95b8-c2c8-4eac-9a9e-ddc85bd1266f\",\n    routes=[\n        {\n            \"type\": \"prefix\",\n            \"prefix\": \"192.168.170.1/32\",\n        },\n        {\n            \"type\": \"bgpvpn\",\n            \"bgpvpn_id\": \"35af1cc6-3d0f-4c5d-86f8-8cdb508d3f0c\",\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var association1 = new OpenStack.BGPVPN.PortAssociateV2(\"association_1\", new()\n    {\n        BgpvpnId = \"19382ec5-8098-47d9-a9c6-6270c91103f4\",\n        PortId = \"b83a95b8-c2c8-4eac-9a9e-ddc85bd1266f\",\n        Routes = new[]\n        {\n            new OpenStack.BGPVPN.Inputs.PortAssociateV2RouteArgs\n            {\n                Type = \"prefix\",\n                Prefix = \"192.168.170.1/32\",\n            },\n            new OpenStack.BGPVPN.Inputs.PortAssociateV2RouteArgs\n            {\n                Type = \"bgpvpn\",\n                BgpvpnId = \"35af1cc6-3d0f-4c5d-86f8-8cdb508d3f0c\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/bgpvpn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bgpvpn.NewPortAssociateV2(ctx, \"association_1\", \u0026bgpvpn.PortAssociateV2Args{\n\t\t\tBgpvpnId: pulumi.String(\"19382ec5-8098-47d9-a9c6-6270c91103f4\"),\n\t\t\tPortId:   pulumi.String(\"b83a95b8-c2c8-4eac-9a9e-ddc85bd1266f\"),\n\t\t\tRoutes: bgpvpn.PortAssociateV2RouteArray{\n\t\t\t\t\u0026bgpvpn.PortAssociateV2RouteArgs{\n\t\t\t\t\tType:   pulumi.String(\"prefix\"),\n\t\t\t\t\tPrefix: pulumi.String(\"192.168.170.1/32\"),\n\t\t\t\t},\n\t\t\t\t\u0026bgpvpn.PortAssociateV2RouteArgs{\n\t\t\t\t\tType:     pulumi.String(\"bgpvpn\"),\n\t\t\t\t\tBgpvpnId: pulumi.String(\"35af1cc6-3d0f-4c5d-86f8-8cdb508d3f0c\"),\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.openstack.bgpvpn.PortAssociateV2;\nimport com.pulumi.openstack.bgpvpn.PortAssociateV2Args;\nimport com.pulumi.openstack.bgpvpn.inputs.PortAssociateV2RouteArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 association1 = new PortAssociateV2(\"association1\", PortAssociateV2Args.builder()\n            .bgpvpnId(\"19382ec5-8098-47d9-a9c6-6270c91103f4\")\n            .portId(\"b83a95b8-c2c8-4eac-9a9e-ddc85bd1266f\")\n            .routes(            \n                PortAssociateV2RouteArgs.builder()\n                    .type(\"prefix\")\n                    .prefix(\"192.168.170.1/32\")\n                    .build(),\n                PortAssociateV2RouteArgs.builder()\n                    .type(\"bgpvpn\")\n                    .bgpvpnId(\"35af1cc6-3d0f-4c5d-86f8-8cdb508d3f0c\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  association1:\n    type: openstack:bgpvpn:PortAssociateV2\n    name: association_1\n    properties:\n      bgpvpnId: 19382ec5-8098-47d9-a9c6-6270c91103f4\n      portId: b83a95b8-c2c8-4eac-9a9e-ddc85bd1266f\n      routes:\n        - type: prefix\n          prefix: 192.168.170.1/32\n        - type: bgpvpn\n          bgpvpnId: 35af1cc6-3d0f-4c5d-86f8-8cdb508d3f0c\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBGP VPN port associations can be imported using the BGP VPN ID and BGP VPN port\n\nassociation ID separated by a slash, e.g.:\n\nhcl\n\n```sh\n$ pulumi import openstack:bgpvpn/portAssociateV2:PortAssociateV2 association_1 5bb44ecf-f8fe-4d75-8fc5-313f96ee2696/8f8fc660-3f28-414e-896a-0c7c51162fcf\n```\n\n","properties":{"advertiseFixedIps":{"type":"boolean","description":"A boolean flag indicating whether fixed\nIPs should be advertised. Defaults to true.\n"},"bgpvpnId":{"type":"string","description":"The ID of the BGP VPN to which the port will be\nassociated. Changing this creates a new BGP VPN port association.\n"},"portId":{"type":"string","description":"The ID of the port to be associated with the BGP VPN.\nChanging this creates a new BGP VPN port association.\n"},"projectId":{"type":"string","description":"The ID of the project that owns the port\nassociation. Only administrative and users with \u003cspan pulumi-lang-nodejs=\"`advsvc`\" pulumi-lang-dotnet=\"`Advsvc`\" pulumi-lang-go=\"`advsvc`\" pulumi-lang-python=\"`advsvc`\" pulumi-lang-yaml=\"`advsvc`\" pulumi-lang-java=\"`advsvc`\"\u003e`advsvc`\u003c/span\u003e role can specify a\nproject ID other than their own. Changing this creates a new BGP VPN port\nassociation.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a BGP VPN port association. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new BGP VPN port association.\n"},"routes":{"type":"array","items":{"$ref":"#/types/openstack:bgpvpn/PortAssociateV2Route:PortAssociateV2Route"},"description":"A list of dictionaries containing the following keys:\n"}},"required":["advertiseFixedIps","bgpvpnId","portId","projectId","region"],"inputProperties":{"advertiseFixedIps":{"type":"boolean","description":"A boolean flag indicating whether fixed\nIPs should be advertised. Defaults to true.\n"},"bgpvpnId":{"type":"string","description":"The ID of the BGP VPN to which the port will be\nassociated. Changing this creates a new BGP VPN port association.\n","willReplaceOnChanges":true},"portId":{"type":"string","description":"The ID of the port to be associated with the BGP VPN.\nChanging this creates a new BGP VPN port association.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"The ID of the project that owns the port\nassociation. Only administrative and users with \u003cspan pulumi-lang-nodejs=\"`advsvc`\" pulumi-lang-dotnet=\"`Advsvc`\" pulumi-lang-go=\"`advsvc`\" pulumi-lang-python=\"`advsvc`\" pulumi-lang-yaml=\"`advsvc`\" pulumi-lang-java=\"`advsvc`\"\u003e`advsvc`\u003c/span\u003e role can specify a\nproject ID other than their own. Changing this creates a new BGP VPN port\nassociation.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a BGP VPN port association. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new BGP VPN port association.\n","willReplaceOnChanges":true},"routes":{"type":"array","items":{"$ref":"#/types/openstack:bgpvpn/PortAssociateV2Route:PortAssociateV2Route"},"description":"A list of dictionaries containing the following keys:\n"}},"requiredInputs":["bgpvpnId","portId"],"stateInputs":{"description":"Input properties used for looking up and filtering PortAssociateV2 resources.\n","properties":{"advertiseFixedIps":{"type":"boolean","description":"A boolean flag indicating whether fixed\nIPs should be advertised. Defaults to true.\n"},"bgpvpnId":{"type":"string","description":"The ID of the BGP VPN to which the port will be\nassociated. Changing this creates a new BGP VPN port association.\n","willReplaceOnChanges":true},"portId":{"type":"string","description":"The ID of the port to be associated with the BGP VPN.\nChanging this creates a new BGP VPN port association.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"The ID of the project that owns the port\nassociation. Only administrative and users with \u003cspan pulumi-lang-nodejs=\"`advsvc`\" pulumi-lang-dotnet=\"`Advsvc`\" pulumi-lang-go=\"`advsvc`\" pulumi-lang-python=\"`advsvc`\" pulumi-lang-yaml=\"`advsvc`\" pulumi-lang-java=\"`advsvc`\"\u003e`advsvc`\u003c/span\u003e role can specify a\nproject ID other than their own. Changing this creates a new BGP VPN port\nassociation.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a BGP VPN port association. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new BGP VPN port association.\n","willReplaceOnChanges":true},"routes":{"type":"array","items":{"$ref":"#/types/openstack:bgpvpn/PortAssociateV2Route:PortAssociateV2Route"},"description":"A list of dictionaries containing the following keys:\n"}},"type":"object"},"aliases":[{"type":"openstack:index/bgpvpnPortAssociateV2:BgpvpnPortAssociateV2"}]},"openstack:bgpvpn/routerAssociateV2:RouterAssociateV2":{"description":"Manages a V2 BGP VPN router association resource within OpenStack.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst association1 = new openstack.bgpvpn.RouterAssociateV2(\"association_1\", {\n    bgpvpnId: \"d57d39e1-dc63-44fd-8cbd-a4e1488100c5\",\n    routerId: \"423fa80f-e0d7-4d02-a9a5-8b8c05812bf6\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nassociation1 = openstack.bgpvpn.RouterAssociateV2(\"association_1\",\n    bgpvpn_id=\"d57d39e1-dc63-44fd-8cbd-a4e1488100c5\",\n    router_id=\"423fa80f-e0d7-4d02-a9a5-8b8c05812bf6\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var association1 = new OpenStack.BGPVPN.RouterAssociateV2(\"association_1\", new()\n    {\n        BgpvpnId = \"d57d39e1-dc63-44fd-8cbd-a4e1488100c5\",\n        RouterId = \"423fa80f-e0d7-4d02-a9a5-8b8c05812bf6\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/bgpvpn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bgpvpn.NewRouterAssociateV2(ctx, \"association_1\", \u0026bgpvpn.RouterAssociateV2Args{\n\t\t\tBgpvpnId: pulumi.String(\"d57d39e1-dc63-44fd-8cbd-a4e1488100c5\"),\n\t\t\tRouterId: pulumi.String(\"423fa80f-e0d7-4d02-a9a5-8b8c05812bf6\"),\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.openstack.bgpvpn.RouterAssociateV2;\nimport com.pulumi.openstack.bgpvpn.RouterAssociateV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 association1 = new RouterAssociateV2(\"association1\", RouterAssociateV2Args.builder()\n            .bgpvpnId(\"d57d39e1-dc63-44fd-8cbd-a4e1488100c5\")\n            .routerId(\"423fa80f-e0d7-4d02-a9a5-8b8c05812bf6\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  association1:\n    type: openstack:bgpvpn:RouterAssociateV2\n    name: association_1\n    properties:\n      bgpvpnId: d57d39e1-dc63-44fd-8cbd-a4e1488100c5\n      routerId: 423fa80f-e0d7-4d02-a9a5-8b8c05812bf6\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBGP VPN router associations can be imported using the BGP VPN ID and BGP VPN\n\nrouter association ID separated by a slash, e.g.:\n\nhcl\n\n```sh\n$ pulumi import openstack:bgpvpn/routerAssociateV2:RouterAssociateV2 association_1 e26d509e-fc2d-4fb5-8562-619911a9a6bc/3cc9df2d-80db-4536-8ba6-295d1d0f723f\n```\n\n","properties":{"advertiseExtraRoutes":{"type":"boolean","description":"A boolean flag indicating whether extra\nroutes should be advertised. Defaults to true.\n"},"bgpvpnId":{"type":"string","description":"The ID of the BGP VPN to which the router will be\nassociated. Changing this creates a new BGP VPN router association.\n"},"projectId":{"type":"string","description":"The ID of the project that owns the BGP VPN router\nassociation. Only administrative and users with \u003cspan pulumi-lang-nodejs=\"`advsvc`\" pulumi-lang-dotnet=\"`Advsvc`\" pulumi-lang-go=\"`advsvc`\" pulumi-lang-python=\"`advsvc`\" pulumi-lang-yaml=\"`advsvc`\" pulumi-lang-java=\"`advsvc`\"\u003e`advsvc`\u003c/span\u003e role can specify a\nproject ID other than their own. Changing this creates a new BGP VPN router\nassociation.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a BGP VPN router association. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new BGP VPN router association.\n"},"routerId":{"type":"string","description":"The ID of the router to be associated with the BGP\nVPN. Changing this creates a new BGP VPN router association.\n"}},"required":["advertiseExtraRoutes","bgpvpnId","projectId","region","routerId"],"inputProperties":{"advertiseExtraRoutes":{"type":"boolean","description":"A boolean flag indicating whether extra\nroutes should be advertised. Defaults to true.\n"},"bgpvpnId":{"type":"string","description":"The ID of the BGP VPN to which the router will be\nassociated. Changing this creates a new BGP VPN router association.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"The ID of the project that owns the BGP VPN router\nassociation. Only administrative and users with \u003cspan pulumi-lang-nodejs=\"`advsvc`\" pulumi-lang-dotnet=\"`Advsvc`\" pulumi-lang-go=\"`advsvc`\" pulumi-lang-python=\"`advsvc`\" pulumi-lang-yaml=\"`advsvc`\" pulumi-lang-java=\"`advsvc`\"\u003e`advsvc`\u003c/span\u003e role can specify a\nproject ID other than their own. Changing this creates a new BGP VPN router\nassociation.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a BGP VPN router association. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new BGP VPN router association.\n","willReplaceOnChanges":true},"routerId":{"type":"string","description":"The ID of the router to be associated with the BGP\nVPN. Changing this creates a new BGP VPN router association.\n","willReplaceOnChanges":true}},"requiredInputs":["bgpvpnId","routerId"],"stateInputs":{"description":"Input properties used for looking up and filtering RouterAssociateV2 resources.\n","properties":{"advertiseExtraRoutes":{"type":"boolean","description":"A boolean flag indicating whether extra\nroutes should be advertised. Defaults to true.\n"},"bgpvpnId":{"type":"string","description":"The ID of the BGP VPN to which the router will be\nassociated. Changing this creates a new BGP VPN router association.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"The ID of the project that owns the BGP VPN router\nassociation. Only administrative and users with \u003cspan pulumi-lang-nodejs=\"`advsvc`\" pulumi-lang-dotnet=\"`Advsvc`\" pulumi-lang-go=\"`advsvc`\" pulumi-lang-python=\"`advsvc`\" pulumi-lang-yaml=\"`advsvc`\" pulumi-lang-java=\"`advsvc`\"\u003e`advsvc`\u003c/span\u003e role can specify a\nproject ID other than their own. Changing this creates a new BGP VPN router\nassociation.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a BGP VPN router association. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new BGP VPN router association.\n","willReplaceOnChanges":true},"routerId":{"type":"string","description":"The ID of the router to be associated with the BGP\nVPN. Changing this creates a new BGP VPN router association.\n","willReplaceOnChanges":true}},"type":"object"},"aliases":[{"type":"openstack:index/bgpvpnRouterAssociateV2:BgpvpnRouterAssociateV2"}]},"openstack:bgpvpn/v2:V2":{"description":"Manages a V2 BGP VPN service resource within OpenStack.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst bgpvpn1 = new openstack.bgpvpn.V2(\"bgpvpn_1\", {\n    name: \"bgpvpn1\",\n    routeDistinguishers: [\"64512:1\"],\n    routeTargets: [\"64512:1\"],\n    importTargets: [\"64512:2\"],\n    exportTargets: [\"64512:3\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nbgpvpn1 = openstack.bgpvpn.V2(\"bgpvpn_1\",\n    name=\"bgpvpn1\",\n    route_distinguishers=[\"64512:1\"],\n    route_targets=[\"64512:1\"],\n    import_targets=[\"64512:2\"],\n    export_targets=[\"64512:3\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var bgpvpn1 = new OpenStack.BGPVPN.V2(\"bgpvpn_1\", new()\n    {\n        Name = \"bgpvpn1\",\n        RouteDistinguishers = new[]\n        {\n            \"64512:1\",\n        },\n        RouteTargets = new[]\n        {\n            \"64512:1\",\n        },\n        ImportTargets = new[]\n        {\n            \"64512:2\",\n        },\n        ExportTargets = new[]\n        {\n            \"64512:3\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/bgpvpn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bgpvpn.NewV2(ctx, \"bgpvpn_1\", \u0026bgpvpn.V2Args{\n\t\t\tName: pulumi.String(\"bgpvpn1\"),\n\t\t\tRouteDistinguishers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"64512:1\"),\n\t\t\t},\n\t\t\tRouteTargets: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"64512:1\"),\n\t\t\t},\n\t\t\tImportTargets: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"64512:2\"),\n\t\t\t},\n\t\t\tExportTargets: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"64512:3\"),\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.openstack.bgpvpn.V2;\nimport com.pulumi.openstack.bgpvpn.V2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 bgpvpn1 = new V2(\"bgpvpn1\", V2Args.builder()\n            .name(\"bgpvpn1\")\n            .routeDistinguishers(\"64512:1\")\n            .routeTargets(\"64512:1\")\n            .importTargets(\"64512:2\")\n            .exportTargets(\"64512:3\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  bgpvpn1:\n    type: openstack:bgpvpn:V2\n    name: bgpvpn_1\n    properties:\n      name: bgpvpn1\n      routeDistinguishers:\n        - 64512:1\n      routeTargets:\n        - 64512:1\n      importTargets:\n        - 64512:2\n      exportTargets:\n        - 64512:3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBGP VPNs can be imported using the `id`, e.g.\n\nhcl\n\n```sh\n$ pulumi import openstack:bgpvpn/v2:V2 bgpvpn_1 1eec2c66-6be2-4305-af3f-354c9b81f18c\n```\n\n","properties":{"exportTargets":{"type":"array","items":{"type":"string"},"description":"A list of additional Route Targets that will be\nused for export.\n"},"importTargets":{"type":"array","items":{"type":"string"},"description":"A list of additional Route Targets that will be\nimported.\n"},"localPref":{"type":"integer","description":"The default BGP LOCAL\\_PREF of routes that will be\nadvertised to the BGP VPN, unless overridden per-route.\n"},"name":{"type":"string","description":"The name of the BGP VPN. Changing this updates the name of\nthe existing BGP VPN.\n"},"networks":{"type":"array","items":{"type":"string"},"description":"A list of network IDs that are associated with the BGP VPN.\n"},"ports":{"type":"array","items":{"type":"string"},"description":"A list of port IDs that are associated with the BGP VPN.\n"},"projectId":{"type":"string","description":"The ID of the project that owns the BGPVPN. Only\nadministrative and users with \u003cspan pulumi-lang-nodejs=\"`advsvc`\" pulumi-lang-dotnet=\"`Advsvc`\" pulumi-lang-go=\"`advsvc`\" pulumi-lang-python=\"`advsvc`\" pulumi-lang-yaml=\"`advsvc`\" pulumi-lang-java=\"`advsvc`\"\u003e`advsvc`\u003c/span\u003e role can specify a project ID other\nthan their own. Changing this creates a new BGP VPN.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a BGP VPN service. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nBGP VPN.\n"},"routeDistinguishers":{"type":"array","items":{"type":"string"},"description":"A list of route distinguisher strings. If\nspecified, one of these RDs will be used to advertise VPN routes.\n"},"routeTargets":{"type":"array","items":{"type":"string"},"description":"A list of Route Targets that will be both\nimported and used for export.\n"},"routers":{"type":"array","items":{"type":"string"},"description":"A list of router IDs that are associated with the BGP VPN.\n"},"shared":{"type":"boolean","description":"Indicates whether the BGP VPN is shared across projects.\n"},"type":{"type":"string","description":"The type of the BGP VPN (either \u003cspan pulumi-lang-nodejs=\"`l2`\" pulumi-lang-dotnet=\"`L2`\" pulumi-lang-go=\"`l2`\" pulumi-lang-python=\"`l2`\" pulumi-lang-yaml=\"`l2`\" pulumi-lang-java=\"`l2`\"\u003e`l2`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`l3`\" pulumi-lang-dotnet=\"`L3`\" pulumi-lang-go=\"`l3`\" pulumi-lang-python=\"`l3`\" pulumi-lang-yaml=\"`l3`\" pulumi-lang-java=\"`l3`\"\u003e`l3`\u003c/span\u003e). Changing this\ncreates a new BGP VPN. Defaults to \u003cspan pulumi-lang-nodejs=\"`l3`\" pulumi-lang-dotnet=\"`L3`\" pulumi-lang-go=\"`l3`\" pulumi-lang-python=\"`l3`\" pulumi-lang-yaml=\"`l3`\" pulumi-lang-java=\"`l3`\"\u003e`l3`\u003c/span\u003e.\n"},"vni":{"type":"integer","description":"The globally-assigned VXLAN VNI for the BGP VPN. Changing\nthis creates a new BGP VPN.\n"}},"required":["exportTargets","importTargets","name","networks","ports","projectId","region","routeDistinguishers","routeTargets","routers","shared","type"],"inputProperties":{"exportTargets":{"type":"array","items":{"type":"string"},"description":"A list of additional Route Targets that will be\nused for export.\n"},"importTargets":{"type":"array","items":{"type":"string"},"description":"A list of additional Route Targets that will be\nimported.\n"},"localPref":{"type":"integer","description":"The default BGP LOCAL\\_PREF of routes that will be\nadvertised to the BGP VPN, unless overridden per-route.\n"},"name":{"type":"string","description":"The name of the BGP VPN. Changing this updates the name of\nthe existing BGP VPN.\n"},"projectId":{"type":"string","description":"The ID of the project that owns the BGPVPN. Only\nadministrative and users with \u003cspan pulumi-lang-nodejs=\"`advsvc`\" pulumi-lang-dotnet=\"`Advsvc`\" pulumi-lang-go=\"`advsvc`\" pulumi-lang-python=\"`advsvc`\" pulumi-lang-yaml=\"`advsvc`\" pulumi-lang-java=\"`advsvc`\"\u003e`advsvc`\u003c/span\u003e role can specify a project ID other\nthan their own. Changing this creates a new BGP VPN.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a BGP VPN service. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nBGP VPN.\n","willReplaceOnChanges":true},"routeDistinguishers":{"type":"array","items":{"type":"string"},"description":"A list of route distinguisher strings. If\nspecified, one of these RDs will be used to advertise VPN routes.\n"},"routeTargets":{"type":"array","items":{"type":"string"},"description":"A list of Route Targets that will be both\nimported and used for export.\n"},"type":{"type":"string","description":"The type of the BGP VPN (either \u003cspan pulumi-lang-nodejs=\"`l2`\" pulumi-lang-dotnet=\"`L2`\" pulumi-lang-go=\"`l2`\" pulumi-lang-python=\"`l2`\" pulumi-lang-yaml=\"`l2`\" pulumi-lang-java=\"`l2`\"\u003e`l2`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`l3`\" pulumi-lang-dotnet=\"`L3`\" pulumi-lang-go=\"`l3`\" pulumi-lang-python=\"`l3`\" pulumi-lang-yaml=\"`l3`\" pulumi-lang-java=\"`l3`\"\u003e`l3`\u003c/span\u003e). Changing this\ncreates a new BGP VPN. Defaults to \u003cspan pulumi-lang-nodejs=\"`l3`\" pulumi-lang-dotnet=\"`L3`\" pulumi-lang-go=\"`l3`\" pulumi-lang-python=\"`l3`\" pulumi-lang-yaml=\"`l3`\" pulumi-lang-java=\"`l3`\"\u003e`l3`\u003c/span\u003e.\n","willReplaceOnChanges":true},"vni":{"type":"integer","description":"The globally-assigned VXLAN VNI for the BGP VPN. Changing\nthis creates a new BGP VPN.\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering V2 resources.\n","properties":{"exportTargets":{"type":"array","items":{"type":"string"},"description":"A list of additional Route Targets that will be\nused for export.\n"},"importTargets":{"type":"array","items":{"type":"string"},"description":"A list of additional Route Targets that will be\nimported.\n"},"localPref":{"type":"integer","description":"The default BGP LOCAL\\_PREF of routes that will be\nadvertised to the BGP VPN, unless overridden per-route.\n"},"name":{"type":"string","description":"The name of the BGP VPN. Changing this updates the name of\nthe existing BGP VPN.\n"},"networks":{"type":"array","items":{"type":"string"},"description":"A list of network IDs that are associated with the BGP VPN.\n"},"ports":{"type":"array","items":{"type":"string"},"description":"A list of port IDs that are associated with the BGP VPN.\n"},"projectId":{"type":"string","description":"The ID of the project that owns the BGPVPN. Only\nadministrative and users with \u003cspan pulumi-lang-nodejs=\"`advsvc`\" pulumi-lang-dotnet=\"`Advsvc`\" pulumi-lang-go=\"`advsvc`\" pulumi-lang-python=\"`advsvc`\" pulumi-lang-yaml=\"`advsvc`\" pulumi-lang-java=\"`advsvc`\"\u003e`advsvc`\u003c/span\u003e role can specify a project ID other\nthan their own. Changing this creates a new BGP VPN.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a BGP VPN service. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nBGP VPN.\n","willReplaceOnChanges":true},"routeDistinguishers":{"type":"array","items":{"type":"string"},"description":"A list of route distinguisher strings. If\nspecified, one of these RDs will be used to advertise VPN routes.\n"},"routeTargets":{"type":"array","items":{"type":"string"},"description":"A list of Route Targets that will be both\nimported and used for export.\n"},"routers":{"type":"array","items":{"type":"string"},"description":"A list of router IDs that are associated with the BGP VPN.\n"},"shared":{"type":"boolean","description":"Indicates whether the BGP VPN is shared across projects.\n"},"type":{"type":"string","description":"The type of the BGP VPN (either \u003cspan pulumi-lang-nodejs=\"`l2`\" pulumi-lang-dotnet=\"`L2`\" pulumi-lang-go=\"`l2`\" pulumi-lang-python=\"`l2`\" pulumi-lang-yaml=\"`l2`\" pulumi-lang-java=\"`l2`\"\u003e`l2`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`l3`\" pulumi-lang-dotnet=\"`L3`\" pulumi-lang-go=\"`l3`\" pulumi-lang-python=\"`l3`\" pulumi-lang-yaml=\"`l3`\" pulumi-lang-java=\"`l3`\"\u003e`l3`\u003c/span\u003e). Changing this\ncreates a new BGP VPN. Defaults to \u003cspan pulumi-lang-nodejs=\"`l3`\" pulumi-lang-dotnet=\"`L3`\" pulumi-lang-go=\"`l3`\" pulumi-lang-python=\"`l3`\" pulumi-lang-yaml=\"`l3`\" pulumi-lang-java=\"`l3`\"\u003e`l3`\u003c/span\u003e.\n","willReplaceOnChanges":true},"vni":{"type":"integer","description":"The globally-assigned VXLAN VNI for the BGP VPN. Changing\nthis creates a new BGP VPN.\n","willReplaceOnChanges":true}},"type":"object"},"aliases":[{"type":"openstack:index/bgpvpnV2:BgpvpnV2"}]},"openstack:blockstorage/qosAssociationV3:QosAssociationV3":{"description":"Manages a V3 block storage Qos Association resource within OpenStack.\n\n\u003e **Note:** This usually requires admin privileges.\n\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst qos = new openstack.blockstorage.QosV3(\"qos\", {\n    name: \"%s\",\n    consumer: \"front-end\",\n    specs: {\n        read_iops_sec: \"20000\",\n    },\n});\nconst volumeType = new openstack.blockstorage.VolumeTypeV3(\"volume_type\", {name: \"%s\"});\nconst qosAssociation = new openstack.blockstorage.QosAssociationV3(\"qos_association\", {\n    qosId: qos.id,\n    volumeTypeId: volumeType.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nqos = openstack.blockstorage.QosV3(\"qos\",\n    name=\"%s\",\n    consumer=\"front-end\",\n    specs={\n        \"read_iops_sec\": \"20000\",\n    })\nvolume_type = openstack.blockstorage.VolumeTypeV3(\"volume_type\", name=\"%s\")\nqos_association = openstack.blockstorage.QosAssociationV3(\"qos_association\",\n    qos_id=qos.id,\n    volume_type_id=volume_type.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var qos = new OpenStack.BlockStorage.QosV3(\"qos\", new()\n    {\n        Name = \"%s\",\n        Consumer = \"front-end\",\n        Specs = \n        {\n            { \"read_iops_sec\", \"20000\" },\n        },\n    });\n\n    var volumeType = new OpenStack.BlockStorage.VolumeTypeV3(\"volume_type\", new()\n    {\n        Name = \"%s\",\n    });\n\n    var qosAssociation = new OpenStack.BlockStorage.QosAssociationV3(\"qos_association\", new()\n    {\n        QosId = qos.Id,\n        VolumeTypeId = volumeType.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/blockstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tqos, err := blockstorage.NewQosV3(ctx, \"qos\", \u0026blockstorage.QosV3Args{\n\t\t\tName:     pulumi.String(\"%s\"),\n\t\t\tConsumer: pulumi.String(\"front-end\"),\n\t\t\tSpecs: pulumi.StringMap{\n\t\t\t\t\"read_iops_sec\": pulumi.String(\"20000\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvolumeType, err := blockstorage.NewVolumeTypeV3(ctx, \"volume_type\", \u0026blockstorage.VolumeTypeV3Args{\n\t\t\tName: pulumi.String(\"%s\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = blockstorage.NewQosAssociationV3(ctx, \"qos_association\", \u0026blockstorage.QosAssociationV3Args{\n\t\t\tQosId:        qos.ID(),\n\t\t\tVolumeTypeId: volumeType.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.openstack.blockstorage.QosV3;\nimport com.pulumi.openstack.blockstorage.QosV3Args;\nimport com.pulumi.openstack.blockstorage.VolumeTypeV3;\nimport com.pulumi.openstack.blockstorage.VolumeTypeV3Args;\nimport com.pulumi.openstack.blockstorage.QosAssociationV3;\nimport com.pulumi.openstack.blockstorage.QosAssociationV3Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 qos = new QosV3(\"qos\", QosV3Args.builder()\n            .name(\"%s\")\n            .consumer(\"front-end\")\n            .specs(Map.of(\"read_iops_sec\", \"20000\"))\n            .build());\n\n        var volumeType = new VolumeTypeV3(\"volumeType\", VolumeTypeV3Args.builder()\n            .name(\"%s\")\n            .build());\n\n        var qosAssociation = new QosAssociationV3(\"qosAssociation\", QosAssociationV3Args.builder()\n            .qosId(qos.id())\n            .volumeTypeId(volumeType.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  qos:\n    type: openstack:blockstorage:QosV3\n    properties:\n      name: '%s'\n      consumer: front-end\n      specs:\n        read_iops_sec: '20000'\n  volumeType:\n    type: openstack:blockstorage:VolumeTypeV3\n    name: volume_type\n    properties:\n      name: '%s'\n  qosAssociation:\n    type: openstack:blockstorage:QosAssociationV3\n    name: qos_association\n    properties:\n      qosId: ${qos.id}\n      volumeTypeId: ${volumeType.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nQos association can be imported using the `qos_id/volume_type_id`, e.g.\n\n```sh\n$ pulumi import openstack:blockstorage/qosAssociationV3:QosAssociationV3 qos_association 941793f0-0a34-4bc4-b72e-a6326ae58283/ea257959-eeb1-4c10-8d33-26f0409a755d\n```\n","properties":{"qosId":{"type":"string","description":"ID of the qos to associate. Changing this creates\na new qos association.\n"},"region":{"type":"string","description":"The region in which to create the qos association.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing\nthis creates a new qos association.\n"},"volumeTypeId":{"type":"string","description":"ID of the\u003cspan pulumi-lang-nodejs=\" volumeType \" pulumi-lang-dotnet=\" VolumeType \" pulumi-lang-go=\" volumeType \" pulumi-lang-python=\" volume_type \" pulumi-lang-yaml=\" volumeType \" pulumi-lang-java=\" volumeType \"\u003e volume_type \u003c/span\u003eto associate.\nChanging this creates a new qos association.\n"}},"required":["qosId","region","volumeTypeId"],"inputProperties":{"qosId":{"type":"string","description":"ID of the qos to associate. Changing this creates\na new qos association.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to create the qos association.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing\nthis creates a new qos association.\n","willReplaceOnChanges":true},"volumeTypeId":{"type":"string","description":"ID of the\u003cspan pulumi-lang-nodejs=\" volumeType \" pulumi-lang-dotnet=\" VolumeType \" pulumi-lang-go=\" volumeType \" pulumi-lang-python=\" volume_type \" pulumi-lang-yaml=\" volumeType \" pulumi-lang-java=\" volumeType \"\u003e volume_type \u003c/span\u003eto associate.\nChanging this creates a new qos association.\n","willReplaceOnChanges":true}},"requiredInputs":["qosId","volumeTypeId"],"stateInputs":{"description":"Input properties used for looking up and filtering QosAssociationV3 resources.\n","properties":{"qosId":{"type":"string","description":"ID of the qos to associate. Changing this creates\na new qos association.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to create the qos association.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing\nthis creates a new qos association.\n","willReplaceOnChanges":true},"volumeTypeId":{"type":"string","description":"ID of the\u003cspan pulumi-lang-nodejs=\" volumeType \" pulumi-lang-dotnet=\" VolumeType \" pulumi-lang-go=\" volumeType \" pulumi-lang-python=\" volume_type \" pulumi-lang-yaml=\" volumeType \" pulumi-lang-java=\" volumeType \"\u003e volume_type \u003c/span\u003eto associate.\nChanging this creates a new qos association.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:blockstorage/qosV3:QosV3":{"description":"Manages a V3 block storage Quality-Of-Servirce (qos) resource within OpenStack.\n\n\u003e **Note:** This usually requires admin privileges.\n\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst qos = new openstack.blockstorage.QosV3(\"qos\", {\n    name: \"foo\",\n    consumer: \"back-end\",\n    specs: {\n        read_iops_sec: \"40000\",\n        write_iops_sec: \"40000\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nqos = openstack.blockstorage.QosV3(\"qos\",\n    name=\"foo\",\n    consumer=\"back-end\",\n    specs={\n        \"read_iops_sec\": \"40000\",\n        \"write_iops_sec\": \"40000\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var qos = new OpenStack.BlockStorage.QosV3(\"qos\", new()\n    {\n        Name = \"foo\",\n        Consumer = \"back-end\",\n        Specs = \n        {\n            { \"read_iops_sec\", \"40000\" },\n            { \"write_iops_sec\", \"40000\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/blockstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := blockstorage.NewQosV3(ctx, \"qos\", \u0026blockstorage.QosV3Args{\n\t\t\tName:     pulumi.String(\"foo\"),\n\t\t\tConsumer: pulumi.String(\"back-end\"),\n\t\t\tSpecs: pulumi.StringMap{\n\t\t\t\t\"read_iops_sec\":  pulumi.String(\"40000\"),\n\t\t\t\t\"write_iops_sec\": pulumi.String(\"40000\"),\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.openstack.blockstorage.QosV3;\nimport com.pulumi.openstack.blockstorage.QosV3Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 qos = new QosV3(\"qos\", QosV3Args.builder()\n            .name(\"foo\")\n            .consumer(\"back-end\")\n            .specs(Map.ofEntries(\n                Map.entry(\"read_iops_sec\", \"40000\"),\n                Map.entry(\"write_iops_sec\", \"40000\")\n            ))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  qos:\n    type: openstack:blockstorage:QosV3\n    properties:\n      name: foo\n      consumer: back-end\n      specs:\n        read_iops_sec: '40000'\n        write_iops_sec: '40000'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nQos can be imported using the `qos_id`, e.g.\n\n```sh\n$ pulumi import openstack:blockstorage/qosV3:QosV3 qos 941793f0-0a34-4bc4-b72e-a6326ae58283\n```\n","properties":{"consumer":{"type":"string","description":"The consumer of qos. Can be one of `front-end`,\n`back-end` or \u003cspan pulumi-lang-nodejs=\"`both`\" pulumi-lang-dotnet=\"`Both`\" pulumi-lang-go=\"`both`\" pulumi-lang-python=\"`both`\" pulumi-lang-yaml=\"`both`\" pulumi-lang-java=\"`both`\"\u003e`both`\u003c/span\u003e. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`consumer`\" pulumi-lang-dotnet=\"`Consumer`\" pulumi-lang-go=\"`consumer`\" pulumi-lang-python=\"`consumer`\" pulumi-lang-yaml=\"`consumer`\" pulumi-lang-java=\"`consumer`\"\u003e`consumer`\u003c/span\u003e of an\nexisting qos.\n"},"name":{"type":"string","description":"Name of the qos.  Changing this creates a new qos.\n"},"region":{"type":"string","description":"The region in which to create the qos. If omitted,\nthe \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new qos.\n"},"specs":{"type":"object","additionalProperties":{"type":"string"},"description":"Key/Value pairs of specs for the qos.\n"}},"required":["name","region"],"inputProperties":{"consumer":{"type":"string","description":"The consumer of qos. Can be one of `front-end`,\n`back-end` or \u003cspan pulumi-lang-nodejs=\"`both`\" pulumi-lang-dotnet=\"`Both`\" pulumi-lang-go=\"`both`\" pulumi-lang-python=\"`both`\" pulumi-lang-yaml=\"`both`\" pulumi-lang-java=\"`both`\"\u003e`both`\u003c/span\u003e. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`consumer`\" pulumi-lang-dotnet=\"`Consumer`\" pulumi-lang-go=\"`consumer`\" pulumi-lang-python=\"`consumer`\" pulumi-lang-yaml=\"`consumer`\" pulumi-lang-java=\"`consumer`\"\u003e`consumer`\u003c/span\u003e of an\nexisting qos.\n"},"name":{"type":"string","description":"Name of the qos.  Changing this creates a new qos.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to create the qos. If omitted,\nthe \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new qos.\n","willReplaceOnChanges":true},"specs":{"type":"object","additionalProperties":{"type":"string"},"description":"Key/Value pairs of specs for the qos.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering QosV3 resources.\n","properties":{"consumer":{"type":"string","description":"The consumer of qos. Can be one of `front-end`,\n`back-end` or \u003cspan pulumi-lang-nodejs=\"`both`\" pulumi-lang-dotnet=\"`Both`\" pulumi-lang-go=\"`both`\" pulumi-lang-python=\"`both`\" pulumi-lang-yaml=\"`both`\" pulumi-lang-java=\"`both`\"\u003e`both`\u003c/span\u003e. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`consumer`\" pulumi-lang-dotnet=\"`Consumer`\" pulumi-lang-go=\"`consumer`\" pulumi-lang-python=\"`consumer`\" pulumi-lang-yaml=\"`consumer`\" pulumi-lang-java=\"`consumer`\"\u003e`consumer`\u003c/span\u003e of an\nexisting qos.\n"},"name":{"type":"string","description":"Name of the qos.  Changing this creates a new qos.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to create the qos. If omitted,\nthe \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new qos.\n","willReplaceOnChanges":true},"specs":{"type":"object","additionalProperties":{"type":"string"},"description":"Key/Value pairs of specs for the qos.\n"}},"type":"object"}},"openstack:blockstorage/quoteSetV3:QuoteSetV3":{"description":"Manages a V3 block storage quotaset resource within OpenStack.\n\n\u003e **Note:** This usually requires admin privileges.\n\n\u003e **Note:** This resource has a no-op deletion so no actual actions will be done against the OpenStack API\n    in case of delete call.\n\n## Import\n\nQuotasets can be imported using the `project_id/region`, e.g.\n\n```sh\n$ pulumi import openstack:blockstorage/quoteSetV3:QuoteSetV3 quotaset_1 2a0f2240-c5e6-41de-896d-e80d97428d6b/region_1\n```\n","properties":{"backupGigabytes":{"type":"integer","description":"Quota value for backup gigabytes. Changing\nthis updates the existing quotaset.\n"},"backups":{"type":"integer","description":"Quota value for backups. Changing this updates the\nexisting quotaset.\n"},"gigabytes":{"type":"integer","description":"Quota value for gigabytes. Changing this updates the\nexisting quotaset.\n"},"groups":{"type":"integer","description":"Quota value for groups. Changing this updates the\nexisting quotaset.\n"},"perVolumeGigabytes":{"type":"integer","description":"Quota value for gigabytes per volume .\nChanging this updates the existing quotaset.\n"},"projectId":{"type":"string","description":"ID of the project to manage quotas. Changing this\ncreates a new quotaset.\n"},"region":{"type":"string","description":"The region in which to create the volume. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new quotaset.\n"},"snapshots":{"type":"integer","description":"Quota value for snapshots. Changing this updates the\nexisting quotaset.\n"},"volumeTypeQuota":{"type":"object","additionalProperties":{"type":"string"},"description":"Key/Value pairs for setting quota for\nvolumes types. Possible keys are `snapshots_\u003cvolume_type_name\u003e`,\n`volumes_\u003cvolume_type_name\u003e` and `gigabytes_\u003cvolume_type_name\u003e`.\n"},"volumes":{"type":"integer","description":"Quota value for volumes. Changing this updates the\nexisting quotaset.\n"}},"required":["backupGigabytes","backups","gigabytes","groups","perVolumeGigabytes","projectId","region","snapshots","volumes"],"inputProperties":{"backupGigabytes":{"type":"integer","description":"Quota value for backup gigabytes. Changing\nthis updates the existing quotaset.\n"},"backups":{"type":"integer","description":"Quota value for backups. Changing this updates the\nexisting quotaset.\n"},"gigabytes":{"type":"integer","description":"Quota value for gigabytes. Changing this updates the\nexisting quotaset.\n"},"groups":{"type":"integer","description":"Quota value for groups. Changing this updates the\nexisting quotaset.\n"},"perVolumeGigabytes":{"type":"integer","description":"Quota value for gigabytes per volume .\nChanging this updates the existing quotaset.\n"},"projectId":{"type":"string","description":"ID of the project to manage quotas. Changing this\ncreates a new quotaset.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to create the volume. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new quotaset.\n","willReplaceOnChanges":true},"snapshots":{"type":"integer","description":"Quota value for snapshots. Changing this updates the\nexisting quotaset.\n"},"volumeTypeQuota":{"type":"object","additionalProperties":{"type":"string"},"description":"Key/Value pairs for setting quota for\nvolumes types. Possible keys are `snapshots_\u003cvolume_type_name\u003e`,\n`volumes_\u003cvolume_type_name\u003e` and `gigabytes_\u003cvolume_type_name\u003e`.\n"},"volumes":{"type":"integer","description":"Quota value for volumes. Changing this updates the\nexisting quotaset.\n"}},"requiredInputs":["projectId"],"stateInputs":{"description":"Input properties used for looking up and filtering QuoteSetV3 resources.\n","properties":{"backupGigabytes":{"type":"integer","description":"Quota value for backup gigabytes. Changing\nthis updates the existing quotaset.\n"},"backups":{"type":"integer","description":"Quota value for backups. Changing this updates the\nexisting quotaset.\n"},"gigabytes":{"type":"integer","description":"Quota value for gigabytes. Changing this updates the\nexisting quotaset.\n"},"groups":{"type":"integer","description":"Quota value for groups. Changing this updates the\nexisting quotaset.\n"},"perVolumeGigabytes":{"type":"integer","description":"Quota value for gigabytes per volume .\nChanging this updates the existing quotaset.\n"},"projectId":{"type":"string","description":"ID of the project to manage quotas. Changing this\ncreates a new quotaset.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to create the volume. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new quotaset.\n","willReplaceOnChanges":true},"snapshots":{"type":"integer","description":"Quota value for snapshots. Changing this updates the\nexisting quotaset.\n"},"volumeTypeQuota":{"type":"object","additionalProperties":{"type":"string"},"description":"Key/Value pairs for setting quota for\nvolumes types. Possible keys are `snapshots_\u003cvolume_type_name\u003e`,\n`volumes_\u003cvolume_type_name\u003e` and `gigabytes_\u003cvolume_type_name\u003e`.\n"},"volumes":{"type":"integer","description":"Quota value for volumes. Changing this updates the\nexisting quotaset.\n"}},"type":"object"}},"openstack:blockstorage/volume:Volume":{"description":"Manages a V3 volume resource within OpenStack.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst volume1 = new openstack.blockstorage.Volume(\"volume_1\", {\n    region: \"RegionOne\",\n    name: \"volume_1\",\n    description: \"first test volume\",\n    size: 3,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nvolume1 = openstack.blockstorage.Volume(\"volume_1\",\n    region=\"RegionOne\",\n    name=\"volume_1\",\n    description=\"first test volume\",\n    size=3)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var volume1 = new OpenStack.BlockStorage.Volume(\"volume_1\", new()\n    {\n        Region = \"RegionOne\",\n        Name = \"volume_1\",\n        Description = \"first test volume\",\n        Size = 3,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/blockstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := blockstorage.NewVolume(ctx, \"volume_1\", \u0026blockstorage.VolumeArgs{\n\t\t\tRegion:      pulumi.String(\"RegionOne\"),\n\t\t\tName:        pulumi.String(\"volume_1\"),\n\t\t\tDescription: pulumi.String(\"first test volume\"),\n\t\t\tSize:        pulumi.Int(3),\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.openstack.blockstorage.Volume;\nimport com.pulumi.openstack.blockstorage.VolumeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 volume1 = new Volume(\"volume1\", VolumeArgs.builder()\n            .region(\"RegionOne\")\n            .name(\"volume_1\")\n            .description(\"first test volume\")\n            .size(3)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  volume1:\n    type: openstack:blockstorage:Volume\n    name: volume_1\n    properties:\n      region: RegionOne\n      name: volume_1\n      description: first test volume\n      size: 3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVolumes can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:blockstorage/volume:Volume volume_1 ea257959-eeb1-4c10-8d33-26f0409a755d\n```\n","properties":{"attachments":{"type":"array","items":{"$ref":"#/types/openstack:blockstorage/VolumeAttachment:VolumeAttachment"},"description":"If a volume is attached to an instance, this attribute will\ndisplay the Attachment ID, Instance ID, and the Device as the Instance\nsees it.\n"},"availabilityZone":{"type":"string","description":"The availability zone for the volume.\nChanging this creates a new volume.\n"},"backupId":{"type":"string","description":"The backup ID from which to create the volume.\nConflicts with \u003cspan pulumi-lang-nodejs=\"`snapshotId`\" pulumi-lang-dotnet=\"`SnapshotId`\" pulumi-lang-go=\"`snapshotId`\" pulumi-lang-python=\"`snapshot_id`\" pulumi-lang-yaml=\"`snapshotId`\" pulumi-lang-java=\"`snapshotId`\"\u003e`snapshot_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`sourceVolId`\" pulumi-lang-dotnet=\"`SourceVolId`\" pulumi-lang-go=\"`sourceVolId`\" pulumi-lang-python=\"`source_vol_id`\" pulumi-lang-yaml=\"`sourceVolId`\" pulumi-lang-java=\"`sourceVolId`\"\u003e`source_vol_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`imageId`\" pulumi-lang-dotnet=\"`ImageId`\" pulumi-lang-go=\"`imageId`\" pulumi-lang-python=\"`image_id`\" pulumi-lang-yaml=\"`imageId`\" pulumi-lang-java=\"`imageId`\"\u003e`image_id`\u003c/span\u003e. Changing this\ncreates a new volume. Requires microversion \u003e= 3.47.\n"},"consistencyGroupId":{"type":"string","description":"The consistency group to place the volume\nin.\n"},"description":{"type":"string","description":"A description of the volume. Changing this updates\nthe volume's description.\n"},"enableOnlineResize":{"type":"boolean","description":"When this option is set it allows extending\nattached volumes. Note: updating size of an attached volume requires Cinder\nsupport for version 3.42 and a compatible storage driver.\n"},"imageId":{"type":"string","description":"The image ID from which to create the volume.\nConflicts with \u003cspan pulumi-lang-nodejs=\"`snapshotId`\" pulumi-lang-dotnet=\"`SnapshotId`\" pulumi-lang-go=\"`snapshotId`\" pulumi-lang-python=\"`snapshot_id`\" pulumi-lang-yaml=\"`snapshotId`\" pulumi-lang-java=\"`snapshotId`\"\u003e`snapshot_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`sourceVolId`\" pulumi-lang-dotnet=\"`SourceVolId`\" pulumi-lang-go=\"`sourceVolId`\" pulumi-lang-python=\"`source_vol_id`\" pulumi-lang-yaml=\"`sourceVolId`\" pulumi-lang-java=\"`sourceVolId`\"\u003e`source_vol_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`backupId`\" pulumi-lang-dotnet=\"`BackupId`\" pulumi-lang-go=\"`backupId`\" pulumi-lang-python=\"`backup_id`\" pulumi-lang-yaml=\"`backupId`\" pulumi-lang-java=\"`backupId`\"\u003e`backup_id`\u003c/span\u003e. Changing this\ncreates a new volume.\n"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"Metadata key/value pairs to associate with the volume.\nChanging this updates the existing volume metadata.\n"},"name":{"type":"string","description":"A unique name for the volume. Changing this updates the\nvolume's name.\n"},"region":{"type":"string","description":"The region in which to create the volume. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new volume.\n"},"schedulerHints":{"type":"array","items":{"$ref":"#/types/openstack:blockstorage/VolumeSchedulerHint:VolumeSchedulerHint"},"description":"Provide the Cinder scheduler with hints on where\nto instantiate a volume in the OpenStack cloud. The available hints are described below.\n"},"size":{"type":"integer","description":"The size of the volume to create (in gigabytes).\n"},"snapshotId":{"type":"string","description":"The snapshot ID from which to create the volume.\nConflicts with \u003cspan pulumi-lang-nodejs=\"`sourceVolId`\" pulumi-lang-dotnet=\"`SourceVolId`\" pulumi-lang-go=\"`sourceVolId`\" pulumi-lang-python=\"`source_vol_id`\" pulumi-lang-yaml=\"`sourceVolId`\" pulumi-lang-java=\"`sourceVolId`\"\u003e`source_vol_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`imageId`\" pulumi-lang-dotnet=\"`ImageId`\" pulumi-lang-go=\"`imageId`\" pulumi-lang-python=\"`image_id`\" pulumi-lang-yaml=\"`imageId`\" pulumi-lang-java=\"`imageId`\"\u003e`image_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`backupId`\" pulumi-lang-dotnet=\"`BackupId`\" pulumi-lang-go=\"`backupId`\" pulumi-lang-python=\"`backup_id`\" pulumi-lang-yaml=\"`backupId`\" pulumi-lang-java=\"`backupId`\"\u003e`backup_id`\u003c/span\u003e. Changing this\ncreates a new volume.\n"},"sourceReplica":{"type":"string","description":"The volume ID to replicate with.\n"},"sourceVolId":{"type":"string","description":"The volume ID from which to create the volume.\nConflicts with \u003cspan pulumi-lang-nodejs=\"`snapshotId`\" pulumi-lang-dotnet=\"`SnapshotId`\" pulumi-lang-go=\"`snapshotId`\" pulumi-lang-python=\"`snapshot_id`\" pulumi-lang-yaml=\"`snapshotId`\" pulumi-lang-java=\"`snapshotId`\"\u003e`snapshot_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`imageId`\" pulumi-lang-dotnet=\"`ImageId`\" pulumi-lang-go=\"`imageId`\" pulumi-lang-python=\"`image_id`\" pulumi-lang-yaml=\"`imageId`\" pulumi-lang-java=\"`imageId`\"\u003e`image_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`backupId`\" pulumi-lang-dotnet=\"`BackupId`\" pulumi-lang-go=\"`backupId`\" pulumi-lang-python=\"`backup_id`\" pulumi-lang-yaml=\"`backupId`\" pulumi-lang-java=\"`backupId`\"\u003e`backup_id`\u003c/span\u003e. Changing this\ncreates a new volume.\n"},"volumeRetypePolicy":{"type":"string","description":"Migration policy when changing \u003cspan pulumi-lang-nodejs=\"`volumeType`\" pulumi-lang-dotnet=\"`VolumeType`\" pulumi-lang-go=\"`volumeType`\" pulumi-lang-python=\"`volume_type`\" pulumi-lang-yaml=\"`volumeType`\" pulumi-lang-java=\"`volumeType`\"\u003e`volume_type`\u003c/span\u003e.\n`\"never\"` *(default)* prevents migration to another storage backend, while `\"on-demand\"`\nallows migration if needed. Applicable only when updating \u003cspan pulumi-lang-nodejs=\"`volumeType`\" pulumi-lang-dotnet=\"`VolumeType`\" pulumi-lang-go=\"`volumeType`\" pulumi-lang-python=\"`volume_type`\" pulumi-lang-yaml=\"`volumeType`\" pulumi-lang-java=\"`volumeType`\"\u003e`volume_type`\u003c/span\u003e.\n"},"volumeType":{"type":"string","description":"The type of volume to create or update.\nChanging this will attempt an in-place retype operation; migration depends on \u003cspan pulumi-lang-nodejs=\"`volumeRetypePolicy`\" pulumi-lang-dotnet=\"`VolumeRetypePolicy`\" pulumi-lang-go=\"`volumeRetypePolicy`\" pulumi-lang-python=\"`volume_retype_policy`\" pulumi-lang-yaml=\"`volumeRetypePolicy`\" pulumi-lang-java=\"`volumeRetypePolicy`\"\u003e`volume_retype_policy`\u003c/span\u003e.\n"}},"required":["attachments","availabilityZone","metadata","name","region","size","volumeType"],"inputProperties":{"availabilityZone":{"type":"string","description":"The availability zone for the volume.\nChanging this creates a new volume.\n","willReplaceOnChanges":true},"backupId":{"type":"string","description":"The backup ID from which to create the volume.\nConflicts with \u003cspan pulumi-lang-nodejs=\"`snapshotId`\" pulumi-lang-dotnet=\"`SnapshotId`\" pulumi-lang-go=\"`snapshotId`\" pulumi-lang-python=\"`snapshot_id`\" pulumi-lang-yaml=\"`snapshotId`\" pulumi-lang-java=\"`snapshotId`\"\u003e`snapshot_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`sourceVolId`\" pulumi-lang-dotnet=\"`SourceVolId`\" pulumi-lang-go=\"`sourceVolId`\" pulumi-lang-python=\"`source_vol_id`\" pulumi-lang-yaml=\"`sourceVolId`\" pulumi-lang-java=\"`sourceVolId`\"\u003e`source_vol_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`imageId`\" pulumi-lang-dotnet=\"`ImageId`\" pulumi-lang-go=\"`imageId`\" pulumi-lang-python=\"`image_id`\" pulumi-lang-yaml=\"`imageId`\" pulumi-lang-java=\"`imageId`\"\u003e`image_id`\u003c/span\u003e. Changing this\ncreates a new volume. Requires microversion \u003e= 3.47.\n","willReplaceOnChanges":true},"consistencyGroupId":{"type":"string","description":"The consistency group to place the volume\nin.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"A description of the volume. Changing this updates\nthe volume's description.\n"},"enableOnlineResize":{"type":"boolean","description":"When this option is set it allows extending\nattached volumes. Note: updating size of an attached volume requires Cinder\nsupport for version 3.42 and a compatible storage driver.\n"},"imageId":{"type":"string","description":"The image ID from which to create the volume.\nConflicts with \u003cspan pulumi-lang-nodejs=\"`snapshotId`\" pulumi-lang-dotnet=\"`SnapshotId`\" pulumi-lang-go=\"`snapshotId`\" pulumi-lang-python=\"`snapshot_id`\" pulumi-lang-yaml=\"`snapshotId`\" pulumi-lang-java=\"`snapshotId`\"\u003e`snapshot_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`sourceVolId`\" pulumi-lang-dotnet=\"`SourceVolId`\" pulumi-lang-go=\"`sourceVolId`\" pulumi-lang-python=\"`source_vol_id`\" pulumi-lang-yaml=\"`sourceVolId`\" pulumi-lang-java=\"`sourceVolId`\"\u003e`source_vol_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`backupId`\" pulumi-lang-dotnet=\"`BackupId`\" pulumi-lang-go=\"`backupId`\" pulumi-lang-python=\"`backup_id`\" pulumi-lang-yaml=\"`backupId`\" pulumi-lang-java=\"`backupId`\"\u003e`backup_id`\u003c/span\u003e. Changing this\ncreates a new volume.\n","willReplaceOnChanges":true},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"Metadata key/value pairs to associate with the volume.\nChanging this updates the existing volume metadata.\n"},"name":{"type":"string","description":"A unique name for the volume. Changing this updates the\nvolume's name.\n"},"region":{"type":"string","description":"The region in which to create the volume. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new volume.\n","willReplaceOnChanges":true},"schedulerHints":{"type":"array","items":{"$ref":"#/types/openstack:blockstorage/VolumeSchedulerHint:VolumeSchedulerHint"},"description":"Provide the Cinder scheduler with hints on where\nto instantiate a volume in the OpenStack cloud. The available hints are described below.\n"},"size":{"type":"integer","description":"The size of the volume to create (in gigabytes).\n"},"snapshotId":{"type":"string","description":"The snapshot ID from which to create the volume.\nConflicts with \u003cspan pulumi-lang-nodejs=\"`sourceVolId`\" pulumi-lang-dotnet=\"`SourceVolId`\" pulumi-lang-go=\"`sourceVolId`\" pulumi-lang-python=\"`source_vol_id`\" pulumi-lang-yaml=\"`sourceVolId`\" pulumi-lang-java=\"`sourceVolId`\"\u003e`source_vol_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`imageId`\" pulumi-lang-dotnet=\"`ImageId`\" pulumi-lang-go=\"`imageId`\" pulumi-lang-python=\"`image_id`\" pulumi-lang-yaml=\"`imageId`\" pulumi-lang-java=\"`imageId`\"\u003e`image_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`backupId`\" pulumi-lang-dotnet=\"`BackupId`\" pulumi-lang-go=\"`backupId`\" pulumi-lang-python=\"`backup_id`\" pulumi-lang-yaml=\"`backupId`\" pulumi-lang-java=\"`backupId`\"\u003e`backup_id`\u003c/span\u003e. Changing this\ncreates a new volume.\n","willReplaceOnChanges":true},"sourceReplica":{"type":"string","description":"The volume ID to replicate with.\n","willReplaceOnChanges":true},"sourceVolId":{"type":"string","description":"The volume ID from which to create the volume.\nConflicts with \u003cspan pulumi-lang-nodejs=\"`snapshotId`\" pulumi-lang-dotnet=\"`SnapshotId`\" pulumi-lang-go=\"`snapshotId`\" pulumi-lang-python=\"`snapshot_id`\" pulumi-lang-yaml=\"`snapshotId`\" pulumi-lang-java=\"`snapshotId`\"\u003e`snapshot_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`imageId`\" pulumi-lang-dotnet=\"`ImageId`\" pulumi-lang-go=\"`imageId`\" pulumi-lang-python=\"`image_id`\" pulumi-lang-yaml=\"`imageId`\" pulumi-lang-java=\"`imageId`\"\u003e`image_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`backupId`\" pulumi-lang-dotnet=\"`BackupId`\" pulumi-lang-go=\"`backupId`\" pulumi-lang-python=\"`backup_id`\" pulumi-lang-yaml=\"`backupId`\" pulumi-lang-java=\"`backupId`\"\u003e`backup_id`\u003c/span\u003e. Changing this\ncreates a new volume.\n","willReplaceOnChanges":true},"volumeRetypePolicy":{"type":"string","description":"Migration policy when changing \u003cspan pulumi-lang-nodejs=\"`volumeType`\" pulumi-lang-dotnet=\"`VolumeType`\" pulumi-lang-go=\"`volumeType`\" pulumi-lang-python=\"`volume_type`\" pulumi-lang-yaml=\"`volumeType`\" pulumi-lang-java=\"`volumeType`\"\u003e`volume_type`\u003c/span\u003e.\n`\"never\"` *(default)* prevents migration to another storage backend, while `\"on-demand\"`\nallows migration if needed. Applicable only when updating \u003cspan pulumi-lang-nodejs=\"`volumeType`\" pulumi-lang-dotnet=\"`VolumeType`\" pulumi-lang-go=\"`volumeType`\" pulumi-lang-python=\"`volume_type`\" pulumi-lang-yaml=\"`volumeType`\" pulumi-lang-java=\"`volumeType`\"\u003e`volume_type`\u003c/span\u003e.\n"},"volumeType":{"type":"string","description":"The type of volume to create or update.\nChanging this will attempt an in-place retype operation; migration depends on \u003cspan pulumi-lang-nodejs=\"`volumeRetypePolicy`\" pulumi-lang-dotnet=\"`VolumeRetypePolicy`\" pulumi-lang-go=\"`volumeRetypePolicy`\" pulumi-lang-python=\"`volume_retype_policy`\" pulumi-lang-yaml=\"`volumeRetypePolicy`\" pulumi-lang-java=\"`volumeRetypePolicy`\"\u003e`volume_retype_policy`\u003c/span\u003e.\n"}},"requiredInputs":["size"],"stateInputs":{"description":"Input properties used for looking up and filtering Volume resources.\n","properties":{"attachments":{"type":"array","items":{"$ref":"#/types/openstack:blockstorage/VolumeAttachment:VolumeAttachment"},"description":"If a volume is attached to an instance, this attribute will\ndisplay the Attachment ID, Instance ID, and the Device as the Instance\nsees it.\n"},"availabilityZone":{"type":"string","description":"The availability zone for the volume.\nChanging this creates a new volume.\n","willReplaceOnChanges":true},"backupId":{"type":"string","description":"The backup ID from which to create the volume.\nConflicts with \u003cspan pulumi-lang-nodejs=\"`snapshotId`\" pulumi-lang-dotnet=\"`SnapshotId`\" pulumi-lang-go=\"`snapshotId`\" pulumi-lang-python=\"`snapshot_id`\" pulumi-lang-yaml=\"`snapshotId`\" pulumi-lang-java=\"`snapshotId`\"\u003e`snapshot_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`sourceVolId`\" pulumi-lang-dotnet=\"`SourceVolId`\" pulumi-lang-go=\"`sourceVolId`\" pulumi-lang-python=\"`source_vol_id`\" pulumi-lang-yaml=\"`sourceVolId`\" pulumi-lang-java=\"`sourceVolId`\"\u003e`source_vol_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`imageId`\" pulumi-lang-dotnet=\"`ImageId`\" pulumi-lang-go=\"`imageId`\" pulumi-lang-python=\"`image_id`\" pulumi-lang-yaml=\"`imageId`\" pulumi-lang-java=\"`imageId`\"\u003e`image_id`\u003c/span\u003e. Changing this\ncreates a new volume. Requires microversion \u003e= 3.47.\n","willReplaceOnChanges":true},"consistencyGroupId":{"type":"string","description":"The consistency group to place the volume\nin.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"A description of the volume. Changing this updates\nthe volume's description.\n"},"enableOnlineResize":{"type":"boolean","description":"When this option is set it allows extending\nattached volumes. Note: updating size of an attached volume requires Cinder\nsupport for version 3.42 and a compatible storage driver.\n"},"imageId":{"type":"string","description":"The image ID from which to create the volume.\nConflicts with \u003cspan pulumi-lang-nodejs=\"`snapshotId`\" pulumi-lang-dotnet=\"`SnapshotId`\" pulumi-lang-go=\"`snapshotId`\" pulumi-lang-python=\"`snapshot_id`\" pulumi-lang-yaml=\"`snapshotId`\" pulumi-lang-java=\"`snapshotId`\"\u003e`snapshot_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`sourceVolId`\" pulumi-lang-dotnet=\"`SourceVolId`\" pulumi-lang-go=\"`sourceVolId`\" pulumi-lang-python=\"`source_vol_id`\" pulumi-lang-yaml=\"`sourceVolId`\" pulumi-lang-java=\"`sourceVolId`\"\u003e`source_vol_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`backupId`\" pulumi-lang-dotnet=\"`BackupId`\" pulumi-lang-go=\"`backupId`\" pulumi-lang-python=\"`backup_id`\" pulumi-lang-yaml=\"`backupId`\" pulumi-lang-java=\"`backupId`\"\u003e`backup_id`\u003c/span\u003e. Changing this\ncreates a new volume.\n","willReplaceOnChanges":true},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"Metadata key/value pairs to associate with the volume.\nChanging this updates the existing volume metadata.\n"},"name":{"type":"string","description":"A unique name for the volume. Changing this updates the\nvolume's name.\n"},"region":{"type":"string","description":"The region in which to create the volume. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new volume.\n","willReplaceOnChanges":true},"schedulerHints":{"type":"array","items":{"$ref":"#/types/openstack:blockstorage/VolumeSchedulerHint:VolumeSchedulerHint"},"description":"Provide the Cinder scheduler with hints on where\nto instantiate a volume in the OpenStack cloud. The available hints are described below.\n"},"size":{"type":"integer","description":"The size of the volume to create (in gigabytes).\n"},"snapshotId":{"type":"string","description":"The snapshot ID from which to create the volume.\nConflicts with \u003cspan pulumi-lang-nodejs=\"`sourceVolId`\" pulumi-lang-dotnet=\"`SourceVolId`\" pulumi-lang-go=\"`sourceVolId`\" pulumi-lang-python=\"`source_vol_id`\" pulumi-lang-yaml=\"`sourceVolId`\" pulumi-lang-java=\"`sourceVolId`\"\u003e`source_vol_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`imageId`\" pulumi-lang-dotnet=\"`ImageId`\" pulumi-lang-go=\"`imageId`\" pulumi-lang-python=\"`image_id`\" pulumi-lang-yaml=\"`imageId`\" pulumi-lang-java=\"`imageId`\"\u003e`image_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`backupId`\" pulumi-lang-dotnet=\"`BackupId`\" pulumi-lang-go=\"`backupId`\" pulumi-lang-python=\"`backup_id`\" pulumi-lang-yaml=\"`backupId`\" pulumi-lang-java=\"`backupId`\"\u003e`backup_id`\u003c/span\u003e. Changing this\ncreates a new volume.\n","willReplaceOnChanges":true},"sourceReplica":{"type":"string","description":"The volume ID to replicate with.\n","willReplaceOnChanges":true},"sourceVolId":{"type":"string","description":"The volume ID from which to create the volume.\nConflicts with \u003cspan pulumi-lang-nodejs=\"`snapshotId`\" pulumi-lang-dotnet=\"`SnapshotId`\" pulumi-lang-go=\"`snapshotId`\" pulumi-lang-python=\"`snapshot_id`\" pulumi-lang-yaml=\"`snapshotId`\" pulumi-lang-java=\"`snapshotId`\"\u003e`snapshot_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`imageId`\" pulumi-lang-dotnet=\"`ImageId`\" pulumi-lang-go=\"`imageId`\" pulumi-lang-python=\"`image_id`\" pulumi-lang-yaml=\"`imageId`\" pulumi-lang-java=\"`imageId`\"\u003e`image_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`backupId`\" pulumi-lang-dotnet=\"`BackupId`\" pulumi-lang-go=\"`backupId`\" pulumi-lang-python=\"`backup_id`\" pulumi-lang-yaml=\"`backupId`\" pulumi-lang-java=\"`backupId`\"\u003e`backup_id`\u003c/span\u003e. Changing this\ncreates a new volume.\n","willReplaceOnChanges":true},"volumeRetypePolicy":{"type":"string","description":"Migration policy when changing \u003cspan pulumi-lang-nodejs=\"`volumeType`\" pulumi-lang-dotnet=\"`VolumeType`\" pulumi-lang-go=\"`volumeType`\" pulumi-lang-python=\"`volume_type`\" pulumi-lang-yaml=\"`volumeType`\" pulumi-lang-java=\"`volumeType`\"\u003e`volume_type`\u003c/span\u003e.\n`\"never\"` *(default)* prevents migration to another storage backend, while `\"on-demand\"`\nallows migration if needed. Applicable only when updating \u003cspan pulumi-lang-nodejs=\"`volumeType`\" pulumi-lang-dotnet=\"`VolumeType`\" pulumi-lang-go=\"`volumeType`\" pulumi-lang-python=\"`volume_type`\" pulumi-lang-yaml=\"`volumeType`\" pulumi-lang-java=\"`volumeType`\"\u003e`volume_type`\u003c/span\u003e.\n"},"volumeType":{"type":"string","description":"The type of volume to create or update.\nChanging this will attempt an in-place retype operation; migration depends on \u003cspan pulumi-lang-nodejs=\"`volumeRetypePolicy`\" pulumi-lang-dotnet=\"`VolumeRetypePolicy`\" pulumi-lang-go=\"`volumeRetypePolicy`\" pulumi-lang-python=\"`volume_retype_policy`\" pulumi-lang-yaml=\"`volumeRetypePolicy`\" pulumi-lang-java=\"`volumeRetypePolicy`\"\u003e`volume_retype_policy`\u003c/span\u003e.\n"}},"type":"object"}},"openstack:blockstorage/volumeAttach:VolumeAttach":{"description":"\u003e **Note:** This resource usually requires admin privileges.\n\n\u003e **Note:** This resource does not actually attach a volume to an instance.\nPlease use the \u003cspan pulumi-lang-nodejs=\"`openstack.compute.VolumeAttach`\" pulumi-lang-dotnet=\"`openstack.compute.VolumeAttach`\" pulumi-lang-go=\"`compute.VolumeAttach`\" pulumi-lang-python=\"`compute.VolumeAttach`\" pulumi-lang-yaml=\"`openstack.compute.VolumeAttach`\" pulumi-lang-java=\"`openstack.compute.VolumeAttach`\"\u003e`openstack.compute.VolumeAttach`\u003c/span\u003e resource for that.\n\n\u003e **Note:** All arguments including the \u003cspan pulumi-lang-nodejs=\"`data`\" pulumi-lang-dotnet=\"`Data`\" pulumi-lang-go=\"`data`\" pulumi-lang-python=\"`data`\" pulumi-lang-yaml=\"`data`\" pulumi-lang-java=\"`data`\"\u003e`data`\u003c/span\u003e computed attribute will be\nstored in the raw state as plain-text. Read more about sensitive data in\nstate.\n\nCreates a general purpose attachment connection to a Block\nStorage volume using the OpenStack Block Storage (Cinder) v3 API.\n\nDepending on your Block Storage service configuration, this\nresource can assist in attaching a volume to a non-OpenStack resource\nsuch as a bare-metal server or a remote virtual machine in a\ndifferent cloud provider.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst volume1 = new openstack.blockstorage.Volume(\"volume_1\", {\n    name: \"volume_1\",\n    size: 1,\n});\nconst va1 = new openstack.blockstorage.VolumeAttach(\"va_1\", {\n    volumeId: volume1.id,\n    device: \"auto\",\n    hostName: \"devstack\",\n    ipAddress: \"192.168.255.10\",\n    initiator: \"iqn.1993-08.org.debian:01:e9861fb1859\",\n    osType: \"linux2\",\n    platform: \"x86_64\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nvolume1 = openstack.blockstorage.Volume(\"volume_1\",\n    name=\"volume_1\",\n    size=1)\nva1 = openstack.blockstorage.VolumeAttach(\"va_1\",\n    volume_id=volume1.id,\n    device=\"auto\",\n    host_name=\"devstack\",\n    ip_address=\"192.168.255.10\",\n    initiator=\"iqn.1993-08.org.debian:01:e9861fb1859\",\n    os_type=\"linux2\",\n    platform=\"x86_64\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var volume1 = new OpenStack.BlockStorage.Volume(\"volume_1\", new()\n    {\n        Name = \"volume_1\",\n        Size = 1,\n    });\n\n    var va1 = new OpenStack.BlockStorage.VolumeAttach(\"va_1\", new()\n    {\n        VolumeId = volume1.Id,\n        Device = \"auto\",\n        HostName = \"devstack\",\n        IpAddress = \"192.168.255.10\",\n        Initiator = \"iqn.1993-08.org.debian:01:e9861fb1859\",\n        OsType = \"linux2\",\n        Platform = \"x86_64\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/blockstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvolume1, err := blockstorage.NewVolume(ctx, \"volume_1\", \u0026blockstorage.VolumeArgs{\n\t\t\tName: pulumi.String(\"volume_1\"),\n\t\t\tSize: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = blockstorage.NewVolumeAttach(ctx, \"va_1\", \u0026blockstorage.VolumeAttachArgs{\n\t\t\tVolumeId:  volume1.ID(),\n\t\t\tDevice:    pulumi.String(\"auto\"),\n\t\t\tHostName:  pulumi.String(\"devstack\"),\n\t\t\tIpAddress: pulumi.String(\"192.168.255.10\"),\n\t\t\tInitiator: pulumi.String(\"iqn.1993-08.org.debian:01:e9861fb1859\"),\n\t\t\tOsType:    pulumi.String(\"linux2\"),\n\t\t\tPlatform:  pulumi.String(\"x86_64\"),\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.openstack.blockstorage.Volume;\nimport com.pulumi.openstack.blockstorage.VolumeArgs;\nimport com.pulumi.openstack.blockstorage.VolumeAttach;\nimport com.pulumi.openstack.blockstorage.VolumeAttachArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 volume1 = new Volume(\"volume1\", VolumeArgs.builder()\n            .name(\"volume_1\")\n            .size(1)\n            .build());\n\n        var va1 = new VolumeAttach(\"va1\", VolumeAttachArgs.builder()\n            .volumeId(volume1.id())\n            .device(\"auto\")\n            .hostName(\"devstack\")\n            .ipAddress(\"192.168.255.10\")\n            .initiator(\"iqn.1993-08.org.debian:01:e9861fb1859\")\n            .osType(\"linux2\")\n            .platform(\"x86_64\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  volume1:\n    type: openstack:blockstorage:Volume\n    name: volume_1\n    properties:\n      name: volume_1\n      size: 1\n  va1:\n    type: openstack:blockstorage:VolumeAttach\n    name: va_1\n    properties:\n      volumeId: ${volume1.id}\n      device: auto\n      hostName: devstack\n      ipAddress: 192.168.255.10\n      initiator: iqn.1993-08.org.debian:01:e9861fb1859\n      osType: linux2\n      platform: x86_64\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Volume Connection Data\n\nUpon creation of this resource, a \u003cspan pulumi-lang-nodejs=\"`data`\" pulumi-lang-dotnet=\"`Data`\" pulumi-lang-go=\"`data`\" pulumi-lang-python=\"`data`\" pulumi-lang-yaml=\"`data`\" pulumi-lang-java=\"`data`\"\u003e`data`\u003c/span\u003e exported attribute will be available.\nThis attribute is a set of key/value pairs that contains the information\nrequired to complete the block storage connection.\n\nAs an example, creating an iSCSI-based volume will return the following:\n\n```\ndata.access_mode = rw\ndata.auth_method = CHAP\ndata.auth_password = xUhbGKQ8QCwKmHQ2\ndata.auth_username = Sphn5X4EoyFUUMYVYSA4\ndata.target_iqn = iqn.2010-10.org.openstack:volume-2d87ed25-c312-4f42-be1d-3b36b014561d\ndata.target_portal = 192.168.255.10:3260\ndata.volume_id = 2d87ed25-c312-4f42-be1d-3b36b014561d\n```\n\nThis information can then be fed into a provisioner or a template shell script,\nwhere the final result would look something like:\n\n```\niscsiadm -m node -T ${self.data.target_iqn} -p ${self.data.target_portal} --interface default --op new\niscsiadm -m node -T ${self.data.target_iqn} -p ${self.data.target_portal} --op update -n node.session.auth.authmethod -v ${self.data.auth_method}\niscsiadm -m node -T ${self.data.target_iqn} -p ${self.data.target_portal} --op update -n node.session.auth.username -v ${self.data.auth_username}\niscsiadm -m node -T ${self.data.target_iqn} -p ${self.data.target_portal} --op update -n node.session.auth.password -v ${self.data.auth_password}\niscsiadm -m node -T ${self.data.target_iqn} -p ${self.data.target_portal} --login\niscsiadm -m node -T ${self.data.target_iqn} -p ${self.data.target_portal} --op update -n node.startup -v automatic\niscsiadm -m node -T ${self.data.target_iqn} -p ${self.data.target_portal} --rescan\n```\n\nThe contents of \u003cspan pulumi-lang-nodejs=\"`data`\" pulumi-lang-dotnet=\"`Data`\" pulumi-lang-go=\"`data`\" pulumi-lang-python=\"`data`\" pulumi-lang-yaml=\"`data`\" pulumi-lang-java=\"`data`\"\u003e`data`\u003c/span\u003e will vary from each Block Storage service. You must have\na good understanding of how the service is configured and how to make the\nappropriate final connection. However, if used correctly, this has the\nflexibility to be able to attach OpenStack Block Storage volumes to\nnon-OpenStack resources.\n\n## Import\n\nIt is not possible to import this resource.\n\n","properties":{"attachMode":{"type":"string","description":"Specify whether to attach the volume as Read-Only\n(\u003cspan pulumi-lang-nodejs=\"`ro`\" pulumi-lang-dotnet=\"`Ro`\" pulumi-lang-go=\"`ro`\" pulumi-lang-python=\"`ro`\" pulumi-lang-yaml=\"`ro`\" pulumi-lang-java=\"`ro`\"\u003e`ro`\u003c/span\u003e) or Read-Write (\u003cspan pulumi-lang-nodejs=\"`rw`\" pulumi-lang-dotnet=\"`Rw`\" pulumi-lang-go=\"`rw`\" pulumi-lang-python=\"`rw`\" pulumi-lang-yaml=\"`rw`\" pulumi-lang-java=\"`rw`\"\u003e`rw`\u003c/span\u003e). Only values of \u003cspan pulumi-lang-nodejs=\"`ro`\" pulumi-lang-dotnet=\"`Ro`\" pulumi-lang-go=\"`ro`\" pulumi-lang-python=\"`ro`\" pulumi-lang-yaml=\"`ro`\" pulumi-lang-java=\"`ro`\"\u003e`ro`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`rw`\" pulumi-lang-dotnet=\"`Rw`\" pulumi-lang-go=\"`rw`\" pulumi-lang-python=\"`rw`\" pulumi-lang-yaml=\"`rw`\" pulumi-lang-java=\"`rw`\"\u003e`rw`\u003c/span\u003e are accepted.\nIf left unspecified, the Block Storage API will apply a default of \u003cspan pulumi-lang-nodejs=\"`rw`\" pulumi-lang-dotnet=\"`Rw`\" pulumi-lang-go=\"`rw`\" pulumi-lang-python=\"`rw`\" pulumi-lang-yaml=\"`rw`\" pulumi-lang-java=\"`rw`\"\u003e`rw`\u003c/span\u003e.\n"},"data":{"type":"object","additionalProperties":{"type":"string"},"description":"This is a map of key/value pairs that contain the connection\ninformation. You will want to pass this information to a provisioner\nscript to finalize the connection. See below for more information.\n","secret":true},"device":{"type":"string","description":"The device to tell the Block Storage service this\nvolume will be attached as. This is purely for informational purposes.\nYou can specify \u003cspan pulumi-lang-nodejs=\"`auto`\" pulumi-lang-dotnet=\"`Auto`\" pulumi-lang-go=\"`auto`\" pulumi-lang-python=\"`auto`\" pulumi-lang-yaml=\"`auto`\" pulumi-lang-java=\"`auto`\"\u003e`auto`\u003c/span\u003e or a device such as `/dev/vdc`.\n"},"driverVolumeType":{"type":"string","description":"The storage driver that the volume is based on.\n"},"hostName":{"type":"string","description":"The host to attach the volume to.\n"},"initiator":{"type":"string","description":"The iSCSI initiator string to make the connection.\n"},"ipAddress":{"type":"string","description":"The IP address of the \u003cspan pulumi-lang-nodejs=\"`hostName`\" pulumi-lang-dotnet=\"`HostName`\" pulumi-lang-go=\"`hostName`\" pulumi-lang-python=\"`host_name`\" pulumi-lang-yaml=\"`hostName`\" pulumi-lang-java=\"`hostName`\"\u003e`host_name`\u003c/span\u003e above.\n"},"mountPointBase":{"type":"string","description":"A mount point base name for shared storage.\n"},"multipath":{"type":"boolean","description":"Whether to connect to this volume via multipath.\n"},"osType":{"type":"string","description":"The iSCSI initiator OS type.\n"},"platform":{"type":"string","description":"The iSCSI initiator platform.\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Block Storage\nclient. A Block Storage client is needed to create a volume attachment.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new volume attachment.\n"},"volumeId":{"type":"string","description":"The ID of the Volume to attach to an Instance.\n"},"wwnn":{"type":"string","description":"A wwnn name. Used for Fibre Channel connections.\n"},"wwpns":{"type":"array","items":{"type":"string"},"description":"An array of wwpn strings. Used for Fibre Channel\nconnections.\n"}},"required":["data","driverVolumeType","hostName","mountPointBase","region","volumeId"],"inputProperties":{"attachMode":{"type":"string","description":"Specify whether to attach the volume as Read-Only\n(\u003cspan pulumi-lang-nodejs=\"`ro`\" pulumi-lang-dotnet=\"`Ro`\" pulumi-lang-go=\"`ro`\" pulumi-lang-python=\"`ro`\" pulumi-lang-yaml=\"`ro`\" pulumi-lang-java=\"`ro`\"\u003e`ro`\u003c/span\u003e) or Read-Write (\u003cspan pulumi-lang-nodejs=\"`rw`\" pulumi-lang-dotnet=\"`Rw`\" pulumi-lang-go=\"`rw`\" pulumi-lang-python=\"`rw`\" pulumi-lang-yaml=\"`rw`\" pulumi-lang-java=\"`rw`\"\u003e`rw`\u003c/span\u003e). Only values of \u003cspan pulumi-lang-nodejs=\"`ro`\" pulumi-lang-dotnet=\"`Ro`\" pulumi-lang-go=\"`ro`\" pulumi-lang-python=\"`ro`\" pulumi-lang-yaml=\"`ro`\" pulumi-lang-java=\"`ro`\"\u003e`ro`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`rw`\" pulumi-lang-dotnet=\"`Rw`\" pulumi-lang-go=\"`rw`\" pulumi-lang-python=\"`rw`\" pulumi-lang-yaml=\"`rw`\" pulumi-lang-java=\"`rw`\"\u003e`rw`\u003c/span\u003e are accepted.\nIf left unspecified, the Block Storage API will apply a default of \u003cspan pulumi-lang-nodejs=\"`rw`\" pulumi-lang-dotnet=\"`Rw`\" pulumi-lang-go=\"`rw`\" pulumi-lang-python=\"`rw`\" pulumi-lang-yaml=\"`rw`\" pulumi-lang-java=\"`rw`\"\u003e`rw`\u003c/span\u003e.\n","willReplaceOnChanges":true},"device":{"type":"string","description":"The device to tell the Block Storage service this\nvolume will be attached as. This is purely for informational purposes.\nYou can specify \u003cspan pulumi-lang-nodejs=\"`auto`\" pulumi-lang-dotnet=\"`Auto`\" pulumi-lang-go=\"`auto`\" pulumi-lang-python=\"`auto`\" pulumi-lang-yaml=\"`auto`\" pulumi-lang-java=\"`auto`\"\u003e`auto`\u003c/span\u003e or a device such as `/dev/vdc`.\n","willReplaceOnChanges":true},"hostName":{"type":"string","description":"The host to attach the volume to.\n","willReplaceOnChanges":true},"initiator":{"type":"string","description":"The iSCSI initiator string to make the connection.\n","willReplaceOnChanges":true},"ipAddress":{"type":"string","description":"The IP address of the \u003cspan pulumi-lang-nodejs=\"`hostName`\" pulumi-lang-dotnet=\"`HostName`\" pulumi-lang-go=\"`hostName`\" pulumi-lang-python=\"`host_name`\" pulumi-lang-yaml=\"`hostName`\" pulumi-lang-java=\"`hostName`\"\u003e`host_name`\u003c/span\u003e above.\n","willReplaceOnChanges":true},"multipath":{"type":"boolean","description":"Whether to connect to this volume via multipath.\n","willReplaceOnChanges":true},"osType":{"type":"string","description":"The iSCSI initiator OS type.\n","willReplaceOnChanges":true},"platform":{"type":"string","description":"The iSCSI initiator platform.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V3 Block Storage\nclient. A Block Storage client is needed to create a volume attachment.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new volume attachment.\n","willReplaceOnChanges":true},"volumeId":{"type":"string","description":"The ID of the Volume to attach to an Instance.\n","willReplaceOnChanges":true},"wwnn":{"type":"string","description":"A wwnn name. Used for Fibre Channel connections.\n","willReplaceOnChanges":true},"wwpns":{"type":"array","items":{"type":"string"},"description":"An array of wwpn strings. Used for Fibre Channel\nconnections.\n","willReplaceOnChanges":true}},"requiredInputs":["hostName","volumeId"],"stateInputs":{"description":"Input properties used for looking up and filtering VolumeAttach resources.\n","properties":{"attachMode":{"type":"string","description":"Specify whether to attach the volume as Read-Only\n(\u003cspan pulumi-lang-nodejs=\"`ro`\" pulumi-lang-dotnet=\"`Ro`\" pulumi-lang-go=\"`ro`\" pulumi-lang-python=\"`ro`\" pulumi-lang-yaml=\"`ro`\" pulumi-lang-java=\"`ro`\"\u003e`ro`\u003c/span\u003e) or Read-Write (\u003cspan pulumi-lang-nodejs=\"`rw`\" pulumi-lang-dotnet=\"`Rw`\" pulumi-lang-go=\"`rw`\" pulumi-lang-python=\"`rw`\" pulumi-lang-yaml=\"`rw`\" pulumi-lang-java=\"`rw`\"\u003e`rw`\u003c/span\u003e). Only values of \u003cspan pulumi-lang-nodejs=\"`ro`\" pulumi-lang-dotnet=\"`Ro`\" pulumi-lang-go=\"`ro`\" pulumi-lang-python=\"`ro`\" pulumi-lang-yaml=\"`ro`\" pulumi-lang-java=\"`ro`\"\u003e`ro`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`rw`\" pulumi-lang-dotnet=\"`Rw`\" pulumi-lang-go=\"`rw`\" pulumi-lang-python=\"`rw`\" pulumi-lang-yaml=\"`rw`\" pulumi-lang-java=\"`rw`\"\u003e`rw`\u003c/span\u003e are accepted.\nIf left unspecified, the Block Storage API will apply a default of \u003cspan pulumi-lang-nodejs=\"`rw`\" pulumi-lang-dotnet=\"`Rw`\" pulumi-lang-go=\"`rw`\" pulumi-lang-python=\"`rw`\" pulumi-lang-yaml=\"`rw`\" pulumi-lang-java=\"`rw`\"\u003e`rw`\u003c/span\u003e.\n","willReplaceOnChanges":true},"data":{"type":"object","additionalProperties":{"type":"string"},"description":"This is a map of key/value pairs that contain the connection\ninformation. You will want to pass this information to a provisioner\nscript to finalize the connection. See below for more information.\n","secret":true},"device":{"type":"string","description":"The device to tell the Block Storage service this\nvolume will be attached as. This is purely for informational purposes.\nYou can specify \u003cspan pulumi-lang-nodejs=\"`auto`\" pulumi-lang-dotnet=\"`Auto`\" pulumi-lang-go=\"`auto`\" pulumi-lang-python=\"`auto`\" pulumi-lang-yaml=\"`auto`\" pulumi-lang-java=\"`auto`\"\u003e`auto`\u003c/span\u003e or a device such as `/dev/vdc`.\n","willReplaceOnChanges":true},"driverVolumeType":{"type":"string","description":"The storage driver that the volume is based on.\n"},"hostName":{"type":"string","description":"The host to attach the volume to.\n","willReplaceOnChanges":true},"initiator":{"type":"string","description":"The iSCSI initiator string to make the connection.\n","willReplaceOnChanges":true},"ipAddress":{"type":"string","description":"The IP address of the \u003cspan pulumi-lang-nodejs=\"`hostName`\" pulumi-lang-dotnet=\"`HostName`\" pulumi-lang-go=\"`hostName`\" pulumi-lang-python=\"`host_name`\" pulumi-lang-yaml=\"`hostName`\" pulumi-lang-java=\"`hostName`\"\u003e`host_name`\u003c/span\u003e above.\n","willReplaceOnChanges":true},"mountPointBase":{"type":"string","description":"A mount point base name for shared storage.\n"},"multipath":{"type":"boolean","description":"Whether to connect to this volume via multipath.\n","willReplaceOnChanges":true},"osType":{"type":"string","description":"The iSCSI initiator OS type.\n","willReplaceOnChanges":true},"platform":{"type":"string","description":"The iSCSI initiator platform.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V3 Block Storage\nclient. A Block Storage client is needed to create a volume attachment.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new volume attachment.\n","willReplaceOnChanges":true},"volumeId":{"type":"string","description":"The ID of the Volume to attach to an Instance.\n","willReplaceOnChanges":true},"wwnn":{"type":"string","description":"A wwnn name. Used for Fibre Channel connections.\n","willReplaceOnChanges":true},"wwpns":{"type":"array","items":{"type":"string"},"description":"An array of wwpn strings. Used for Fibre Channel\nconnections.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:blockstorage/volumeTypeAccessV3:VolumeTypeAccessV3":{"description":"Manages a V3 block storage volume type access resource within OpenStack.\n\n\u003e **Note:** This usually requires admin privileges.\n\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst project1 = new openstack.identity.Project(\"project_1\", {name: \"project_1\"});\nconst volumeType1 = new openstack.blockstorage.VolumeTypeV3(\"volume_type_1\", {\n    name: \"volume_type_1\",\n    isPublic: false,\n});\nconst volumeTypeAccess = new openstack.blockstorage.VolumeTypeAccessV3(\"volume_type_access\", {\n    projectId: project1.id,\n    volumeTypeId: volumeType1.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nproject1 = openstack.identity.Project(\"project_1\", name=\"project_1\")\nvolume_type1 = openstack.blockstorage.VolumeTypeV3(\"volume_type_1\",\n    name=\"volume_type_1\",\n    is_public=False)\nvolume_type_access = openstack.blockstorage.VolumeTypeAccessV3(\"volume_type_access\",\n    project_id=project1.id,\n    volume_type_id=volume_type1.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var project1 = new OpenStack.Identity.Project(\"project_1\", new()\n    {\n        Name = \"project_1\",\n    });\n\n    var volumeType1 = new OpenStack.BlockStorage.VolumeTypeV3(\"volume_type_1\", new()\n    {\n        Name = \"volume_type_1\",\n        IsPublic = false,\n    });\n\n    var volumeTypeAccess = new OpenStack.BlockStorage.VolumeTypeAccessV3(\"volume_type_access\", new()\n    {\n        ProjectId = project1.Id,\n        VolumeTypeId = volumeType1.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/blockstorage\"\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/identity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject1, err := identity.NewProject(ctx, \"project_1\", \u0026identity.ProjectArgs{\n\t\t\tName: pulumi.String(\"project_1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvolumeType1, err := blockstorage.NewVolumeTypeV3(ctx, \"volume_type_1\", \u0026blockstorage.VolumeTypeV3Args{\n\t\t\tName:     pulumi.String(\"volume_type_1\"),\n\t\t\tIsPublic: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = blockstorage.NewVolumeTypeAccessV3(ctx, \"volume_type_access\", \u0026blockstorage.VolumeTypeAccessV3Args{\n\t\t\tProjectId:    project1.ID(),\n\t\t\tVolumeTypeId: volumeType1.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.openstack.identity.Project;\nimport com.pulumi.openstack.identity.ProjectArgs;\nimport com.pulumi.openstack.blockstorage.VolumeTypeV3;\nimport com.pulumi.openstack.blockstorage.VolumeTypeV3Args;\nimport com.pulumi.openstack.blockstorage.VolumeTypeAccessV3;\nimport com.pulumi.openstack.blockstorage.VolumeTypeAccessV3Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 project1 = new Project(\"project1\", ProjectArgs.builder()\n            .name(\"project_1\")\n            .build());\n\n        var volumeType1 = new VolumeTypeV3(\"volumeType1\", VolumeTypeV3Args.builder()\n            .name(\"volume_type_1\")\n            .isPublic(false)\n            .build());\n\n        var volumeTypeAccess = new VolumeTypeAccessV3(\"volumeTypeAccess\", VolumeTypeAccessV3Args.builder()\n            .projectId(project1.id())\n            .volumeTypeId(volumeType1.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  project1:\n    type: openstack:identity:Project\n    name: project_1\n    properties:\n      name: project_1\n  volumeType1:\n    type: openstack:blockstorage:VolumeTypeV3\n    name: volume_type_1\n    properties:\n      name: volume_type_1\n      isPublic: false\n  volumeTypeAccess:\n    type: openstack:blockstorage:VolumeTypeAccessV3\n    name: volume_type_access\n    properties:\n      projectId: ${project1.id}\n      volumeTypeId: ${volumeType1.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVolume types access can be imported using the `volume_type_id/project_id`, e.g.\n\n```sh\n$ pulumi import openstack:blockstorage/volumeTypeAccessV3:VolumeTypeAccessV3 volume_type_access 941793f0-0a34-4bc4-b72e-a6326ae58283/ed498e81f0cc448bae0ad4f8f21bf67f\n```\n","properties":{"projectId":{"type":"string","description":"ID of the project to give access to. Changing this\ncreates a new resource.\n"},"region":{"type":"string","description":"The region in which to create the volume. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new quotaset.\n"},"volumeTypeId":{"type":"string","description":"ID of the volume type to give access to. Changing\nthis creates a new resource.\n"}},"required":["projectId","region","volumeTypeId"],"inputProperties":{"projectId":{"type":"string","description":"ID of the project to give access to. Changing this\ncreates a new resource.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to create the volume. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new quotaset.\n","willReplaceOnChanges":true},"volumeTypeId":{"type":"string","description":"ID of the volume type to give access to. Changing\nthis creates a new resource.\n","willReplaceOnChanges":true}},"requiredInputs":["projectId","volumeTypeId"],"stateInputs":{"description":"Input properties used for looking up and filtering VolumeTypeAccessV3 resources.\n","properties":{"projectId":{"type":"string","description":"ID of the project to give access to. Changing this\ncreates a new resource.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to create the volume. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new quotaset.\n","willReplaceOnChanges":true},"volumeTypeId":{"type":"string","description":"ID of the volume type to give access to. Changing\nthis creates a new resource.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:blockstorage/volumeTypeV3:VolumeTypeV3":{"description":"Manages a V3 block storage volume type resource within OpenStack.\n\n\u003e **Note:** This usually requires admin privileges.\n\n\n## Example Usage\n\n### Basic Volume Type\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst volumeType1 = new openstack.blockstorage.VolumeTypeV3(\"volume_type_1\", {\n    name: \"volume_type_1\",\n    description: \"Volume type 1\",\n    extraSpecs: {\n        capabilities: \"gpu\",\n        volume_backend_name: \"ssd\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nvolume_type1 = openstack.blockstorage.VolumeTypeV3(\"volume_type_1\",\n    name=\"volume_type_1\",\n    description=\"Volume type 1\",\n    extra_specs={\n        \"capabilities\": \"gpu\",\n        \"volume_backend_name\": \"ssd\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var volumeType1 = new OpenStack.BlockStorage.VolumeTypeV3(\"volume_type_1\", new()\n    {\n        Name = \"volume_type_1\",\n        Description = \"Volume type 1\",\n        ExtraSpecs = \n        {\n            { \"capabilities\", \"gpu\" },\n            { \"volume_backend_name\", \"ssd\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/blockstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := blockstorage.NewVolumeTypeV3(ctx, \"volume_type_1\", \u0026blockstorage.VolumeTypeV3Args{\n\t\t\tName:        pulumi.String(\"volume_type_1\"),\n\t\t\tDescription: pulumi.String(\"Volume type 1\"),\n\t\t\tExtraSpecs: pulumi.StringMap{\n\t\t\t\t\"capabilities\":        pulumi.String(\"gpu\"),\n\t\t\t\t\"volume_backend_name\": pulumi.String(\"ssd\"),\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.openstack.blockstorage.VolumeTypeV3;\nimport com.pulumi.openstack.blockstorage.VolumeTypeV3Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 volumeType1 = new VolumeTypeV3(\"volumeType1\", VolumeTypeV3Args.builder()\n            .name(\"volume_type_1\")\n            .description(\"Volume type 1\")\n            .extraSpecs(Map.ofEntries(\n                Map.entry(\"capabilities\", \"gpu\"),\n                Map.entry(\"volume_backend_name\", \"ssd\")\n            ))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  volumeType1:\n    type: openstack:blockstorage:VolumeTypeV3\n    name: volume_type_1\n    properties:\n      name: volume_type_1\n      description: Volume type 1\n      extraSpecs:\n        capabilities: gpu\n        volume_backend_name: ssd\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Volume Type with multiattach enabled\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst multiattach = new openstack.blockstorage.VolumeTypeV3(\"multiattach\", {\n    name: \"multiattach\",\n    description: \"Multiattach-enabled volume type\",\n    extraSpecs: {\n        multiattach: \"\u003cis\u003e True\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nmultiattach = openstack.blockstorage.VolumeTypeV3(\"multiattach\",\n    name=\"multiattach\",\n    description=\"Multiattach-enabled volume type\",\n    extra_specs={\n        \"multiattach\": \"\u003cis\u003e True\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var multiattach = new OpenStack.BlockStorage.VolumeTypeV3(\"multiattach\", new()\n    {\n        Name = \"multiattach\",\n        Description = \"Multiattach-enabled volume type\",\n        ExtraSpecs = \n        {\n            { \"multiattach\", \"\u003cis\u003e True\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/blockstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := blockstorage.NewVolumeTypeV3(ctx, \"multiattach\", \u0026blockstorage.VolumeTypeV3Args{\n\t\t\tName:        pulumi.String(\"multiattach\"),\n\t\t\tDescription: pulumi.String(\"Multiattach-enabled volume type\"),\n\t\t\tExtraSpecs: pulumi.StringMap{\n\t\t\t\t\"multiattach\": pulumi.String(\"\u003cis\u003e True\"),\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.openstack.blockstorage.VolumeTypeV3;\nimport com.pulumi.openstack.blockstorage.VolumeTypeV3Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 multiattach = new VolumeTypeV3(\"multiattach\", VolumeTypeV3Args.builder()\n            .name(\"multiattach\")\n            .description(\"Multiattach-enabled volume type\")\n            .extraSpecs(Map.of(\"multiattach\", \"\u003cis\u003e True\"))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  multiattach:\n    type: openstack:blockstorage:VolumeTypeV3\n    properties:\n      name: multiattach\n      description: Multiattach-enabled volume type\n      extraSpecs:\n        multiattach: \u003cis\u003e True\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVolume types can be imported using the `volume_type_id`, e.g.\n\n```sh\n$ pulumi import openstack:blockstorage/volumeTypeV3:VolumeTypeV3 volume_type_1 941793f0-0a34-4bc4-b72e-a6326ae58283\n```\n","properties":{"description":{"type":"string","description":"Human-readable description of the port. Changing\nthis updates the \u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\"\u003e`description`\u003c/span\u003e of an existing volume type.\n"},"extraSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Key/Value pairs of metadata for the volume type.\n"},"isPublic":{"type":"boolean","description":"Whether the volume type is public. Changing\nthis updates the \u003cspan pulumi-lang-nodejs=\"`isPublic`\" pulumi-lang-dotnet=\"`IsPublic`\" pulumi-lang-go=\"`isPublic`\" pulumi-lang-python=\"`is_public`\" pulumi-lang-yaml=\"`isPublic`\" pulumi-lang-java=\"`isPublic`\"\u003e`is_public`\u003c/span\u003e of an existing volume type.\n"},"name":{"type":"string","description":"Name of the volume type.  Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e of an existing volume type.\n"},"region":{"type":"string","description":"The region in which to create the volume. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new quotaset.\n"}},"required":["description","extraSpecs","isPublic","name","region"],"inputProperties":{"description":{"type":"string","description":"Human-readable description of the port. Changing\nthis updates the \u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\"\u003e`description`\u003c/span\u003e of an existing volume type.\n"},"extraSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Key/Value pairs of metadata for the volume type.\n"},"isPublic":{"type":"boolean","description":"Whether the volume type is public. Changing\nthis updates the \u003cspan pulumi-lang-nodejs=\"`isPublic`\" pulumi-lang-dotnet=\"`IsPublic`\" pulumi-lang-go=\"`isPublic`\" pulumi-lang-python=\"`is_public`\" pulumi-lang-yaml=\"`isPublic`\" pulumi-lang-java=\"`isPublic`\"\u003e`is_public`\u003c/span\u003e of an existing volume type.\n"},"name":{"type":"string","description":"Name of the volume type.  Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e of an existing volume type.\n"},"region":{"type":"string","description":"The region in which to create the volume. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new quotaset.\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering VolumeTypeV3 resources.\n","properties":{"description":{"type":"string","description":"Human-readable description of the port. Changing\nthis updates the \u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\"\u003e`description`\u003c/span\u003e of an existing volume type.\n"},"extraSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Key/Value pairs of metadata for the volume type.\n"},"isPublic":{"type":"boolean","description":"Whether the volume type is public. Changing\nthis updates the \u003cspan pulumi-lang-nodejs=\"`isPublic`\" pulumi-lang-dotnet=\"`IsPublic`\" pulumi-lang-go=\"`isPublic`\" pulumi-lang-python=\"`is_public`\" pulumi-lang-yaml=\"`isPublic`\" pulumi-lang-java=\"`isPublic`\"\u003e`is_public`\u003c/span\u003e of an existing volume type.\n"},"name":{"type":"string","description":"Name of the volume type.  Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e of an existing volume type.\n"},"region":{"type":"string","description":"The region in which to create the volume. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new quotaset.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:compute/aggregateV2:AggregateV2":{"description":"Manages a Host Aggregate within Openstack Nova.\n\n## Example Usage\n\n### Full example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst dellServers = new openstack.compute.AggregateV2(\"dell_servers\", {\n    region: \"RegionOne\",\n    name: \"dell_servers\",\n    zone: \"nova\",\n    metadata: {\n        cpus: \"56\",\n    },\n    hosts: [\n        \"myhost01.example.com\",\n        \"myhost02.example.com\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\ndell_servers = openstack.compute.AggregateV2(\"dell_servers\",\n    region=\"RegionOne\",\n    name=\"dell_servers\",\n    zone=\"nova\",\n    metadata={\n        \"cpus\": \"56\",\n    },\n    hosts=[\n        \"myhost01.example.com\",\n        \"myhost02.example.com\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var dellServers = new OpenStack.Compute.AggregateV2(\"dell_servers\", new()\n    {\n        Region = \"RegionOne\",\n        Name = \"dell_servers\",\n        Zone = \"nova\",\n        Metadata = \n        {\n            { \"cpus\", \"56\" },\n        },\n        Hosts = new[]\n        {\n            \"myhost01.example.com\",\n            \"myhost02.example.com\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewAggregateV2(ctx, \"dell_servers\", \u0026compute.AggregateV2Args{\n\t\t\tRegion: pulumi.String(\"RegionOne\"),\n\t\t\tName:   pulumi.String(\"dell_servers\"),\n\t\t\tZone:   pulumi.String(\"nova\"),\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"cpus\": pulumi.String(\"56\"),\n\t\t\t},\n\t\t\tHosts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"myhost01.example.com\"),\n\t\t\t\tpulumi.String(\"myhost02.example.com\"),\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.openstack.compute.AggregateV2;\nimport com.pulumi.openstack.compute.AggregateV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 dellServers = new AggregateV2(\"dellServers\", AggregateV2Args.builder()\n            .region(\"RegionOne\")\n            .name(\"dell_servers\")\n            .zone(\"nova\")\n            .metadata(Map.of(\"cpus\", \"56\"))\n            .hosts(            \n                \"myhost01.example.com\",\n                \"myhost02.example.com\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  dellServers:\n    type: openstack:compute:AggregateV2\n    name: dell_servers\n    properties:\n      region: RegionOne\n      name: dell_servers\n      zone: nova\n      metadata:\n        cpus: '56'\n      hosts:\n        - myhost01.example.com\n        - myhost02.example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Minimum required example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst test = new openstack.compute.AggregateV2(\"test\", {name: \"test\"});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\ntest = openstack.compute.AggregateV2(\"test\", name=\"test\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new OpenStack.Compute.AggregateV2(\"test\", new()\n    {\n        Name = \"test\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewAggregateV2(ctx, \"test\", \u0026compute.AggregateV2Args{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openstack.compute.AggregateV2;\nimport com.pulumi.openstack.compute.AggregateV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 test = new AggregateV2(\"test\", AggregateV2Args.builder()\n            .name(\"test\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: openstack:compute:AggregateV2\n    properties:\n      name: test\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nYou can import an existing Host Aggregate by their ID.\n\n```sh\n$ pulumi import openstack:compute/aggregateV2:AggregateV2 myaggregate 24\n```\n\nThe ID can be obtained with an openstack command:\n\n$ openstack aggregate list\n\n+----+------+-------------------+\n\n| ID | Name | Availability Zone |\n\n+----+------+-------------------+\n\n| 59 | test | None              |\n\n+----+------+-------------------+\n\n","properties":{"hosts":{"type":"array","items":{"type":"string"},"description":"The list of hosts contained in the Host Aggregate. The hosts must be added\nto Openstack and visible in the web interface, or the provider will fail to add them to the host\naggregate.\n"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"The metadata of the Host Aggregate. Can be useful to indicate scheduler hints.\n"},"name":{"type":"string","description":"The name of the Host Aggregate\n"},"region":{"type":"string","description":"The region in which to create the Host Aggregate. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new Host Aggregate.\n"},"zone":{"type":"string","description":"The name of the Availability Zone to use. If ommited, it will take the default\navailability zone.\n"}},"required":["name","region"],"inputProperties":{"hosts":{"type":"array","items":{"type":"string"},"description":"The list of hosts contained in the Host Aggregate. The hosts must be added\nto Openstack and visible in the web interface, or the provider will fail to add them to the host\naggregate.\n"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"The metadata of the Host Aggregate. Can be useful to indicate scheduler hints.\n"},"name":{"type":"string","description":"The name of the Host Aggregate\n"},"region":{"type":"string","description":"The region in which to create the Host Aggregate. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new Host Aggregate.\n","willReplaceOnChanges":true},"zone":{"type":"string","description":"The name of the Availability Zone to use. If ommited, it will take the default\navailability zone.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering AggregateV2 resources.\n","properties":{"hosts":{"type":"array","items":{"type":"string"},"description":"The list of hosts contained in the Host Aggregate. The hosts must be added\nto Openstack and visible in the web interface, or the provider will fail to add them to the host\naggregate.\n"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"The metadata of the Host Aggregate. Can be useful to indicate scheduler hints.\n"},"name":{"type":"string","description":"The name of the Host Aggregate\n"},"region":{"type":"string","description":"The region in which to create the Host Aggregate. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new Host Aggregate.\n","willReplaceOnChanges":true},"zone":{"type":"string","description":"The name of the Availability Zone to use. If ommited, it will take the default\navailability zone.\n"}},"type":"object"}},"openstack:compute/flavor:Flavor":{"description":"Manages a V2 flavor resource within OpenStack.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst test_flavor = new openstack.compute.Flavor(\"test-flavor\", {\n    name: \"my-flavor\",\n    ram: 8096,\n    vcpus: 2,\n    disk: 20,\n    extraSpecs: {\n        \"hw:cpu_policy\": \"CPU-POLICY\",\n        \"hw:cpu_thread_policy\": \"CPU-THREAD-POLICY\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\ntest_flavor = openstack.compute.Flavor(\"test-flavor\",\n    name=\"my-flavor\",\n    ram=8096,\n    vcpus=2,\n    disk=20,\n    extra_specs={\n        \"hw:cpu_policy\": \"CPU-POLICY\",\n        \"hw:cpu_thread_policy\": \"CPU-THREAD-POLICY\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test_flavor = new OpenStack.Compute.Flavor(\"test-flavor\", new()\n    {\n        Name = \"my-flavor\",\n        Ram = 8096,\n        Vcpus = 2,\n        Disk = 20,\n        ExtraSpecs = \n        {\n            { \"hw:cpu_policy\", \"CPU-POLICY\" },\n            { \"hw:cpu_thread_policy\", \"CPU-THREAD-POLICY\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewFlavor(ctx, \"test-flavor\", \u0026compute.FlavorArgs{\n\t\t\tName:  pulumi.String(\"my-flavor\"),\n\t\t\tRam:   pulumi.Int(8096),\n\t\t\tVcpus: pulumi.Int(2),\n\t\t\tDisk:  pulumi.Int(20),\n\t\t\tExtraSpecs: pulumi.StringMap{\n\t\t\t\t\"hw:cpu_policy\":        pulumi.String(\"CPU-POLICY\"),\n\t\t\t\t\"hw:cpu_thread_policy\": pulumi.String(\"CPU-THREAD-POLICY\"),\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.openstack.compute.Flavor;\nimport com.pulumi.openstack.compute.FlavorArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 test_flavor = new Flavor(\"test-flavor\", FlavorArgs.builder()\n            .name(\"my-flavor\")\n            .ram(8096)\n            .vcpus(2)\n            .disk(20)\n            .extraSpecs(Map.ofEntries(\n                Map.entry(\"hw:cpu_policy\", \"CPU-POLICY\"),\n                Map.entry(\"hw:cpu_thread_policy\", \"CPU-THREAD-POLICY\")\n            ))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test-flavor:\n    type: openstack:compute:Flavor\n    properties:\n      name: my-flavor\n      ram: '8096'\n      vcpus: '2'\n      disk: '20'\n      extraSpecs:\n        hw:cpu_policy: CPU-POLICY\n        hw:cpu_thread_policy: CPU-THREAD-POLICY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFlavors can be imported using the `ID`, e.g.\n\n```sh\n$ pulumi import openstack:compute/flavor:Flavor my-flavor 4142e64b-1b35-44a0-9b1e-5affc7af1106\n```\n","properties":{"description":{"type":"string","description":"The description of the flavor. Changing this\nupdates the description of the flavor. Requires microversion \u003e= 2.55.\n"},"disk":{"type":"integer","description":"The amount of disk space in GiB to use for the root\n(/) partition. Changing this creates a new flavor.\n"},"ephemeral":{"type":"integer","description":"The amount of ephemeral in GiB. If unspecified,\nthe default is 0. Changing this creates a new flavor.\n"},"extraSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Key/Value pairs of metadata for the flavor.\n"},"flavorId":{"type":"string","description":"Unique ID (integer or UUID) of flavor to create. Changing\nthis creates a new flavor.\n"},"isPublic":{"type":"boolean","description":"Whether the flavor is public. Changing this creates\na new flavor.\n"},"name":{"type":"string","description":"A unique name for the flavor. Changing this creates a new\nflavor.\n"},"ram":{"type":"integer","description":"The amount of RAM to use, in megabytes. Changing this\ncreates a new flavor.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Compute client.\nFlavors are associated with accounts, but a Compute client is needed to\ncreate one. If omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\nChanging this creates a new flavor.\n"},"rxTxFactor":{"type":"number","description":"RX/TX bandwith factor. The default is 1. Changing\nthis creates a new flavor.\n"},"swap":{"type":"integer","description":"The amount of disk space in megabytes to use. If\nunspecified, the default is 0. Changing this creates a new flavor.\n"},"vcpus":{"type":"integer","description":"The number of virtual CPUs to use. Changing this creates\na new flavor.\n"}},"required":["disk","extraSpecs","flavorId","name","ram","region","vcpus"],"inputProperties":{"description":{"type":"string","description":"The description of the flavor. Changing this\nupdates the description of the flavor. Requires microversion \u003e= 2.55.\n"},"disk":{"type":"integer","description":"The amount of disk space in GiB to use for the root\n(/) partition. Changing this creates a new flavor.\n","willReplaceOnChanges":true},"ephemeral":{"type":"integer","description":"The amount of ephemeral in GiB. If unspecified,\nthe default is 0. Changing this creates a new flavor.\n","willReplaceOnChanges":true},"extraSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Key/Value pairs of metadata for the flavor.\n"},"flavorId":{"type":"string","description":"Unique ID (integer or UUID) of flavor to create. Changing\nthis creates a new flavor.\n","willReplaceOnChanges":true},"isPublic":{"type":"boolean","description":"Whether the flavor is public. Changing this creates\na new flavor.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"A unique name for the flavor. Changing this creates a new\nflavor.\n","willReplaceOnChanges":true},"ram":{"type":"integer","description":"The amount of RAM to use, in megabytes. Changing this\ncreates a new flavor.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Compute client.\nFlavors are associated with accounts, but a Compute client is needed to\ncreate one. If omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\nChanging this creates a new flavor.\n","willReplaceOnChanges":true},"rxTxFactor":{"type":"number","description":"RX/TX bandwith factor. The default is 1. Changing\nthis creates a new flavor.\n","willReplaceOnChanges":true},"swap":{"type":"integer","description":"The amount of disk space in megabytes to use. If\nunspecified, the default is 0. Changing this creates a new flavor.\n","willReplaceOnChanges":true},"vcpus":{"type":"integer","description":"The number of virtual CPUs to use. Changing this creates\na new flavor.\n","willReplaceOnChanges":true}},"requiredInputs":["disk","ram","vcpus"],"stateInputs":{"description":"Input properties used for looking up and filtering Flavor resources.\n","properties":{"description":{"type":"string","description":"The description of the flavor. Changing this\nupdates the description of the flavor. Requires microversion \u003e= 2.55.\n"},"disk":{"type":"integer","description":"The amount of disk space in GiB to use for the root\n(/) partition. Changing this creates a new flavor.\n","willReplaceOnChanges":true},"ephemeral":{"type":"integer","description":"The amount of ephemeral in GiB. If unspecified,\nthe default is 0. Changing this creates a new flavor.\n","willReplaceOnChanges":true},"extraSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Key/Value pairs of metadata for the flavor.\n"},"flavorId":{"type":"string","description":"Unique ID (integer or UUID) of flavor to create. Changing\nthis creates a new flavor.\n","willReplaceOnChanges":true},"isPublic":{"type":"boolean","description":"Whether the flavor is public. Changing this creates\na new flavor.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"A unique name for the flavor. Changing this creates a new\nflavor.\n","willReplaceOnChanges":true},"ram":{"type":"integer","description":"The amount of RAM to use, in megabytes. Changing this\ncreates a new flavor.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Compute client.\nFlavors are associated with accounts, but a Compute client is needed to\ncreate one. If omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\nChanging this creates a new flavor.\n","willReplaceOnChanges":true},"rxTxFactor":{"type":"number","description":"RX/TX bandwith factor. The default is 1. Changing\nthis creates a new flavor.\n","willReplaceOnChanges":true},"swap":{"type":"integer","description":"The amount of disk space in megabytes to use. If\nunspecified, the default is 0. Changing this creates a new flavor.\n","willReplaceOnChanges":true},"vcpus":{"type":"integer","description":"The number of virtual CPUs to use. Changing this creates\na new flavor.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:compute/flavorAccess:FlavorAccess":{"description":"Manages a project access for flavor V2 resource within OpenStack.\n\n\u003e **Note:** You _must_ have admin privileges in your OpenStack cloud to use\nthis resource.\n\n---\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst project1 = new openstack.identity.Project(\"project_1\", {name: \"my-project\"});\nconst flavor1 = new openstack.compute.Flavor(\"flavor_1\", {\n    name: \"my-flavor\",\n    ram: 8096,\n    vcpus: 2,\n    disk: 20,\n    isPublic: false,\n});\nconst access1 = new openstack.compute.FlavorAccess(\"access_1\", {\n    tenantId: project1.id,\n    flavorId: flavor1.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nproject1 = openstack.identity.Project(\"project_1\", name=\"my-project\")\nflavor1 = openstack.compute.Flavor(\"flavor_1\",\n    name=\"my-flavor\",\n    ram=8096,\n    vcpus=2,\n    disk=20,\n    is_public=False)\naccess1 = openstack.compute.FlavorAccess(\"access_1\",\n    tenant_id=project1.id,\n    flavor_id=flavor1.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var project1 = new OpenStack.Identity.Project(\"project_1\", new()\n    {\n        Name = \"my-project\",\n    });\n\n    var flavor1 = new OpenStack.Compute.Flavor(\"flavor_1\", new()\n    {\n        Name = \"my-flavor\",\n        Ram = 8096,\n        Vcpus = 2,\n        Disk = 20,\n        IsPublic = false,\n    });\n\n    var access1 = new OpenStack.Compute.FlavorAccess(\"access_1\", new()\n    {\n        TenantId = project1.Id,\n        FlavorId = flavor1.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/compute\"\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/identity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject1, err := identity.NewProject(ctx, \"project_1\", \u0026identity.ProjectArgs{\n\t\t\tName: pulumi.String(\"my-project\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tflavor1, err := compute.NewFlavor(ctx, \"flavor_1\", \u0026compute.FlavorArgs{\n\t\t\tName:     pulumi.String(\"my-flavor\"),\n\t\t\tRam:      pulumi.Int(8096),\n\t\t\tVcpus:    pulumi.Int(2),\n\t\t\tDisk:     pulumi.Int(20),\n\t\t\tIsPublic: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewFlavorAccess(ctx, \"access_1\", \u0026compute.FlavorAccessArgs{\n\t\t\tTenantId: project1.ID(),\n\t\t\tFlavorId: flavor1.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.openstack.identity.Project;\nimport com.pulumi.openstack.identity.ProjectArgs;\nimport com.pulumi.openstack.compute.Flavor;\nimport com.pulumi.openstack.compute.FlavorArgs;\nimport com.pulumi.openstack.compute.FlavorAccess;\nimport com.pulumi.openstack.compute.FlavorAccessArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 project1 = new Project(\"project1\", ProjectArgs.builder()\n            .name(\"my-project\")\n            .build());\n\n        var flavor1 = new Flavor(\"flavor1\", FlavorArgs.builder()\n            .name(\"my-flavor\")\n            .ram(8096)\n            .vcpus(2)\n            .disk(20)\n            .isPublic(false)\n            .build());\n\n        var access1 = new FlavorAccess(\"access1\", FlavorAccessArgs.builder()\n            .tenantId(project1.id())\n            .flavorId(flavor1.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  project1:\n    type: openstack:identity:Project\n    name: project_1\n    properties:\n      name: my-project\n  flavor1:\n    type: openstack:compute:Flavor\n    name: flavor_1\n    properties:\n      name: my-flavor\n      ram: '8096'\n      vcpus: '2'\n      disk: '20'\n      isPublic: false\n  access1:\n    type: openstack:compute:FlavorAccess\n    name: access_1\n    properties:\n      tenantId: ${project1.id}\n      flavorId: ${flavor1.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource can be imported by specifying all two arguments, separated\nby a forward slash:\n\n```sh\n$ pulumi import openstack:compute/flavorAccess:FlavorAccess access_1 flavor_id/tenant_id\n```\n","properties":{"flavorId":{"type":"string","description":"The UUID of flavor to use. Changing this creates a new flavor access.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Compute client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\nChanging this creates a new flavor access.\n"},"tenantId":{"type":"string","description":"The UUID of tenant which is allowed to use the flavor.\nChanging this creates a new flavor access.\n"}},"required":["flavorId","region","tenantId"],"inputProperties":{"flavorId":{"type":"string","description":"The UUID of flavor to use. Changing this creates a new flavor access.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Compute client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\nChanging this creates a new flavor access.\n","willReplaceOnChanges":true},"tenantId":{"type":"string","description":"The UUID of tenant which is allowed to use the flavor.\nChanging this creates a new flavor access.\n","willReplaceOnChanges":true}},"requiredInputs":["flavorId","tenantId"],"stateInputs":{"description":"Input properties used for looking up and filtering FlavorAccess resources.\n","properties":{"flavorId":{"type":"string","description":"The UUID of flavor to use. Changing this creates a new flavor access.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Compute client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\nChanging this creates a new flavor access.\n","willReplaceOnChanges":true},"tenantId":{"type":"string","description":"The UUID of tenant which is allowed to use the flavor.\nChanging this creates a new flavor access.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:compute/instance:Instance":{"properties":{"accessIpV4":{"type":"string","description":"The first detected Fixed IPv4 address.\n"},"accessIpV6":{"type":"string","description":"The first detected Fixed IPv6 address.\n"},"adminPass":{"type":"string","description":"The administrative password to assign to the server.\nChanging this changes the root password on the existing server.\n","secret":true},"allMetadata":{"type":"object","additionalProperties":{"type":"string"}},"allTags":{"type":"array","items":{"type":"string"},"description":"The collection of tags assigned on the instance, which have\nbeen explicitly and implicitly added.\n"},"availabilityZone":{"type":"string","description":"The availability zone in which to create\nthe server. Conflicts with \u003cspan pulumi-lang-nodejs=\"`availabilityZoneHints`\" pulumi-lang-dotnet=\"`AvailabilityZoneHints`\" pulumi-lang-go=\"`availabilityZoneHints`\" pulumi-lang-python=\"`availability_zone_hints`\" pulumi-lang-yaml=\"`availabilityZoneHints`\" pulumi-lang-java=\"`availabilityZoneHints`\"\u003e`availability_zone_hints`\u003c/span\u003e. Changing this creates\na new server.\n"},"availabilityZoneHints":{"type":"string","description":"The availability zone in which to\ncreate the server. This argument is preferred to \u003cspan pulumi-lang-nodejs=\"`availabilityZone`\" pulumi-lang-dotnet=\"`AvailabilityZone`\" pulumi-lang-go=\"`availabilityZone`\" pulumi-lang-python=\"`availability_zone`\" pulumi-lang-yaml=\"`availabilityZone`\" pulumi-lang-java=\"`availabilityZone`\"\u003e`availability_zone`\u003c/span\u003e, when\nscheduling the server on a\n[particular](https://docs.openstack.org/nova/latest/admin/availability-zones.html)\nhost or node. Conflicts with \u003cspan pulumi-lang-nodejs=\"`availabilityZone`\" pulumi-lang-dotnet=\"`AvailabilityZone`\" pulumi-lang-go=\"`availabilityZone`\" pulumi-lang-python=\"`availability_zone`\" pulumi-lang-yaml=\"`availabilityZone`\" pulumi-lang-java=\"`availabilityZone`\"\u003e`availability_zone`\u003c/span\u003e. Changing this creates a\nnew server.\n"},"blockDevices":{"type":"array","items":{"$ref":"#/types/openstack:compute/InstanceBlockDevice:InstanceBlockDevice"},"description":"Configuration of block devices. The\u003cspan pulumi-lang-nodejs=\" blockDevice\n\" pulumi-lang-dotnet=\" BlockDevice\n\" pulumi-lang-go=\" blockDevice\n\" pulumi-lang-python=\" block_device\n\" pulumi-lang-yaml=\" blockDevice\n\" pulumi-lang-java=\" blockDevice\n\"\u003e block_device\n\u003c/span\u003estructure is documented below. Changing this creates a new server.\nYou can specify multiple block devices which will create an instance with\nmultiple disks. This configuration is very flexible, so please see the\nfollowing [reference](https://docs.openstack.org/nova/latest/user/block-device-mapping.html)\nfor more information.\n"},"configDrive":{"type":"boolean","description":"Whether to use the\u003cspan pulumi-lang-nodejs=\" configDrive \" pulumi-lang-dotnet=\" ConfigDrive \" pulumi-lang-go=\" configDrive \" pulumi-lang-python=\" config_drive \" pulumi-lang-yaml=\" configDrive \" pulumi-lang-java=\" configDrive \"\u003e config_drive \u003c/span\u003efeature to\nconfigure the instance. Changing this creates a new server.\n"},"created":{"type":"string","description":"The creation time of the instance.\n"},"flavorId":{"type":"string","description":"The flavor ID of\nthe desired flavor for the server. Changing this resizes the existing server.\n"},"flavorName":{"type":"string","description":"The name of the\ndesired flavor for the server. Changing this resizes the existing server.\n"},"forceDelete":{"type":"boolean","description":"Whether to force the OpenStack instance to be\nforcefully deleted. This is useful for environments that have reclaim / soft\ndeletion enabled.\n"},"hypervisorHostname":{"type":"string","description":"Specifies the exact hypervisor hostname on\nwhich to create the instance. When provided, this parameter is included in\nthe request to Nova, directing the scheduler to launch the instance on the\nspecified host. Note: This option requires administrative privileges and a\nNova microversion of 2.74 or later. Conflicts with \u003cspan pulumi-lang-nodejs=\"`personality`\" pulumi-lang-dotnet=\"`Personality`\" pulumi-lang-go=\"`personality`\" pulumi-lang-python=\"`personality`\" pulumi-lang-yaml=\"`personality`\" pulumi-lang-java=\"`personality`\"\u003e`personality`\u003c/span\u003e. Changing\nthis value forces a new instance to be created.\n"},"imageId":{"type":"string","description":"(Optional; Required if \u003cspan pulumi-lang-nodejs=\"`imageName`\" pulumi-lang-dotnet=\"`ImageName`\" pulumi-lang-go=\"`imageName`\" pulumi-lang-python=\"`image_name`\" pulumi-lang-yaml=\"`imageName`\" pulumi-lang-java=\"`imageName`\"\u003e`image_name`\u003c/span\u003e is empty and not booting\nfrom a volume. Do not specify if booting from a volume.) The image ID of\nthe desired image for the server. Changing this rebuilds the existing\nserver.\n"},"imageName":{"type":"string","description":"(Optional; Required if \u003cspan pulumi-lang-nodejs=\"`imageId`\" pulumi-lang-dotnet=\"`ImageId`\" pulumi-lang-go=\"`imageId`\" pulumi-lang-python=\"`image_id`\" pulumi-lang-yaml=\"`imageId`\" pulumi-lang-java=\"`imageId`\"\u003e`image_id`\u003c/span\u003e is empty and not booting\nfrom a volume. Do not specify if booting from a volume.) The name of the\ndesired image for the server. Changing this rebuilds the existing server.\n"},"keyPair":{"type":"string","description":"The name of a key pair to put on the server. The key\npair must already be created and associated with the tenant's account.\nChanging this creates a new server.\n"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"Metadata key/value pairs to make available from\nwithin the instance. Changing this updates the existing server metadata.\n"},"name":{"type":"string","description":"A unique name for the resource.\n"},"networkMode":{"type":"string","description":"Special string for \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e option to create\nthe server. \u003cspan pulumi-lang-nodejs=\"`networkMode`\" pulumi-lang-dotnet=\"`NetworkMode`\" pulumi-lang-go=\"`networkMode`\" pulumi-lang-python=\"`network_mode`\" pulumi-lang-yaml=\"`networkMode`\" pulumi-lang-java=\"`networkMode`\"\u003e`network_mode`\u003c/span\u003e can be `\"auto\"` or `\"none\"`.\nPlease see the following [reference](https://docs.openstack.org/api-ref/compute/?expanded=create-server-detail#id11) for more information. Conflicts with \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e.\n"},"networks":{"type":"array","items":{"$ref":"#/types/openstack:compute/InstanceNetwork:InstanceNetwork"},"description":"An array of one or more networks to attach to the\ninstance. The network object structure is documented below. Changing this\ncreates a new server.\n"},"personalities":{"type":"array","items":{"$ref":"#/types/openstack:compute/InstancePersonality:InstancePersonality"},"description":"Customize the personality of an instance by\ndefining one or more files and their contents. The personality structure is\ndescribed below. Conflicts with \u003cspan pulumi-lang-nodejs=\"`hypervisorHostname`\" pulumi-lang-dotnet=\"`HypervisorHostname`\" pulumi-lang-go=\"`hypervisorHostname`\" pulumi-lang-python=\"`hypervisor_hostname`\" pulumi-lang-yaml=\"`hypervisorHostname`\" pulumi-lang-java=\"`hypervisorHostname`\"\u003e`hypervisor_hostname`\u003c/span\u003e. Changing this rebuilds\nthe existing server.\n"},"powerState":{"type":"string","description":"Provide the VM state. Only 'active', 'shutoff', 'paused'\nand 'shelved_offloaded' are supported values.\n*Note*: If the initial\u003cspan pulumi-lang-nodejs=\" powerState \" pulumi-lang-dotnet=\" PowerState \" pulumi-lang-go=\" powerState \" pulumi-lang-python=\" power_state \" pulumi-lang-yaml=\" powerState \" pulumi-lang-java=\" powerState \"\u003e power_state \u003c/span\u003eis the shutoff or paused\nthe VM will be stopped immediately after build and the provisioners like\nremote-exec or files are not supported.\n"},"region":{"type":"string","description":"The region in which to create the server instance. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new server.\n"},"schedulerHints":{"type":"array","items":{"$ref":"#/types/openstack:compute/InstanceSchedulerHint:InstanceSchedulerHint"},"description":"Provide the Nova scheduler with hints on how\nthe instance should be launched. The available hints are described below.\n"},"securityGroups":{"type":"array","items":{"type":"string"},"description":"An array of one or more security group names\nto associate with the server. Changing this results in adding/removing\nsecurity groups from the existing server. *Note*: When attaching the\ninstance to networks using Ports, place the security groups on the Port\nand not the instance. *Note*: Names should be used and not ids, as ids\ntrigger unnecessary updates.\n"},"stopBeforeDestroy":{"type":"boolean","description":"Whether to try stop instance gracefully\nbefore destroying it, thus giving chance for guest OS daemons to stop correctly.\nIf instance doesn't stop within timeout, it will be destroyed anyway.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A set of string tags for the instance. Changing this\nupdates the existing instance tags.\n"},"updated":{"type":"string","description":"The time when the instance was last updated.\n"},"userData":{"type":"string","description":"The user data to provide when launching the instance.\nChanging this creates a new server.\n"},"vendorOptions":{"$ref":"#/types/openstack:compute/InstanceVendorOptions:InstanceVendorOptions","description":"Map of additional vendor-specific options.\nSupported options are described below.\n"}},"required":["accessIpV4","accessIpV6","allMetadata","allTags","availabilityZone","created","flavorId","flavorName","hypervisorHostname","imageId","imageName","name","networks","region","securityGroups","updated"],"inputProperties":{"adminPass":{"type":"string","description":"The administrative password to assign to the server.\nChanging this changes the root password on the existing server.\n","secret":true},"availabilityZone":{"type":"string","description":"The availability zone in which to create\nthe server. Conflicts with \u003cspan pulumi-lang-nodejs=\"`availabilityZoneHints`\" pulumi-lang-dotnet=\"`AvailabilityZoneHints`\" pulumi-lang-go=\"`availabilityZoneHints`\" pulumi-lang-python=\"`availability_zone_hints`\" pulumi-lang-yaml=\"`availabilityZoneHints`\" pulumi-lang-java=\"`availabilityZoneHints`\"\u003e`availability_zone_hints`\u003c/span\u003e. Changing this creates\na new server.\n","willReplaceOnChanges":true},"availabilityZoneHints":{"type":"string","description":"The availability zone in which to\ncreate the server. This argument is preferred to \u003cspan pulumi-lang-nodejs=\"`availabilityZone`\" pulumi-lang-dotnet=\"`AvailabilityZone`\" pulumi-lang-go=\"`availabilityZone`\" pulumi-lang-python=\"`availability_zone`\" pulumi-lang-yaml=\"`availabilityZone`\" pulumi-lang-java=\"`availabilityZone`\"\u003e`availability_zone`\u003c/span\u003e, when\nscheduling the server on a\n[particular](https://docs.openstack.org/nova/latest/admin/availability-zones.html)\nhost or node. Conflicts with \u003cspan pulumi-lang-nodejs=\"`availabilityZone`\" pulumi-lang-dotnet=\"`AvailabilityZone`\" pulumi-lang-go=\"`availabilityZone`\" pulumi-lang-python=\"`availability_zone`\" pulumi-lang-yaml=\"`availabilityZone`\" pulumi-lang-java=\"`availabilityZone`\"\u003e`availability_zone`\u003c/span\u003e. Changing this creates a\nnew server.\n","willReplaceOnChanges":true},"blockDevices":{"type":"array","items":{"$ref":"#/types/openstack:compute/InstanceBlockDevice:InstanceBlockDevice"},"description":"Configuration of block devices. The\u003cspan pulumi-lang-nodejs=\" blockDevice\n\" pulumi-lang-dotnet=\" BlockDevice\n\" pulumi-lang-go=\" blockDevice\n\" pulumi-lang-python=\" block_device\n\" pulumi-lang-yaml=\" blockDevice\n\" pulumi-lang-java=\" blockDevice\n\"\u003e block_device\n\u003c/span\u003estructure is documented below. Changing this creates a new server.\nYou can specify multiple block devices which will create an instance with\nmultiple disks. This configuration is very flexible, so please see the\nfollowing [reference](https://docs.openstack.org/nova/latest/user/block-device-mapping.html)\nfor more information.\n"},"configDrive":{"type":"boolean","description":"Whether to use the\u003cspan pulumi-lang-nodejs=\" configDrive \" pulumi-lang-dotnet=\" ConfigDrive \" pulumi-lang-go=\" configDrive \" pulumi-lang-python=\" config_drive \" pulumi-lang-yaml=\" configDrive \" pulumi-lang-java=\" configDrive \"\u003e config_drive \u003c/span\u003efeature to\nconfigure the instance. Changing this creates a new server.\n","willReplaceOnChanges":true},"flavorId":{"type":"string","description":"The flavor ID of\nthe desired flavor for the server. Changing this resizes the existing server.\n"},"flavorName":{"type":"string","description":"The name of the\ndesired flavor for the server. Changing this resizes the existing server.\n"},"forceDelete":{"type":"boolean","description":"Whether to force the OpenStack instance to be\nforcefully deleted. This is useful for environments that have reclaim / soft\ndeletion enabled.\n"},"hypervisorHostname":{"type":"string","description":"Specifies the exact hypervisor hostname on\nwhich to create the instance. When provided, this parameter is included in\nthe request to Nova, directing the scheduler to launch the instance on the\nspecified host. Note: This option requires administrative privileges and a\nNova microversion of 2.74 or later. Conflicts with \u003cspan pulumi-lang-nodejs=\"`personality`\" pulumi-lang-dotnet=\"`Personality`\" pulumi-lang-go=\"`personality`\" pulumi-lang-python=\"`personality`\" pulumi-lang-yaml=\"`personality`\" pulumi-lang-java=\"`personality`\"\u003e`personality`\u003c/span\u003e. Changing\nthis value forces a new instance to be created.\n","willReplaceOnChanges":true},"imageId":{"type":"string","description":"(Optional; Required if \u003cspan pulumi-lang-nodejs=\"`imageName`\" pulumi-lang-dotnet=\"`ImageName`\" pulumi-lang-go=\"`imageName`\" pulumi-lang-python=\"`image_name`\" pulumi-lang-yaml=\"`imageName`\" pulumi-lang-java=\"`imageName`\"\u003e`image_name`\u003c/span\u003e is empty and not booting\nfrom a volume. Do not specify if booting from a volume.) The image ID of\nthe desired image for the server. Changing this rebuilds the existing\nserver.\n"},"imageName":{"type":"string","description":"(Optional; Required if \u003cspan pulumi-lang-nodejs=\"`imageId`\" pulumi-lang-dotnet=\"`ImageId`\" pulumi-lang-go=\"`imageId`\" pulumi-lang-python=\"`image_id`\" pulumi-lang-yaml=\"`imageId`\" pulumi-lang-java=\"`imageId`\"\u003e`image_id`\u003c/span\u003e is empty and not booting\nfrom a volume. Do not specify if booting from a volume.) The name of the\ndesired image for the server. Changing this rebuilds the existing server.\n"},"keyPair":{"type":"string","description":"The name of a key pair to put on the server. The key\npair must already be created and associated with the tenant's account.\nChanging this creates a new server.\n","willReplaceOnChanges":true},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"Metadata key/value pairs to make available from\nwithin the instance. Changing this updates the existing server metadata.\n"},"name":{"type":"string","description":"A unique name for the resource.\n"},"networkMode":{"type":"string","description":"Special string for \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e option to create\nthe server. \u003cspan pulumi-lang-nodejs=\"`networkMode`\" pulumi-lang-dotnet=\"`NetworkMode`\" pulumi-lang-go=\"`networkMode`\" pulumi-lang-python=\"`network_mode`\" pulumi-lang-yaml=\"`networkMode`\" pulumi-lang-java=\"`networkMode`\"\u003e`network_mode`\u003c/span\u003e can be `\"auto\"` or `\"none\"`.\nPlease see the following [reference](https://docs.openstack.org/api-ref/compute/?expanded=create-server-detail#id11) for more information. Conflicts with \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e.\n","willReplaceOnChanges":true},"networks":{"type":"array","items":{"$ref":"#/types/openstack:compute/InstanceNetwork:InstanceNetwork"},"description":"An array of one or more networks to attach to the\ninstance. The network object structure is documented below. Changing this\ncreates a new server.\n","willReplaceOnChanges":true},"personalities":{"type":"array","items":{"$ref":"#/types/openstack:compute/InstancePersonality:InstancePersonality"},"description":"Customize the personality of an instance by\ndefining one or more files and their contents. The personality structure is\ndescribed below. Conflicts with \u003cspan pulumi-lang-nodejs=\"`hypervisorHostname`\" pulumi-lang-dotnet=\"`HypervisorHostname`\" pulumi-lang-go=\"`hypervisorHostname`\" pulumi-lang-python=\"`hypervisor_hostname`\" pulumi-lang-yaml=\"`hypervisorHostname`\" pulumi-lang-java=\"`hypervisorHostname`\"\u003e`hypervisor_hostname`\u003c/span\u003e. Changing this rebuilds\nthe existing server.\n"},"powerState":{"type":"string","description":"Provide the VM state. Only 'active', 'shutoff', 'paused'\nand 'shelved_offloaded' are supported values.\n*Note*: If the initial\u003cspan pulumi-lang-nodejs=\" powerState \" pulumi-lang-dotnet=\" PowerState \" pulumi-lang-go=\" powerState \" pulumi-lang-python=\" power_state \" pulumi-lang-yaml=\" powerState \" pulumi-lang-java=\" powerState \"\u003e power_state \u003c/span\u003eis the shutoff or paused\nthe VM will be stopped immediately after build and the provisioners like\nremote-exec or files are not supported.\n"},"region":{"type":"string","description":"The region in which to create the server instance. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new server.\n","willReplaceOnChanges":true},"schedulerHints":{"type":"array","items":{"$ref":"#/types/openstack:compute/InstanceSchedulerHint:InstanceSchedulerHint"},"description":"Provide the Nova scheduler with hints on how\nthe instance should be launched. The available hints are described below.\n"},"securityGroups":{"type":"array","items":{"type":"string"},"description":"An array of one or more security group names\nto associate with the server. Changing this results in adding/removing\nsecurity groups from the existing server. *Note*: When attaching the\ninstance to networks using Ports, place the security groups on the Port\nand not the instance. *Note*: Names should be used and not ids, as ids\ntrigger unnecessary updates.\n"},"stopBeforeDestroy":{"type":"boolean","description":"Whether to try stop instance gracefully\nbefore destroying it, thus giving chance for guest OS daemons to stop correctly.\nIf instance doesn't stop within timeout, it will be destroyed anyway.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A set of string tags for the instance. Changing this\nupdates the existing instance tags.\n"},"userData":{"type":"string","description":"The user data to provide when launching the instance.\nChanging this creates a new server.\n","willReplaceOnChanges":true},"vendorOptions":{"$ref":"#/types/openstack:compute/InstanceVendorOptions:InstanceVendorOptions","description":"Map of additional vendor-specific options.\nSupported options are described below.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering Instance resources.\n","properties":{"accessIpV4":{"type":"string","description":"The first detected Fixed IPv4 address.\n"},"accessIpV6":{"type":"string","description":"The first detected Fixed IPv6 address.\n"},"adminPass":{"type":"string","description":"The administrative password to assign to the server.\nChanging this changes the root password on the existing server.\n","secret":true},"allMetadata":{"type":"object","additionalProperties":{"type":"string"}},"allTags":{"type":"array","items":{"type":"string"},"description":"The collection of tags assigned on the instance, which have\nbeen explicitly and implicitly added.\n"},"availabilityZone":{"type":"string","description":"The availability zone in which to create\nthe server. Conflicts with \u003cspan pulumi-lang-nodejs=\"`availabilityZoneHints`\" pulumi-lang-dotnet=\"`AvailabilityZoneHints`\" pulumi-lang-go=\"`availabilityZoneHints`\" pulumi-lang-python=\"`availability_zone_hints`\" pulumi-lang-yaml=\"`availabilityZoneHints`\" pulumi-lang-java=\"`availabilityZoneHints`\"\u003e`availability_zone_hints`\u003c/span\u003e. Changing this creates\na new server.\n","willReplaceOnChanges":true},"availabilityZoneHints":{"type":"string","description":"The availability zone in which to\ncreate the server. This argument is preferred to \u003cspan pulumi-lang-nodejs=\"`availabilityZone`\" pulumi-lang-dotnet=\"`AvailabilityZone`\" pulumi-lang-go=\"`availabilityZone`\" pulumi-lang-python=\"`availability_zone`\" pulumi-lang-yaml=\"`availabilityZone`\" pulumi-lang-java=\"`availabilityZone`\"\u003e`availability_zone`\u003c/span\u003e, when\nscheduling the server on a\n[particular](https://docs.openstack.org/nova/latest/admin/availability-zones.html)\nhost or node. Conflicts with \u003cspan pulumi-lang-nodejs=\"`availabilityZone`\" pulumi-lang-dotnet=\"`AvailabilityZone`\" pulumi-lang-go=\"`availabilityZone`\" pulumi-lang-python=\"`availability_zone`\" pulumi-lang-yaml=\"`availabilityZone`\" pulumi-lang-java=\"`availabilityZone`\"\u003e`availability_zone`\u003c/span\u003e. Changing this creates a\nnew server.\n","willReplaceOnChanges":true},"blockDevices":{"type":"array","items":{"$ref":"#/types/openstack:compute/InstanceBlockDevice:InstanceBlockDevice"},"description":"Configuration of block devices. The\u003cspan pulumi-lang-nodejs=\" blockDevice\n\" pulumi-lang-dotnet=\" BlockDevice\n\" pulumi-lang-go=\" blockDevice\n\" pulumi-lang-python=\" block_device\n\" pulumi-lang-yaml=\" blockDevice\n\" pulumi-lang-java=\" blockDevice\n\"\u003e block_device\n\u003c/span\u003estructure is documented below. Changing this creates a new server.\nYou can specify multiple block devices which will create an instance with\nmultiple disks. This configuration is very flexible, so please see the\nfollowing [reference](https://docs.openstack.org/nova/latest/user/block-device-mapping.html)\nfor more information.\n"},"configDrive":{"type":"boolean","description":"Whether to use the\u003cspan pulumi-lang-nodejs=\" configDrive \" pulumi-lang-dotnet=\" ConfigDrive \" pulumi-lang-go=\" configDrive \" pulumi-lang-python=\" config_drive \" pulumi-lang-yaml=\" configDrive \" pulumi-lang-java=\" configDrive \"\u003e config_drive \u003c/span\u003efeature to\nconfigure the instance. Changing this creates a new server.\n","willReplaceOnChanges":true},"created":{"type":"string","description":"The creation time of the instance.\n"},"flavorId":{"type":"string","description":"The flavor ID of\nthe desired flavor for the server. Changing this resizes the existing server.\n"},"flavorName":{"type":"string","description":"The name of the\ndesired flavor for the server. Changing this resizes the existing server.\n"},"forceDelete":{"type":"boolean","description":"Whether to force the OpenStack instance to be\nforcefully deleted. This is useful for environments that have reclaim / soft\ndeletion enabled.\n"},"hypervisorHostname":{"type":"string","description":"Specifies the exact hypervisor hostname on\nwhich to create the instance. When provided, this parameter is included in\nthe request to Nova, directing the scheduler to launch the instance on the\nspecified host. Note: This option requires administrative privileges and a\nNova microversion of 2.74 or later. Conflicts with \u003cspan pulumi-lang-nodejs=\"`personality`\" pulumi-lang-dotnet=\"`Personality`\" pulumi-lang-go=\"`personality`\" pulumi-lang-python=\"`personality`\" pulumi-lang-yaml=\"`personality`\" pulumi-lang-java=\"`personality`\"\u003e`personality`\u003c/span\u003e. Changing\nthis value forces a new instance to be created.\n","willReplaceOnChanges":true},"imageId":{"type":"string","description":"(Optional; Required if \u003cspan pulumi-lang-nodejs=\"`imageName`\" pulumi-lang-dotnet=\"`ImageName`\" pulumi-lang-go=\"`imageName`\" pulumi-lang-python=\"`image_name`\" pulumi-lang-yaml=\"`imageName`\" pulumi-lang-java=\"`imageName`\"\u003e`image_name`\u003c/span\u003e is empty and not booting\nfrom a volume. Do not specify if booting from a volume.) The image ID of\nthe desired image for the server. Changing this rebuilds the existing\nserver.\n"},"imageName":{"type":"string","description":"(Optional; Required if \u003cspan pulumi-lang-nodejs=\"`imageId`\" pulumi-lang-dotnet=\"`ImageId`\" pulumi-lang-go=\"`imageId`\" pulumi-lang-python=\"`image_id`\" pulumi-lang-yaml=\"`imageId`\" pulumi-lang-java=\"`imageId`\"\u003e`image_id`\u003c/span\u003e is empty and not booting\nfrom a volume. Do not specify if booting from a volume.) The name of the\ndesired image for the server. Changing this rebuilds the existing server.\n"},"keyPair":{"type":"string","description":"The name of a key pair to put on the server. The key\npair must already be created and associated with the tenant's account.\nChanging this creates a new server.\n","willReplaceOnChanges":true},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"Metadata key/value pairs to make available from\nwithin the instance. Changing this updates the existing server metadata.\n"},"name":{"type":"string","description":"A unique name for the resource.\n"},"networkMode":{"type":"string","description":"Special string for \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e option to create\nthe server. \u003cspan pulumi-lang-nodejs=\"`networkMode`\" pulumi-lang-dotnet=\"`NetworkMode`\" pulumi-lang-go=\"`networkMode`\" pulumi-lang-python=\"`network_mode`\" pulumi-lang-yaml=\"`networkMode`\" pulumi-lang-java=\"`networkMode`\"\u003e`network_mode`\u003c/span\u003e can be `\"auto\"` or `\"none\"`.\nPlease see the following [reference](https://docs.openstack.org/api-ref/compute/?expanded=create-server-detail#id11) for more information. Conflicts with \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e.\n","willReplaceOnChanges":true},"networks":{"type":"array","items":{"$ref":"#/types/openstack:compute/InstanceNetwork:InstanceNetwork"},"description":"An array of one or more networks to attach to the\ninstance. The network object structure is documented below. Changing this\ncreates a new server.\n","willReplaceOnChanges":true},"personalities":{"type":"array","items":{"$ref":"#/types/openstack:compute/InstancePersonality:InstancePersonality"},"description":"Customize the personality of an instance by\ndefining one or more files and their contents. The personality structure is\ndescribed below. Conflicts with \u003cspan pulumi-lang-nodejs=\"`hypervisorHostname`\" pulumi-lang-dotnet=\"`HypervisorHostname`\" pulumi-lang-go=\"`hypervisorHostname`\" pulumi-lang-python=\"`hypervisor_hostname`\" pulumi-lang-yaml=\"`hypervisorHostname`\" pulumi-lang-java=\"`hypervisorHostname`\"\u003e`hypervisor_hostname`\u003c/span\u003e. Changing this rebuilds\nthe existing server.\n"},"powerState":{"type":"string","description":"Provide the VM state. Only 'active', 'shutoff', 'paused'\nand 'shelved_offloaded' are supported values.\n*Note*: If the initial\u003cspan pulumi-lang-nodejs=\" powerState \" pulumi-lang-dotnet=\" PowerState \" pulumi-lang-go=\" powerState \" pulumi-lang-python=\" power_state \" pulumi-lang-yaml=\" powerState \" pulumi-lang-java=\" powerState \"\u003e power_state \u003c/span\u003eis the shutoff or paused\nthe VM will be stopped immediately after build and the provisioners like\nremote-exec or files are not supported.\n"},"region":{"type":"string","description":"The region in which to create the server instance. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new server.\n","willReplaceOnChanges":true},"schedulerHints":{"type":"array","items":{"$ref":"#/types/openstack:compute/InstanceSchedulerHint:InstanceSchedulerHint"},"description":"Provide the Nova scheduler with hints on how\nthe instance should be launched. The available hints are described below.\n"},"securityGroups":{"type":"array","items":{"type":"string"},"description":"An array of one or more security group names\nto associate with the server. Changing this results in adding/removing\nsecurity groups from the existing server. *Note*: When attaching the\ninstance to networks using Ports, place the security groups on the Port\nand not the instance. *Note*: Names should be used and not ids, as ids\ntrigger unnecessary updates.\n"},"stopBeforeDestroy":{"type":"boolean","description":"Whether to try stop instance gracefully\nbefore destroying it, thus giving chance for guest OS daemons to stop correctly.\nIf instance doesn't stop within timeout, it will be destroyed anyway.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A set of string tags for the instance. Changing this\nupdates the existing instance tags.\n"},"updated":{"type":"string","description":"The time when the instance was last updated.\n"},"userData":{"type":"string","description":"The user data to provide when launching the instance.\nChanging this creates a new server.\n","willReplaceOnChanges":true},"vendorOptions":{"$ref":"#/types/openstack:compute/InstanceVendorOptions:InstanceVendorOptions","description":"Map of additional vendor-specific options.\nSupported options are described below.\n"}},"type":"object"}},"openstack:compute/interfaceAttach:InterfaceAttach":{"description":"Attaches a Network Interface (a Port) to an Instance using the OpenStack\nCompute (Nova) v2 API.\n\n## Example Usage\n\n### Basic Attachment\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst network1 = new openstack.networking.Network(\"network_1\", {\n    name: \"network_1\",\n    adminStateUp: true,\n});\nconst instance1 = new openstack.compute.Instance(\"instance_1\", {\n    name: \"instance_1\",\n    securityGroups: [\"default\"],\n});\nconst ai1 = new openstack.compute.InterfaceAttach(\"ai_1\", {\n    instanceId: instance1.id,\n    networkId: network1.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nnetwork1 = openstack.networking.Network(\"network_1\",\n    name=\"network_1\",\n    admin_state_up=True)\ninstance1 = openstack.compute.Instance(\"instance_1\",\n    name=\"instance_1\",\n    security_groups=[\"default\"])\nai1 = openstack.compute.InterfaceAttach(\"ai_1\",\n    instance_id=instance1.id,\n    network_id=network1.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var network1 = new OpenStack.Networking.Network(\"network_1\", new()\n    {\n        Name = \"network_1\",\n        AdminStateUp = true,\n    });\n\n    var instance1 = new OpenStack.Compute.Instance(\"instance_1\", new()\n    {\n        Name = \"instance_1\",\n        SecurityGroups = new[]\n        {\n            \"default\",\n        },\n    });\n\n    var ai1 = new OpenStack.Compute.InterfaceAttach(\"ai_1\", new()\n    {\n        InstanceId = instance1.Id,\n        NetworkId = network1.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/compute\"\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork1, err := networking.NewNetwork(ctx, \"network_1\", \u0026networking.NetworkArgs{\n\t\t\tName:         pulumi.String(\"network_1\"),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance1, err := compute.NewInstance(ctx, \"instance_1\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"instance_1\"),\n\t\t\tSecurityGroups: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"default\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInterfaceAttach(ctx, \"ai_1\", \u0026compute.InterfaceAttachArgs{\n\t\t\tInstanceId: instance1.ID(),\n\t\t\tNetworkId:  network1.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.openstack.networking.Network;\nimport com.pulumi.openstack.networking.NetworkArgs;\nimport com.pulumi.openstack.compute.Instance;\nimport com.pulumi.openstack.compute.InstanceArgs;\nimport com.pulumi.openstack.compute.InterfaceAttach;\nimport com.pulumi.openstack.compute.InterfaceAttachArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 network1 = new Network(\"network1\", NetworkArgs.builder()\n            .name(\"network_1\")\n            .adminStateUp(true)\n            .build());\n\n        var instance1 = new Instance(\"instance1\", InstanceArgs.builder()\n            .name(\"instance_1\")\n            .securityGroups(\"default\")\n            .build());\n\n        var ai1 = new InterfaceAttach(\"ai1\", InterfaceAttachArgs.builder()\n            .instanceId(instance1.id())\n            .networkId(network1.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  network1:\n    type: openstack:networking:Network\n    name: network_1\n    properties:\n      name: network_1\n      adminStateUp: 'true'\n  instance1:\n    type: openstack:compute:Instance\n    name: instance_1\n    properties:\n      name: instance_1\n      securityGroups:\n        - default\n  ai1:\n    type: openstack:compute:InterfaceAttach\n    name: ai_1\n    properties:\n      instanceId: ${instance1.id}\n      networkId: ${network1.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Attachment Specifying a Fixed IP\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst network1 = new openstack.networking.Network(\"network_1\", {\n    name: \"network_1\",\n    adminStateUp: true,\n});\nconst instance1 = new openstack.compute.Instance(\"instance_1\", {\n    name: \"instance_1\",\n    securityGroups: [\"default\"],\n});\nconst ai1 = new openstack.compute.InterfaceAttach(\"ai_1\", {\n    instanceId: instance1.id,\n    networkId: network1OpenstackNetworkingPortV2.id,\n    fixedIp: \"10.0.10.10\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nnetwork1 = openstack.networking.Network(\"network_1\",\n    name=\"network_1\",\n    admin_state_up=True)\ninstance1 = openstack.compute.Instance(\"instance_1\",\n    name=\"instance_1\",\n    security_groups=[\"default\"])\nai1 = openstack.compute.InterfaceAttach(\"ai_1\",\n    instance_id=instance1.id,\n    network_id=network1_openstack_networking_port_v2[\"id\"],\n    fixed_ip=\"10.0.10.10\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var network1 = new OpenStack.Networking.Network(\"network_1\", new()\n    {\n        Name = \"network_1\",\n        AdminStateUp = true,\n    });\n\n    var instance1 = new OpenStack.Compute.Instance(\"instance_1\", new()\n    {\n        Name = \"instance_1\",\n        SecurityGroups = new[]\n        {\n            \"default\",\n        },\n    });\n\n    var ai1 = new OpenStack.Compute.InterfaceAttach(\"ai_1\", new()\n    {\n        InstanceId = instance1.Id,\n        NetworkId = network1OpenstackNetworkingPortV2.Id,\n        FixedIp = \"10.0.10.10\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/compute\"\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networking.NewNetwork(ctx, \"network_1\", \u0026networking.NetworkArgs{\n\t\t\tName:         pulumi.String(\"network_1\"),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance1, err := compute.NewInstance(ctx, \"instance_1\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"instance_1\"),\n\t\t\tSecurityGroups: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"default\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInterfaceAttach(ctx, \"ai_1\", \u0026compute.InterfaceAttachArgs{\n\t\t\tInstanceId: instance1.ID(),\n\t\t\tNetworkId:  pulumi.Any(network1OpenstackNetworkingPortV2.Id),\n\t\t\tFixedIp:    pulumi.String(\"10.0.10.10\"),\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.openstack.networking.Network;\nimport com.pulumi.openstack.networking.NetworkArgs;\nimport com.pulumi.openstack.compute.Instance;\nimport com.pulumi.openstack.compute.InstanceArgs;\nimport com.pulumi.openstack.compute.InterfaceAttach;\nimport com.pulumi.openstack.compute.InterfaceAttachArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 network1 = new Network(\"network1\", NetworkArgs.builder()\n            .name(\"network_1\")\n            .adminStateUp(true)\n            .build());\n\n        var instance1 = new Instance(\"instance1\", InstanceArgs.builder()\n            .name(\"instance_1\")\n            .securityGroups(\"default\")\n            .build());\n\n        var ai1 = new InterfaceAttach(\"ai1\", InterfaceAttachArgs.builder()\n            .instanceId(instance1.id())\n            .networkId(network1OpenstackNetworkingPortV2.id())\n            .fixedIp(\"10.0.10.10\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  network1:\n    type: openstack:networking:Network\n    name: network_1\n    properties:\n      name: network_1\n      adminStateUp: 'true'\n  instance1:\n    type: openstack:compute:Instance\n    name: instance_1\n    properties:\n      name: instance_1\n      securityGroups:\n        - default\n  ai1:\n    type: openstack:compute:InterfaceAttach\n    name: ai_1\n    properties:\n      instanceId: ${instance1.id}\n      networkId: ${network1OpenstackNetworkingPortV2.id}\n      fixedIp: 10.0.10.10\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Attachment Using an Existing Port\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst network1 = new openstack.networking.Network(\"network_1\", {\n    name: \"network_1\",\n    adminStateUp: true,\n});\nconst port1 = new openstack.networking.Port(\"port_1\", {\n    name: \"port_1\",\n    networkId: network1.id,\n    adminStateUp: true,\n});\nconst instance1 = new openstack.compute.Instance(\"instance_1\", {\n    name: \"instance_1\",\n    securityGroups: [\"default\"],\n});\nconst ai1 = new openstack.compute.InterfaceAttach(\"ai_1\", {\n    instanceId: instance1.id,\n    portId: port1.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nnetwork1 = openstack.networking.Network(\"network_1\",\n    name=\"network_1\",\n    admin_state_up=True)\nport1 = openstack.networking.Port(\"port_1\",\n    name=\"port_1\",\n    network_id=network1.id,\n    admin_state_up=True)\ninstance1 = openstack.compute.Instance(\"instance_1\",\n    name=\"instance_1\",\n    security_groups=[\"default\"])\nai1 = openstack.compute.InterfaceAttach(\"ai_1\",\n    instance_id=instance1.id,\n    port_id=port1.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var network1 = new OpenStack.Networking.Network(\"network_1\", new()\n    {\n        Name = \"network_1\",\n        AdminStateUp = true,\n    });\n\n    var port1 = new OpenStack.Networking.Port(\"port_1\", new()\n    {\n        Name = \"port_1\",\n        NetworkId = network1.Id,\n        AdminStateUp = true,\n    });\n\n    var instance1 = new OpenStack.Compute.Instance(\"instance_1\", new()\n    {\n        Name = \"instance_1\",\n        SecurityGroups = new[]\n        {\n            \"default\",\n        },\n    });\n\n    var ai1 = new OpenStack.Compute.InterfaceAttach(\"ai_1\", new()\n    {\n        InstanceId = instance1.Id,\n        PortId = port1.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/compute\"\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork1, err := networking.NewNetwork(ctx, \"network_1\", \u0026networking.NetworkArgs{\n\t\t\tName:         pulumi.String(\"network_1\"),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tport1, err := networking.NewPort(ctx, \"port_1\", \u0026networking.PortArgs{\n\t\t\tName:         pulumi.String(\"port_1\"),\n\t\t\tNetworkId:    network1.ID(),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance1, err := compute.NewInstance(ctx, \"instance_1\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"instance_1\"),\n\t\t\tSecurityGroups: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"default\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInterfaceAttach(ctx, \"ai_1\", \u0026compute.InterfaceAttachArgs{\n\t\t\tInstanceId: instance1.ID(),\n\t\t\tPortId:     port1.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.openstack.networking.Network;\nimport com.pulumi.openstack.networking.NetworkArgs;\nimport com.pulumi.openstack.networking.Port;\nimport com.pulumi.openstack.networking.PortArgs;\nimport com.pulumi.openstack.compute.Instance;\nimport com.pulumi.openstack.compute.InstanceArgs;\nimport com.pulumi.openstack.compute.InterfaceAttach;\nimport com.pulumi.openstack.compute.InterfaceAttachArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 network1 = new Network(\"network1\", NetworkArgs.builder()\n            .name(\"network_1\")\n            .adminStateUp(true)\n            .build());\n\n        var port1 = new Port(\"port1\", PortArgs.builder()\n            .name(\"port_1\")\n            .networkId(network1.id())\n            .adminStateUp(true)\n            .build());\n\n        var instance1 = new Instance(\"instance1\", InstanceArgs.builder()\n            .name(\"instance_1\")\n            .securityGroups(\"default\")\n            .build());\n\n        var ai1 = new InterfaceAttach(\"ai1\", InterfaceAttachArgs.builder()\n            .instanceId(instance1.id())\n            .portId(port1.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  network1:\n    type: openstack:networking:Network\n    name: network_1\n    properties:\n      name: network_1\n      adminStateUp: 'true'\n  port1:\n    type: openstack:networking:Port\n    name: port_1\n    properties:\n      name: port_1\n      networkId: ${network1.id}\n      adminStateUp: 'true'\n  instance1:\n    type: openstack:compute:Instance\n    name: instance_1\n    properties:\n      name: instance_1\n      securityGroups:\n        - default\n  ai1:\n    type: openstack:compute:InterfaceAttach\n    name: ai_1\n    properties:\n      instanceId: ${instance1.id}\n      portId: ${port1.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Attaching Multiple Interfaces\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\nimport * as std from \"@pulumi/std\";\n\nconst network1 = new openstack.networking.Network(\"network_1\", {\n    name: \"network_1\",\n    adminStateUp: true,\n});\nconst ports: openstack.networking.Port[] = [];\nfor (const range = {value: 0}; range.value \u003c 2; range.value++) {\n    ports.push(new openstack.networking.Port(`ports-${range.value}`, {\n        name: std.format({\n            input: \"port-%02d\",\n            args: [range.value + 1],\n        }).then(invoke =\u003e invoke.result),\n        networkId: network1.id,\n        adminStateUp: true,\n    }));\n}\nconst instance1 = new openstack.compute.Instance(\"instance_1\", {\n    name: \"instance_1\",\n    securityGroups: [\"default\"],\n});\nconst attachments: openstack.compute.InterfaceAttach[] = [];\nfor (const range = {value: 0}; range.value \u003c 2; range.value++) {\n    attachments.push(new openstack.compute.InterfaceAttach(`attachments-${range.value}`, {\n        portId: ports[range.value].id,\n        instanceId: instance1.id,\n    }));\n}\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\nimport pulumi_std as std\n\nnetwork1 = openstack.networking.Network(\"network_1\",\n    name=\"network_1\",\n    admin_state_up=True)\nports = []\nfor range in [{\"value\": i} for i in range(0, 2)]:\n    ports.append(openstack.networking.Port(f\"ports-{range['value']}\",\n        name=std.format(input=\"port-%02d\",\n            args=[range[\"value\"] + 1]).result,\n        network_id=network1.id,\n        admin_state_up=True))\ninstance1 = openstack.compute.Instance(\"instance_1\",\n    name=\"instance_1\",\n    security_groups=[\"default\"])\nattachments = []\nfor range in [{\"value\": i} for i in range(0, 2)]:\n    attachments.append(openstack.compute.InterfaceAttach(f\"attachments-{range['value']}\",\n        port_id=ports[range[\"value\"]].id,\n        instance_id=instance1.id))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var network1 = new OpenStack.Networking.Network(\"network_1\", new()\n    {\n        Name = \"network_1\",\n        AdminStateUp = true,\n    });\n\n    var ports = new List\u003cOpenStack.Networking.Port\u003e();\n    for (var rangeIndex = 0; rangeIndex \u003c 2; rangeIndex++)\n    {\n        var range = new { Value = rangeIndex };\n        ports.Add(new OpenStack.Networking.Port($\"ports-{range.Value}\", new()\n        {\n            Name = Std.Format.Invoke(new()\n            {\n                Input = \"port-%02d\",\n                Args = new[]\n                {\n                    range.Value + 1,\n                },\n            }).Apply(invoke =\u003e invoke.Result),\n            NetworkId = network1.Id,\n            AdminStateUp = true,\n        }));\n    }\n    var instance1 = new OpenStack.Compute.Instance(\"instance_1\", new()\n    {\n        Name = \"instance_1\",\n        SecurityGroups = new[]\n        {\n            \"default\",\n        },\n    });\n\n    var attachments = new List\u003cOpenStack.Compute.InterfaceAttach\u003e();\n    for (var rangeIndex = 0; rangeIndex \u003c 2; rangeIndex++)\n    {\n        var range = new { Value = rangeIndex };\n        attachments.Add(new OpenStack.Compute.InterfaceAttach($\"attachments-{range.Value}\", new()\n        {\n            PortId = ports[range.Value].Id,\n            InstanceId = instance1.Id,\n        }));\n    }\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/compute\"\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork1, err := networking.NewNetwork(ctx, \"network_1\", \u0026networking.NetworkArgs{\n\t\t\tName:         pulumi.String(\"network_1\"),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFormat, err := std.Format(ctx, \u0026std.FormatArgs{\n\t\t\tInput: \"port-%02d\",\n\t\t\tArgs: []float64{\n\t\t\t\tval0 + 1,\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvar ports []*networking.Port\n\t\tfor index := 0; index \u003c 2; index++ {\n\t\t\tkey0 := index\n\t\t\t_ := index\n\t\t\t__res, err := networking.NewPort(ctx, fmt.Sprintf(\"ports-%v\", key0), \u0026networking.PortArgs{\n\t\t\t\tName:         pulumi.String(invokeFormat.Result),\n\t\t\t\tNetworkId:    network1.ID(),\n\t\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tports = append(ports, __res)\n\t\t}\n\t\tinstance1, err := compute.NewInstance(ctx, \"instance_1\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"instance_1\"),\n\t\t\tSecurityGroups: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"default\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvar attachments []*compute.InterfaceAttach\n\t\tfor index := 0; index \u003c 2; index++ {\n\t\t\tkey0 := index\n\t\t\tval0 := index\n\t\t\t__res, err := compute.NewInterfaceAttach(ctx, fmt.Sprintf(\"attachments-%v\", key0), \u0026compute.InterfaceAttachArgs{\n\t\t\t\tPortId:     ports[val0].ID(),\n\t\t\t\tInstanceId: instance1.ID(),\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tattachments = append(attachments, __res)\n\t\t}\n\t\treturn nil\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.openstack.networking.Network;\nimport com.pulumi.openstack.networking.NetworkArgs;\nimport com.pulumi.openstack.networking.Port;\nimport com.pulumi.openstack.networking.PortArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FormatArgs;\nimport com.pulumi.openstack.compute.Instance;\nimport com.pulumi.openstack.compute.InstanceArgs;\nimport com.pulumi.openstack.compute.InterfaceAttach;\nimport com.pulumi.openstack.compute.InterfaceAttachArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 network1 = new Network(\"network1\", NetworkArgs.builder()\n            .name(\"network_1\")\n            .adminStateUp(true)\n            .build());\n\n        for (var i = 0; i \u003c 2; i++) {\n            new Port(\"ports-\" + i, PortArgs.builder()\n                .name(StdFunctions.format(FormatArgs.builder()\n                    .input(\"port-%02d\")\n                    .args(range.value() + 1)\n                    .build()).result())\n                .networkId(network1.id())\n                .adminStateUp(true)\n                .build());\n\n        \n}\n        var instance1 = new Instance(\"instance1\", InstanceArgs.builder()\n            .name(\"instance_1\")\n            .securityGroups(\"default\")\n            .build());\n\n        for (var i = 0; i \u003c 2; i++) {\n            new InterfaceAttach(\"attachments-\" + i, InterfaceAttachArgs.builder()\n                .portId(ports[range.value()].id())\n                .instanceId(instance1.id())\n                .build());\n\n        \n}\n    }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nNote that the above example will not guarantee that the ports are attached in\na deterministic manner. The ports will be attached in a seemingly random\norder.\n\nIf you want to ensure that the ports are attached in a given order, create\nexplicit dependencies between the ports, such as:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\nimport * as std from \"@pulumi/std\";\n\nconst network1 = new openstack.networking.Network(\"network_1\", {\n    name: \"network_1\",\n    adminStateUp: true,\n});\nconst ports: openstack.networking.Port[] = [];\nfor (const range = {value: 0}; range.value \u003c 2; range.value++) {\n    ports.push(new openstack.networking.Port(`ports-${range.value}`, {\n        name: std.format({\n            input: \"port-%02d\",\n            args: [range.value + 1],\n        }).then(invoke =\u003e invoke.result),\n        networkId: network1.id,\n        adminStateUp: true,\n    }));\n}\nconst instance1 = new openstack.compute.Instance(\"instance_1\", {\n    name: \"instance_1\",\n    securityGroups: [\"default\"],\n});\nconst ai1 = new openstack.compute.InterfaceAttach(\"ai_1\", {\n    instanceId: instance1.id,\n    portId: ports[0].id,\n});\nconst ai2 = new openstack.compute.InterfaceAttach(\"ai_2\", {\n    instanceId: instance1.id,\n    portId: ports[1].id,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\nimport pulumi_std as std\n\nnetwork1 = openstack.networking.Network(\"network_1\",\n    name=\"network_1\",\n    admin_state_up=True)\nports = []\nfor range in [{\"value\": i} for i in range(0, 2)]:\n    ports.append(openstack.networking.Port(f\"ports-{range['value']}\",\n        name=std.format(input=\"port-%02d\",\n            args=[range[\"value\"] + 1]).result,\n        network_id=network1.id,\n        admin_state_up=True))\ninstance1 = openstack.compute.Instance(\"instance_1\",\n    name=\"instance_1\",\n    security_groups=[\"default\"])\nai1 = openstack.compute.InterfaceAttach(\"ai_1\",\n    instance_id=instance1.id,\n    port_id=ports[0].id)\nai2 = openstack.compute.InterfaceAttach(\"ai_2\",\n    instance_id=instance1.id,\n    port_id=ports[1].id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var network1 = new OpenStack.Networking.Network(\"network_1\", new()\n    {\n        Name = \"network_1\",\n        AdminStateUp = true,\n    });\n\n    var ports = new List\u003cOpenStack.Networking.Port\u003e();\n    for (var rangeIndex = 0; rangeIndex \u003c 2; rangeIndex++)\n    {\n        var range = new { Value = rangeIndex };\n        ports.Add(new OpenStack.Networking.Port($\"ports-{range.Value}\", new()\n        {\n            Name = Std.Format.Invoke(new()\n            {\n                Input = \"port-%02d\",\n                Args = new[]\n                {\n                    range.Value + 1,\n                },\n            }).Apply(invoke =\u003e invoke.Result),\n            NetworkId = network1.Id,\n            AdminStateUp = true,\n        }));\n    }\n    var instance1 = new OpenStack.Compute.Instance(\"instance_1\", new()\n    {\n        Name = \"instance_1\",\n        SecurityGroups = new[]\n        {\n            \"default\",\n        },\n    });\n\n    var ai1 = new OpenStack.Compute.InterfaceAttach(\"ai_1\", new()\n    {\n        InstanceId = instance1.Id,\n        PortId = ports[0].Id,\n    });\n\n    var ai2 = new OpenStack.Compute.InterfaceAttach(\"ai_2\", new()\n    {\n        InstanceId = instance1.Id,\n        PortId = ports[1].Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/compute\"\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork1, err := networking.NewNetwork(ctx, \"network_1\", \u0026networking.NetworkArgs{\n\t\t\tName:         pulumi.String(\"network_1\"),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFormat, err := std.Format(ctx, \u0026std.FormatArgs{\n\t\t\tInput: \"port-%02d\",\n\t\t\tArgs: []float64{\n\t\t\t\tval0 + 1,\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvar ports []*networking.Port\n\t\tfor index := 0; index \u003c 2; index++ {\n\t\t\tkey0 := index\n\t\t\t_ := index\n\t\t\t__res, err := networking.NewPort(ctx, fmt.Sprintf(\"ports-%v\", key0), \u0026networking.PortArgs{\n\t\t\t\tName:         pulumi.String(invokeFormat.Result),\n\t\t\t\tNetworkId:    network1.ID(),\n\t\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tports = append(ports, __res)\n\t\t}\n\t\tinstance1, err := compute.NewInstance(ctx, \"instance_1\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"instance_1\"),\n\t\t\tSecurityGroups: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"default\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInterfaceAttach(ctx, \"ai_1\", \u0026compute.InterfaceAttachArgs{\n\t\t\tInstanceId: instance1.ID(),\n\t\t\tPortId:     ports[0].ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInterfaceAttach(ctx, \"ai_2\", \u0026compute.InterfaceAttachArgs{\n\t\t\tInstanceId: instance1.ID(),\n\t\t\tPortId:     ports[1].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.openstack.networking.Network;\nimport com.pulumi.openstack.networking.NetworkArgs;\nimport com.pulumi.openstack.networking.Port;\nimport com.pulumi.openstack.networking.PortArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FormatArgs;\nimport com.pulumi.openstack.compute.Instance;\nimport com.pulumi.openstack.compute.InstanceArgs;\nimport com.pulumi.openstack.compute.InterfaceAttach;\nimport com.pulumi.openstack.compute.InterfaceAttachArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 network1 = new Network(\"network1\", NetworkArgs.builder()\n            .name(\"network_1\")\n            .adminStateUp(true)\n            .build());\n\n        for (var i = 0; i \u003c 2; i++) {\n            new Port(\"ports-\" + i, PortArgs.builder()\n                .name(StdFunctions.format(FormatArgs.builder()\n                    .input(\"port-%02d\")\n                    .args(range.value() + 1)\n                    .build()).result())\n                .networkId(network1.id())\n                .adminStateUp(true)\n                .build());\n\n        \n}\n        var instance1 = new Instance(\"instance1\", InstanceArgs.builder()\n            .name(\"instance_1\")\n            .securityGroups(\"default\")\n            .build());\n\n        var ai1 = new InterfaceAttach(\"ai1\", InterfaceAttachArgs.builder()\n            .instanceId(instance1.id())\n            .portId(ports[0].id())\n            .build());\n\n        var ai2 = new InterfaceAttach(\"ai2\", InterfaceAttachArgs.builder()\n            .instanceId(instance1.id())\n            .portId(ports[1].id())\n            .build());\n\n    }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInterface Attachments can be imported using the Instance ID and Port ID\nseparated by a slash, e.g.\n\n```sh\n$ pulumi import openstack:compute/interfaceAttach:InterfaceAttach ai_1 89c60255-9bd6-460c-822a-e2b959ede9d2/45670584-225f-46c3-b33e-6707b589b666\n```\n","properties":{"fixedIp":{"type":"string","description":"An IP address to assosciate with the port.\n_NOTE_: This option cannot be used with port_id. You must specifiy a network_id. The IP address must lie in a range on the supplied network.\n"},"instanceId":{"type":"string","description":"The ID of the Instance to attach the Port or Network to.\n"},"networkId":{"type":"string","description":"The ID of the Network to attach to an Instance. A port will be created automatically.\n_NOTE_: This option and \u003cspan pulumi-lang-nodejs=\"`portId`\" pulumi-lang-dotnet=\"`PortId`\" pulumi-lang-go=\"`portId`\" pulumi-lang-python=\"`port_id`\" pulumi-lang-yaml=\"`portId`\" pulumi-lang-java=\"`portId`\"\u003e`port_id`\u003c/span\u003e are mutually exclusive.\n"},"portId":{"type":"string","description":"The ID of the Port to attach to an Instance.\n_NOTE_: This option and \u003cspan pulumi-lang-nodejs=\"`networkId`\" pulumi-lang-dotnet=\"`NetworkId`\" pulumi-lang-go=\"`networkId`\" pulumi-lang-python=\"`network_id`\" pulumi-lang-yaml=\"`networkId`\" pulumi-lang-java=\"`networkId`\"\u003e`network_id`\u003c/span\u003e are mutually exclusive.\n"},"region":{"type":"string","description":"The region in which to create the interface attachment.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new attachment.\n"}},"required":["fixedIp","instanceId","networkId","portId","region"],"inputProperties":{"fixedIp":{"type":"string","description":"An IP address to assosciate with the port.\n_NOTE_: This option cannot be used with port_id. You must specifiy a network_id. The IP address must lie in a range on the supplied network.\n","willReplaceOnChanges":true},"instanceId":{"type":"string","description":"The ID of the Instance to attach the Port or Network to.\n","willReplaceOnChanges":true},"networkId":{"type":"string","description":"The ID of the Network to attach to an Instance. A port will be created automatically.\n_NOTE_: This option and \u003cspan pulumi-lang-nodejs=\"`portId`\" pulumi-lang-dotnet=\"`PortId`\" pulumi-lang-go=\"`portId`\" pulumi-lang-python=\"`port_id`\" pulumi-lang-yaml=\"`portId`\" pulumi-lang-java=\"`portId`\"\u003e`port_id`\u003c/span\u003e are mutually exclusive.\n","willReplaceOnChanges":true},"portId":{"type":"string","description":"The ID of the Port to attach to an Instance.\n_NOTE_: This option and \u003cspan pulumi-lang-nodejs=\"`networkId`\" pulumi-lang-dotnet=\"`NetworkId`\" pulumi-lang-go=\"`networkId`\" pulumi-lang-python=\"`network_id`\" pulumi-lang-yaml=\"`networkId`\" pulumi-lang-java=\"`networkId`\"\u003e`network_id`\u003c/span\u003e are mutually exclusive.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to create the interface attachment.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new attachment.\n","willReplaceOnChanges":true}},"requiredInputs":["instanceId"],"stateInputs":{"description":"Input properties used for looking up and filtering InterfaceAttach resources.\n","properties":{"fixedIp":{"type":"string","description":"An IP address to assosciate with the port.\n_NOTE_: This option cannot be used with port_id. You must specifiy a network_id. The IP address must lie in a range on the supplied network.\n","willReplaceOnChanges":true},"instanceId":{"type":"string","description":"The ID of the Instance to attach the Port or Network to.\n","willReplaceOnChanges":true},"networkId":{"type":"string","description":"The ID of the Network to attach to an Instance. A port will be created automatically.\n_NOTE_: This option and \u003cspan pulumi-lang-nodejs=\"`portId`\" pulumi-lang-dotnet=\"`PortId`\" pulumi-lang-go=\"`portId`\" pulumi-lang-python=\"`port_id`\" pulumi-lang-yaml=\"`portId`\" pulumi-lang-java=\"`portId`\"\u003e`port_id`\u003c/span\u003e are mutually exclusive.\n","willReplaceOnChanges":true},"portId":{"type":"string","description":"The ID of the Port to attach to an Instance.\n_NOTE_: This option and \u003cspan pulumi-lang-nodejs=\"`networkId`\" pulumi-lang-dotnet=\"`NetworkId`\" pulumi-lang-go=\"`networkId`\" pulumi-lang-python=\"`network_id`\" pulumi-lang-yaml=\"`networkId`\" pulumi-lang-java=\"`networkId`\"\u003e`network_id`\u003c/span\u003e are mutually exclusive.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to create the interface attachment.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new attachment.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:compute/keypair:Keypair":{"description":"## Example Usage\n\n### Import an Existing Public Key\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst test_keypair = new openstack.compute.Keypair(\"test-keypair\", {\n    name: \"my-keypair\",\n    publicKey: \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAjpC1hwiOCCmKEWxJ4qzTTsJbKzndLotBCz5PcwtUnflmU+gHJtWMZKpuEGVi29h0A/+ydKek1O18k10Ff+4tyFjiHDQAnOfgWf7+b1yK+qDip3X1C0UPMbwHlTfSGWLGZqd9LvEFx9k3h/M+VtMvwR1lJ9LUyTAImnNjWG7TaIPmui30HvM2UiFEmqkr4ijq45MyX2+fLIePLRIF61p4whjHAQYufqyno3BS48icQb4p6iVEZPo4AE2o9oIyQvj2mx4dk5Y8CgSETOZTYDOR3rU2fZTRDRgPJDH9FWvQjF5tA0p3d9CoWWd2s6GKKbfoUIi8R/Db1BSPJwkqB\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\ntest_keypair = openstack.compute.Keypair(\"test-keypair\",\n    name=\"my-keypair\",\n    public_key=\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAjpC1hwiOCCmKEWxJ4qzTTsJbKzndLotBCz5PcwtUnflmU+gHJtWMZKpuEGVi29h0A/+ydKek1O18k10Ff+4tyFjiHDQAnOfgWf7+b1yK+qDip3X1C0UPMbwHlTfSGWLGZqd9LvEFx9k3h/M+VtMvwR1lJ9LUyTAImnNjWG7TaIPmui30HvM2UiFEmqkr4ijq45MyX2+fLIePLRIF61p4whjHAQYufqyno3BS48icQb4p6iVEZPo4AE2o9oIyQvj2mx4dk5Y8CgSETOZTYDOR3rU2fZTRDRgPJDH9FWvQjF5tA0p3d9CoWWd2s6GKKbfoUIi8R/Db1BSPJwkqB\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test_keypair = new OpenStack.Compute.Keypair(\"test-keypair\", new()\n    {\n        Name = \"my-keypair\",\n        PublicKey = \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAjpC1hwiOCCmKEWxJ4qzTTsJbKzndLotBCz5PcwtUnflmU+gHJtWMZKpuEGVi29h0A/+ydKek1O18k10Ff+4tyFjiHDQAnOfgWf7+b1yK+qDip3X1C0UPMbwHlTfSGWLGZqd9LvEFx9k3h/M+VtMvwR1lJ9LUyTAImnNjWG7TaIPmui30HvM2UiFEmqkr4ijq45MyX2+fLIePLRIF61p4whjHAQYufqyno3BS48icQb4p6iVEZPo4AE2o9oIyQvj2mx4dk5Y8CgSETOZTYDOR3rU2fZTRDRgPJDH9FWvQjF5tA0p3d9CoWWd2s6GKKbfoUIi8R/Db1BSPJwkqB\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewKeypair(ctx, \"test-keypair\", \u0026compute.KeypairArgs{\n\t\t\tName:      pulumi.String(\"my-keypair\"),\n\t\t\tPublicKey: pulumi.String(\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAjpC1hwiOCCmKEWxJ4qzTTsJbKzndLotBCz5PcwtUnflmU+gHJtWMZKpuEGVi29h0A/+ydKek1O18k10Ff+4tyFjiHDQAnOfgWf7+b1yK+qDip3X1C0UPMbwHlTfSGWLGZqd9LvEFx9k3h/M+VtMvwR1lJ9LUyTAImnNjWG7TaIPmui30HvM2UiFEmqkr4ijq45MyX2+fLIePLRIF61p4whjHAQYufqyno3BS48icQb4p6iVEZPo4AE2o9oIyQvj2mx4dk5Y8CgSETOZTYDOR3rU2fZTRDRgPJDH9FWvQjF5tA0p3d9CoWWd2s6GKKbfoUIi8R/Db1BSPJwkqB\"),\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.openstack.compute.Keypair;\nimport com.pulumi.openstack.compute.KeypairArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 test_keypair = new Keypair(\"test-keypair\", KeypairArgs.builder()\n            .name(\"my-keypair\")\n            .publicKey(\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAjpC1hwiOCCmKEWxJ4qzTTsJbKzndLotBCz5PcwtUnflmU+gHJtWMZKpuEGVi29h0A/+ydKek1O18k10Ff+4tyFjiHDQAnOfgWf7+b1yK+qDip3X1C0UPMbwHlTfSGWLGZqd9LvEFx9k3h/M+VtMvwR1lJ9LUyTAImnNjWG7TaIPmui30HvM2UiFEmqkr4ijq45MyX2+fLIePLRIF61p4whjHAQYufqyno3BS48icQb4p6iVEZPo4AE2o9oIyQvj2mx4dk5Y8CgSETOZTYDOR3rU2fZTRDRgPJDH9FWvQjF5tA0p3d9CoWWd2s6GKKbfoUIi8R/Db1BSPJwkqB\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test-keypair:\n    type: openstack:compute:Keypair\n    properties:\n      name: my-keypair\n      publicKey: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAjpC1hwiOCCmKEWxJ4qzTTsJbKzndLotBCz5PcwtUnflmU+gHJtWMZKpuEGVi29h0A/+ydKek1O18k10Ff+4tyFjiHDQAnOfgWf7+b1yK+qDip3X1C0UPMbwHlTfSGWLGZqd9LvEFx9k3h/M+VtMvwR1lJ9LUyTAImnNjWG7TaIPmui30HvM2UiFEmqkr4ijq45MyX2+fLIePLRIF61p4whjHAQYufqyno3BS48icQb4p6iVEZPo4AE2o9oIyQvj2mx4dk5Y8CgSETOZTYDOR3rU2fZTRDRgPJDH9FWvQjF5tA0p3d9CoWWd2s6GKKbfoUIi8R/Db1BSPJwkqB\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Generate a Public/Private Key Pair\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst test_keypair = new openstack.compute.Keypair(\"test-keypair\", {name: \"my-keypair\"});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\ntest_keypair = openstack.compute.Keypair(\"test-keypair\", name=\"my-keypair\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test_keypair = new OpenStack.Compute.Keypair(\"test-keypair\", new()\n    {\n        Name = \"my-keypair\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewKeypair(ctx, \"test-keypair\", \u0026compute.KeypairArgs{\n\t\t\tName: pulumi.String(\"my-keypair\"),\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.openstack.compute.Keypair;\nimport com.pulumi.openstack.compute.KeypairArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 test_keypair = new Keypair(\"test-keypair\", KeypairArgs.builder()\n            .name(\"my-keypair\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test-keypair:\n    type: openstack:compute:Keypair\n    properties:\n      name: my-keypair\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nKeypairs can be imported using the `name`, e.g.\n\n```sh\n$ pulumi import openstack:compute/keypair:Keypair my-keypair test-keypair\n```\n","properties":{"fingerprint":{"type":"string","description":"The fingerprint of the public key.\n"},"name":{"type":"string","description":"A unique name for the keypair. Changing this creates a new\nkeypair.\n"},"privateKey":{"type":"string","description":"The generated private key when no public key is specified.\n","secret":true},"publicKey":{"type":"string","description":"A pregenerated OpenSSH-formatted public key.\nChanging this creates a new keypair. If a public key is not specified, then\na public/private key pair will be automatically generated. If a pair is\ncreated, then destroying this resource means you will lose access to that\nkeypair forever.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Compute client.\nKeypairs are associated with accounts, but a Compute client is needed to\ncreate one. If omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\nChanging this creates a new keypair.\n"},"userId":{"type":"string","description":"This allows administrative users to operate key-pairs\nof specified user ID. For this feature your need to have openstack microversion\n2.10 (Liberty) or later.\n"},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n"}},"required":["fingerprint","name","privateKey","publicKey","region","userId"],"inputProperties":{"name":{"type":"string","description":"A unique name for the keypair. Changing this creates a new\nkeypair.\n","willReplaceOnChanges":true},"publicKey":{"type":"string","description":"A pregenerated OpenSSH-formatted public key.\nChanging this creates a new keypair. If a public key is not specified, then\na public/private key pair will be automatically generated. If a pair is\ncreated, then destroying this resource means you will lose access to that\nkeypair forever.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Compute client.\nKeypairs are associated with accounts, but a Compute client is needed to\ncreate one. If omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\nChanging this creates a new keypair.\n","willReplaceOnChanges":true},"userId":{"type":"string","description":"This allows administrative users to operate key-pairs\nof specified user ID. For this feature your need to have openstack microversion\n2.10 (Liberty) or later.\n","willReplaceOnChanges":true},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering Keypair resources.\n","properties":{"fingerprint":{"type":"string","description":"The fingerprint of the public key.\n"},"name":{"type":"string","description":"A unique name for the keypair. Changing this creates a new\nkeypair.\n","willReplaceOnChanges":true},"privateKey":{"type":"string","description":"The generated private key when no public key is specified.\n","secret":true},"publicKey":{"type":"string","description":"A pregenerated OpenSSH-formatted public key.\nChanging this creates a new keypair. If a public key is not specified, then\na public/private key pair will be automatically generated. If a pair is\ncreated, then destroying this resource means you will lose access to that\nkeypair forever.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Compute client.\nKeypairs are associated with accounts, but a Compute client is needed to\ncreate one. If omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\nChanging this creates a new keypair.\n","willReplaceOnChanges":true},"userId":{"type":"string","description":"This allows administrative users to operate key-pairs\nof specified user ID. For this feature your need to have openstack microversion\n2.10 (Liberty) or later.\n","willReplaceOnChanges":true},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:compute/quotaSetV2:QuotaSetV2":{"description":"Manages a V2 compute quotaset resource within OpenStack.\n\n\u003e **Note:** This usually requires admin privileges.\n\n\u003e **Note:** This resource has a no-op deletion so no actual actions will be done against the OpenStack API\n    in case of delete call.\n\n## Import\n\nQuotasets can be imported using the `project_id/region_name`, e.g.\n\n```sh\n$ pulumi import openstack:compute/quotaSetV2:QuotaSetV2 quotaset_1 2a0f2240-c5e6-41de-896d-e80d97428d6b/region_1\n```\n","properties":{"cores":{"type":"integer","description":"Quota value for cores.\nChanging this updates the existing quotaset.\n"},"fixedIps":{"type":"integer","description":"Quota value for fixed IPs.\nChanging this updates the existing quotaset.\n"},"floatingIps":{"type":"integer","description":"Quota value for floating IPs.\nChanging this updates the existing quotaset.\n"},"injectedFileContentBytes":{"type":"integer","description":"Quota value for content bytes\nof injected files. Changing this updates the existing quotaset.\n"},"injectedFilePathBytes":{"type":"integer","description":"Quota value for path bytes of\ninjected files. Changing this updates the existing quotaset.\n"},"injectedFiles":{"type":"integer","description":"Quota value for injected files.\nChanging this updates the existing quotaset.\n"},"instances":{"type":"integer","description":"Quota value for instances.\nChanging this updates the existing quotaset.\n"},"keyPairs":{"type":"integer","description":"Quota value for key pairs.\nChanging this updates the existing quotaset.\n"},"metadataItems":{"type":"integer","description":"Quota value for metadata items.\nChanging this updates the existing quotaset.\n"},"projectId":{"type":"string","description":"ID of the project to manage quotas.\nChanging this creates a new quotaset.\n"},"ram":{"type":"integer","description":"Quota value for RAM.\nChanging this updates the existing quotaset.\n"},"region":{"type":"string","description":"The region in which to create the volume. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new quotaset.\n"},"securityGroupRules":{"type":"integer","description":"Quota value for security group rules.\nChanging this updates the existing quotaset.\n"},"securityGroups":{"type":"integer","description":"Quota value for security groups.\nChanging this updates the existing quotaset.\n"},"serverGroupMembers":{"type":"integer","description":"Quota value for server groups members.\nChanging this updates the existing quotaset.\n"},"serverGroups":{"type":"integer","description":"Quota value for server groups.\nChanging this updates the existing quotaset.\n"}},"required":["cores","fixedIps","floatingIps","injectedFileContentBytes","injectedFilePathBytes","injectedFiles","instances","keyPairs","metadataItems","projectId","ram","region","securityGroupRules","securityGroups","serverGroupMembers","serverGroups"],"inputProperties":{"cores":{"type":"integer","description":"Quota value for cores.\nChanging this updates the existing quotaset.\n"},"fixedIps":{"type":"integer","description":"Quota value for fixed IPs.\nChanging this updates the existing quotaset.\n"},"floatingIps":{"type":"integer","description":"Quota value for floating IPs.\nChanging this updates the existing quotaset.\n"},"injectedFileContentBytes":{"type":"integer","description":"Quota value for content bytes\nof injected files. Changing this updates the existing quotaset.\n"},"injectedFilePathBytes":{"type":"integer","description":"Quota value for path bytes of\ninjected files. Changing this updates the existing quotaset.\n"},"injectedFiles":{"type":"integer","description":"Quota value for injected files.\nChanging this updates the existing quotaset.\n"},"instances":{"type":"integer","description":"Quota value for instances.\nChanging this updates the existing quotaset.\n"},"keyPairs":{"type":"integer","description":"Quota value for key pairs.\nChanging this updates the existing quotaset.\n"},"metadataItems":{"type":"integer","description":"Quota value for metadata items.\nChanging this updates the existing quotaset.\n"},"projectId":{"type":"string","description":"ID of the project to manage quotas.\nChanging this creates a new quotaset.\n","willReplaceOnChanges":true},"ram":{"type":"integer","description":"Quota value for RAM.\nChanging this updates the existing quotaset.\n"},"region":{"type":"string","description":"The region in which to create the volume. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new quotaset.\n","willReplaceOnChanges":true},"securityGroupRules":{"type":"integer","description":"Quota value for security group rules.\nChanging this updates the existing quotaset.\n"},"securityGroups":{"type":"integer","description":"Quota value for security groups.\nChanging this updates the existing quotaset.\n"},"serverGroupMembers":{"type":"integer","description":"Quota value for server groups members.\nChanging this updates the existing quotaset.\n"},"serverGroups":{"type":"integer","description":"Quota value for server groups.\nChanging this updates the existing quotaset.\n"}},"requiredInputs":["projectId"],"stateInputs":{"description":"Input properties used for looking up and filtering QuotaSetV2 resources.\n","properties":{"cores":{"type":"integer","description":"Quota value for cores.\nChanging this updates the existing quotaset.\n"},"fixedIps":{"type":"integer","description":"Quota value for fixed IPs.\nChanging this updates the existing quotaset.\n"},"floatingIps":{"type":"integer","description":"Quota value for floating IPs.\nChanging this updates the existing quotaset.\n"},"injectedFileContentBytes":{"type":"integer","description":"Quota value for content bytes\nof injected files. Changing this updates the existing quotaset.\n"},"injectedFilePathBytes":{"type":"integer","description":"Quota value for path bytes of\ninjected files. Changing this updates the existing quotaset.\n"},"injectedFiles":{"type":"integer","description":"Quota value for injected files.\nChanging this updates the existing quotaset.\n"},"instances":{"type":"integer","description":"Quota value for instances.\nChanging this updates the existing quotaset.\n"},"keyPairs":{"type":"integer","description":"Quota value for key pairs.\nChanging this updates the existing quotaset.\n"},"metadataItems":{"type":"integer","description":"Quota value for metadata items.\nChanging this updates the existing quotaset.\n"},"projectId":{"type":"string","description":"ID of the project to manage quotas.\nChanging this creates a new quotaset.\n","willReplaceOnChanges":true},"ram":{"type":"integer","description":"Quota value for RAM.\nChanging this updates the existing quotaset.\n"},"region":{"type":"string","description":"The region in which to create the volume. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new quotaset.\n","willReplaceOnChanges":true},"securityGroupRules":{"type":"integer","description":"Quota value for security group rules.\nChanging this updates the existing quotaset.\n"},"securityGroups":{"type":"integer","description":"Quota value for security groups.\nChanging this updates the existing quotaset.\n"},"serverGroupMembers":{"type":"integer","description":"Quota value for server groups members.\nChanging this updates the existing quotaset.\n"},"serverGroups":{"type":"integer","description":"Quota value for server groups.\nChanging this updates the existing quotaset.\n"}},"type":"object"}},"openstack:compute/serverGroup:ServerGroup":{"description":"Manages a V2 Server Group resource within OpenStack.\n\n## Example Usage\n\n### Compute service API version 2.63 or below:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst test_sg = new openstack.compute.ServerGroup(\"test-sg\", {\n    name: \"my-sg\",\n    policies: \"anti-affinity\",\n});\nconst test_instance = new openstack.compute.Instance(\"test-instance\", {\n    name: \"my-instance\",\n    imageId: \"ad091b52-742f-469e-8f3c-fd81cadf0743\",\n    flavorId: \"3\",\n    schedulerHints: [{\n        group: test_sg.id,\n    }],\n    networks: [{\n        name: \"my_network\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\ntest_sg = openstack.compute.ServerGroup(\"test-sg\",\n    name=\"my-sg\",\n    policies=\"anti-affinity\")\ntest_instance = openstack.compute.Instance(\"test-instance\",\n    name=\"my-instance\",\n    image_id=\"ad091b52-742f-469e-8f3c-fd81cadf0743\",\n    flavor_id=\"3\",\n    scheduler_hints=[{\n        \"group\": test_sg.id,\n    }],\n    networks=[{\n        \"name\": \"my_network\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test_sg = new OpenStack.Compute.ServerGroup(\"test-sg\", new()\n    {\n        Name = \"my-sg\",\n        Policies = \"anti-affinity\",\n    });\n\n    var test_instance = new OpenStack.Compute.Instance(\"test-instance\", new()\n    {\n        Name = \"my-instance\",\n        ImageId = \"ad091b52-742f-469e-8f3c-fd81cadf0743\",\n        FlavorId = \"3\",\n        SchedulerHints = new[]\n        {\n            new OpenStack.Compute.Inputs.InstanceSchedulerHintArgs\n            {\n                Group = test_sg.Id,\n            },\n        },\n        Networks = new[]\n        {\n            new OpenStack.Compute.Inputs.InstanceNetworkArgs\n            {\n                Name = \"my_network\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest_sg, err := compute.NewServerGroup(ctx, \"test-sg\", \u0026compute.ServerGroupArgs{\n\t\t\tName:     pulumi.String(\"my-sg\"),\n\t\t\tPolicies: pulumi.String(\"anti-affinity\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"test-instance\", \u0026compute.InstanceArgs{\n\t\t\tName:     pulumi.String(\"my-instance\"),\n\t\t\tImageId:  pulumi.String(\"ad091b52-742f-469e-8f3c-fd81cadf0743\"),\n\t\t\tFlavorId: pulumi.String(\"3\"),\n\t\t\tSchedulerHints: compute.InstanceSchedulerHintArray{\n\t\t\t\t\u0026compute.InstanceSchedulerHintArgs{\n\t\t\t\t\tGroup: test_sg.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworks: compute.InstanceNetworkArray{\n\t\t\t\t\u0026compute.InstanceNetworkArgs{\n\t\t\t\t\tName: pulumi.String(\"my_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.openstack.compute.ServerGroup;\nimport com.pulumi.openstack.compute.ServerGroupArgs;\nimport com.pulumi.openstack.compute.Instance;\nimport com.pulumi.openstack.compute.InstanceArgs;\nimport com.pulumi.openstack.compute.inputs.InstanceSchedulerHintArgs;\nimport com.pulumi.openstack.compute.inputs.InstanceNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 test_sg = new ServerGroup(\"test-sg\", ServerGroupArgs.builder()\n            .name(\"my-sg\")\n            .policies(\"anti-affinity\")\n            .build());\n\n        var test_instance = new Instance(\"test-instance\", InstanceArgs.builder()\n            .name(\"my-instance\")\n            .imageId(\"ad091b52-742f-469e-8f3c-fd81cadf0743\")\n            .flavorId(\"3\")\n            .schedulerHints(InstanceSchedulerHintArgs.builder()\n                .group(test_sg.id())\n                .build())\n            .networks(InstanceNetworkArgs.builder()\n                .name(\"my_network\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test-sg:\n    type: openstack:compute:ServerGroup\n    properties:\n      name: my-sg\n      policies: anti-affinity\n  test-instance:\n    type: openstack:compute:Instance\n    properties:\n      name: my-instance\n      imageId: ad091b52-742f-469e-8f3c-fd81cadf0743\n      flavorId: '3'\n      schedulerHints:\n        - group: ${[\"test-sg\"].id}\n      networks:\n        - name: my_network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Compute service API version 2.64 or above:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst test_sg = new openstack.compute.ServerGroup(\"test-sg\", {\n    name: \"my-sg\",\n    policies: \"anti-affinity\",\n    rules: {\n        maxServerPerHost: 3,\n    },\n});\nconst test_instance = new openstack.compute.Instance(\"test-instance\", {\n    name: \"my-instance\",\n    imageId: \"ad091b52-742f-469e-8f3c-fd81cadf0743\",\n    flavorId: \"3\",\n    schedulerHints: [{\n        group: test_sg.id,\n    }],\n    networks: [{\n        name: \"my_network\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\ntest_sg = openstack.compute.ServerGroup(\"test-sg\",\n    name=\"my-sg\",\n    policies=\"anti-affinity\",\n    rules={\n        \"max_server_per_host\": 3,\n    })\ntest_instance = openstack.compute.Instance(\"test-instance\",\n    name=\"my-instance\",\n    image_id=\"ad091b52-742f-469e-8f3c-fd81cadf0743\",\n    flavor_id=\"3\",\n    scheduler_hints=[{\n        \"group\": test_sg.id,\n    }],\n    networks=[{\n        \"name\": \"my_network\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test_sg = new OpenStack.Compute.ServerGroup(\"test-sg\", new()\n    {\n        Name = \"my-sg\",\n        Policies = \"anti-affinity\",\n        Rules = new OpenStack.Compute.Inputs.ServerGroupRulesArgs\n        {\n            MaxServerPerHost = 3,\n        },\n    });\n\n    var test_instance = new OpenStack.Compute.Instance(\"test-instance\", new()\n    {\n        Name = \"my-instance\",\n        ImageId = \"ad091b52-742f-469e-8f3c-fd81cadf0743\",\n        FlavorId = \"3\",\n        SchedulerHints = new[]\n        {\n            new OpenStack.Compute.Inputs.InstanceSchedulerHintArgs\n            {\n                Group = test_sg.Id,\n            },\n        },\n        Networks = new[]\n        {\n            new OpenStack.Compute.Inputs.InstanceNetworkArgs\n            {\n                Name = \"my_network\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest_sg, err := compute.NewServerGroup(ctx, \"test-sg\", \u0026compute.ServerGroupArgs{\n\t\t\tName:     pulumi.String(\"my-sg\"),\n\t\t\tPolicies: pulumi.String(\"anti-affinity\"),\n\t\t\tRules: \u0026compute.ServerGroupRulesArgs{\n\t\t\t\tMaxServerPerHost: pulumi.Int(3),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"test-instance\", \u0026compute.InstanceArgs{\n\t\t\tName:     pulumi.String(\"my-instance\"),\n\t\t\tImageId:  pulumi.String(\"ad091b52-742f-469e-8f3c-fd81cadf0743\"),\n\t\t\tFlavorId: pulumi.String(\"3\"),\n\t\t\tSchedulerHints: compute.InstanceSchedulerHintArray{\n\t\t\t\t\u0026compute.InstanceSchedulerHintArgs{\n\t\t\t\t\tGroup: test_sg.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworks: compute.InstanceNetworkArray{\n\t\t\t\t\u0026compute.InstanceNetworkArgs{\n\t\t\t\t\tName: pulumi.String(\"my_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.openstack.compute.ServerGroup;\nimport com.pulumi.openstack.compute.ServerGroupArgs;\nimport com.pulumi.openstack.compute.inputs.ServerGroupRulesArgs;\nimport com.pulumi.openstack.compute.Instance;\nimport com.pulumi.openstack.compute.InstanceArgs;\nimport com.pulumi.openstack.compute.inputs.InstanceSchedulerHintArgs;\nimport com.pulumi.openstack.compute.inputs.InstanceNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 test_sg = new ServerGroup(\"test-sg\", ServerGroupArgs.builder()\n            .name(\"my-sg\")\n            .policies(\"anti-affinity\")\n            .rules(ServerGroupRulesArgs.builder()\n                .maxServerPerHost(3)\n                .build())\n            .build());\n\n        var test_instance = new Instance(\"test-instance\", InstanceArgs.builder()\n            .name(\"my-instance\")\n            .imageId(\"ad091b52-742f-469e-8f3c-fd81cadf0743\")\n            .flavorId(\"3\")\n            .schedulerHints(InstanceSchedulerHintArgs.builder()\n                .group(test_sg.id())\n                .build())\n            .networks(InstanceNetworkArgs.builder()\n                .name(\"my_network\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test-sg:\n    type: openstack:compute:ServerGroup\n    properties:\n      name: my-sg\n      policies: anti-affinity\n      rules:\n        maxServerPerHost: 3\n  test-instance:\n    type: openstack:compute:Instance\n    properties:\n      name: my-instance\n      imageId: ad091b52-742f-469e-8f3c-fd81cadf0743\n      flavorId: '3'\n      schedulerHints:\n        - group: ${[\"test-sg\"].id}\n      networks:\n        - name: my_network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Policies\n\n* \u003cspan pulumi-lang-nodejs=\"`affinity`\" pulumi-lang-dotnet=\"`Affinity`\" pulumi-lang-go=\"`affinity`\" pulumi-lang-python=\"`affinity`\" pulumi-lang-yaml=\"`affinity`\" pulumi-lang-java=\"`affinity`\"\u003e`affinity`\u003c/span\u003e - All instances/servers launched in this group will be hosted on\n    the same compute node.\n\n* `anti-affinity` - All instances/servers launched in this group will be\n    hosted on different compute nodes.\n\n* `soft-affinity` - All instances/servers launched in this group will be hosted\n    on the same compute node if possible, but if not possible they\n    still will be scheduled instead of failure. To use this policy your\n    OpenStack environment should support Compute service API 2.15 or above.\n\n* `soft-anti-affinity` - All instances/servers launched in this group will be\n    hosted on different compute nodes if possible, but if not possible they\n    still will be scheduled instead of failure. To use this policy your\n    OpenStack environment should support Compute service API 2.15 or above.\n\n## Import\n\nServer Groups can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:compute/serverGroup:ServerGroup test-sg 1bc30ee9-9d5b-4c30-bdd5-7f1e663f5edf\n```\n","properties":{"members":{"type":"array","items":{"type":"string"},"description":"The instances that are part of this server group.\n"},"name":{"type":"string","description":"A unique name for the server group. Changing this creates\na new server group.\n"},"policies":{"type":"string","description":"A list of exactly one policy name to associate with\nthe server group. See the Policies section for more information. Changing this\ncreates a new server group.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Compute client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing\nthis creates a new server group.\n"},"rules":{"$ref":"#/types/openstack:compute/ServerGroupRules:ServerGroupRules","description":"The rules which are applied to specified \u003cspan pulumi-lang-nodejs=\"`policy`\" pulumi-lang-dotnet=\"`Policy`\" pulumi-lang-go=\"`policy`\" pulumi-lang-python=\"`policy`\" pulumi-lang-yaml=\"`policy`\" pulumi-lang-java=\"`policy`\"\u003e`policy`\u003c/span\u003e. Currently,\nonly the \u003cspan pulumi-lang-nodejs=\"`maxServerPerHost`\" pulumi-lang-dotnet=\"`MaxServerPerHost`\" pulumi-lang-go=\"`maxServerPerHost`\" pulumi-lang-python=\"`max_server_per_host`\" pulumi-lang-yaml=\"`maxServerPerHost`\" pulumi-lang-java=\"`maxServerPerHost`\"\u003e`max_server_per_host`\u003c/span\u003e rule is supported for the `anti-affinity` policy.\n"},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n"}},"required":["members","name","region","rules"],"inputProperties":{"name":{"type":"string","description":"A unique name for the server group. Changing this creates\na new server group.\n","willReplaceOnChanges":true},"policies":{"type":"string","description":"A list of exactly one policy name to associate with\nthe server group. See the Policies section for more information. Changing this\ncreates a new server group.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Compute client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing\nthis creates a new server group.\n","willReplaceOnChanges":true},"rules":{"$ref":"#/types/openstack:compute/ServerGroupRules:ServerGroupRules","description":"The rules which are applied to specified \u003cspan pulumi-lang-nodejs=\"`policy`\" pulumi-lang-dotnet=\"`Policy`\" pulumi-lang-go=\"`policy`\" pulumi-lang-python=\"`policy`\" pulumi-lang-yaml=\"`policy`\" pulumi-lang-java=\"`policy`\"\u003e`policy`\u003c/span\u003e. Currently,\nonly the \u003cspan pulumi-lang-nodejs=\"`maxServerPerHost`\" pulumi-lang-dotnet=\"`MaxServerPerHost`\" pulumi-lang-go=\"`maxServerPerHost`\" pulumi-lang-python=\"`max_server_per_host`\" pulumi-lang-yaml=\"`maxServerPerHost`\" pulumi-lang-java=\"`maxServerPerHost`\"\u003e`max_server_per_host`\u003c/span\u003e rule is supported for the `anti-affinity` policy.\n","willReplaceOnChanges":true},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering ServerGroup resources.\n","properties":{"members":{"type":"array","items":{"type":"string"},"description":"The instances that are part of this server group.\n"},"name":{"type":"string","description":"A unique name for the server group. Changing this creates\na new server group.\n","willReplaceOnChanges":true},"policies":{"type":"string","description":"A list of exactly one policy name to associate with\nthe server group. See the Policies section for more information. Changing this\ncreates a new server group.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Compute client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing\nthis creates a new server group.\n","willReplaceOnChanges":true},"rules":{"$ref":"#/types/openstack:compute/ServerGroupRules:ServerGroupRules","description":"The rules which are applied to specified \u003cspan pulumi-lang-nodejs=\"`policy`\" pulumi-lang-dotnet=\"`Policy`\" pulumi-lang-go=\"`policy`\" pulumi-lang-python=\"`policy`\" pulumi-lang-yaml=\"`policy`\" pulumi-lang-java=\"`policy`\"\u003e`policy`\u003c/span\u003e. Currently,\nonly the \u003cspan pulumi-lang-nodejs=\"`maxServerPerHost`\" pulumi-lang-dotnet=\"`MaxServerPerHost`\" pulumi-lang-go=\"`maxServerPerHost`\" pulumi-lang-python=\"`max_server_per_host`\" pulumi-lang-yaml=\"`maxServerPerHost`\" pulumi-lang-java=\"`maxServerPerHost`\"\u003e`max_server_per_host`\u003c/span\u003e rule is supported for the `anti-affinity` policy.\n","willReplaceOnChanges":true},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:compute/volumeAttach:VolumeAttach":{"description":"Attaches a Block Storage Volume to an Instance using the OpenStack\nCompute (Nova) v2 API.\n\n## Example Usage\n\n### Basic attachment of a single volume to a single instance\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst volume1 = new openstack.blockstorage.Volume(\"volume_1\", {\n    name: \"volume_1\",\n    size: 1,\n});\nconst instance1 = new openstack.compute.Instance(\"instance_1\", {\n    name: \"instance_1\",\n    securityGroups: [\"default\"],\n});\nconst va1 = new openstack.compute.VolumeAttach(\"va_1\", {\n    instanceId: instance1.id,\n    volumeId: volume1.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nvolume1 = openstack.blockstorage.Volume(\"volume_1\",\n    name=\"volume_1\",\n    size=1)\ninstance1 = openstack.compute.Instance(\"instance_1\",\n    name=\"instance_1\",\n    security_groups=[\"default\"])\nva1 = openstack.compute.VolumeAttach(\"va_1\",\n    instance_id=instance1.id,\n    volume_id=volume1.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var volume1 = new OpenStack.BlockStorage.Volume(\"volume_1\", new()\n    {\n        Name = \"volume_1\",\n        Size = 1,\n    });\n\n    var instance1 = new OpenStack.Compute.Instance(\"instance_1\", new()\n    {\n        Name = \"instance_1\",\n        SecurityGroups = new[]\n        {\n            \"default\",\n        },\n    });\n\n    var va1 = new OpenStack.Compute.VolumeAttach(\"va_1\", new()\n    {\n        InstanceId = instance1.Id,\n        VolumeId = volume1.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/blockstorage\"\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvolume1, err := blockstorage.NewVolume(ctx, \"volume_1\", \u0026blockstorage.VolumeArgs{\n\t\t\tName: pulumi.String(\"volume_1\"),\n\t\t\tSize: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance1, err := compute.NewInstance(ctx, \"instance_1\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"instance_1\"),\n\t\t\tSecurityGroups: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"default\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewVolumeAttach(ctx, \"va_1\", \u0026compute.VolumeAttachArgs{\n\t\t\tInstanceId: instance1.ID(),\n\t\t\tVolumeId:   volume1.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.openstack.blockstorage.Volume;\nimport com.pulumi.openstack.blockstorage.VolumeArgs;\nimport com.pulumi.openstack.compute.Instance;\nimport com.pulumi.openstack.compute.InstanceArgs;\nimport com.pulumi.openstack.compute.VolumeAttach;\nimport com.pulumi.openstack.compute.VolumeAttachArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 volume1 = new Volume(\"volume1\", VolumeArgs.builder()\n            .name(\"volume_1\")\n            .size(1)\n            .build());\n\n        var instance1 = new Instance(\"instance1\", InstanceArgs.builder()\n            .name(\"instance_1\")\n            .securityGroups(\"default\")\n            .build());\n\n        var va1 = new VolumeAttach(\"va1\", VolumeAttachArgs.builder()\n            .instanceId(instance1.id())\n            .volumeId(volume1.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  volume1:\n    type: openstack:blockstorage:Volume\n    name: volume_1\n    properties:\n      name: volume_1\n      size: 1\n  instance1:\n    type: openstack:compute:Instance\n    name: instance_1\n    properties:\n      name: instance_1\n      securityGroups:\n        - default\n  va1:\n    type: openstack:compute:VolumeAttach\n    name: va_1\n    properties:\n      instanceId: ${instance1.id}\n      volumeId: ${volume1.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Attaching multiple volumes to a single instance\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\nimport * as std from \"@pulumi/std\";\n\nconst volumes: openstack.blockstorage.Volume[] = [];\nfor (const range = {value: 0}; range.value \u003c 2; range.value++) {\n    volumes.push(new openstack.blockstorage.Volume(`volumes-${range.value}`, {\n        name: std.format({\n            input: \"vol-%02d\",\n            args: [range.value + 1],\n        }).then(invoke =\u003e invoke.result),\n        size: 1,\n    }));\n}\nconst instance1 = new openstack.compute.Instance(\"instance_1\", {\n    name: \"instance_1\",\n    securityGroups: [\"default\"],\n});\nconst attachments: openstack.compute.VolumeAttach[] = [];\nfor (const range = {value: 0}; range.value \u003c 2; range.value++) {\n    attachments.push(new openstack.compute.VolumeAttach(`attachments-${range.value}`, {\n        instanceId: instance1.id,\n        volumeId: volumes[range.value].id,\n    }));\n}\nexport const volumeDevices = attachments.map(__item =\u003e __item.device);\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\nimport pulumi_std as std\n\nvolumes = []\nfor range in [{\"value\": i} for i in range(0, 2)]:\n    volumes.append(openstack.blockstorage.Volume(f\"volumes-{range['value']}\",\n        name=std.format(input=\"vol-%02d\",\n            args=[range[\"value\"] + 1]).result,\n        size=1))\ninstance1 = openstack.compute.Instance(\"instance_1\",\n    name=\"instance_1\",\n    security_groups=[\"default\"])\nattachments = []\nfor range in [{\"value\": i} for i in range(0, 2)]:\n    attachments.append(openstack.compute.VolumeAttach(f\"attachments-{range['value']}\",\n        instance_id=instance1.id,\n        volume_id=volumes[range[\"value\"]].id))\npulumi.export(\"volumeDevices\", [__item.device for __item in attachments])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var volumes = new List\u003cOpenStack.BlockStorage.Volume\u003e();\n    for (var rangeIndex = 0; rangeIndex \u003c 2; rangeIndex++)\n    {\n        var range = new { Value = rangeIndex };\n        volumes.Add(new OpenStack.BlockStorage.Volume($\"volumes-{range.Value}\", new()\n        {\n            Name = Std.Format.Invoke(new()\n            {\n                Input = \"vol-%02d\",\n                Args = new[]\n                {\n                    range.Value + 1,\n                },\n            }).Apply(invoke =\u003e invoke.Result),\n            Size = 1,\n        }));\n    }\n    var instance1 = new OpenStack.Compute.Instance(\"instance_1\", new()\n    {\n        Name = \"instance_1\",\n        SecurityGroups = new[]\n        {\n            \"default\",\n        },\n    });\n\n    var attachments = new List\u003cOpenStack.Compute.VolumeAttach\u003e();\n    for (var rangeIndex = 0; rangeIndex \u003c 2; rangeIndex++)\n    {\n        var range = new { Value = rangeIndex };\n        attachments.Add(new OpenStack.Compute.VolumeAttach($\"attachments-{range.Value}\", new()\n        {\n            InstanceId = instance1.Id,\n            VolumeId = volumes[range.Value].Id,\n        }));\n    }\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"volumeDevices\"] = attachments.Select(__item =\u003e __item.Device).ToList(),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/blockstorage\"\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/compute\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\ninvokeFormat, err := std.Format(ctx, \u0026std.FormatArgs{\nInput: \"vol-%02d\",\nArgs: []float64{\nval0 + 1,\n},\n}, nil)\nif err != nil {\nreturn err\n}\nvar volumes []*blockstorage.Volume\nfor index := 0; index \u003c 2; index++ {\n    key0 := index\n    _ := index\n__res, err := blockstorage.NewVolume(ctx, fmt.Sprintf(\"volumes-%v\", key0), \u0026blockstorage.VolumeArgs{\nName: pulumi.String(invokeFormat.Result),\nSize: pulumi.Int(1),\n})\nif err != nil {\nreturn err\n}\nvolumes = append(volumes, __res)\n}\ninstance1, err := compute.NewInstance(ctx, \"instance_1\", \u0026compute.InstanceArgs{\nName: pulumi.String(\"instance_1\"),\nSecurityGroups: pulumi.StringArray{\npulumi.String(\"default\"),\n},\n})\nif err != nil {\nreturn err\n}\nvar attachments []*compute.VolumeAttach\nfor index := 0; index \u003c 2; index++ {\n    key0 := index\n    val0 := index\n__res, err := compute.NewVolumeAttach(ctx, fmt.Sprintf(\"attachments-%v\", key0), \u0026compute.VolumeAttachArgs{\nInstanceId: instance1.ID(),\nVolumeId: volumes[val0].ID(),\n})\nif err != nil {\nreturn err\n}\nattachments = append(attachments, __res)\n}\nctx.Export(\"volumeDevices\", pulumi.StringArray(%!v(PANIC=Format method: fatal: A failure has occurred: unlowered splat expression @ example.pp:26,11-32)))\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openstack.blockstorage.Volume;\nimport com.pulumi.openstack.blockstorage.VolumeArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FormatArgs;\nimport com.pulumi.openstack.compute.Instance;\nimport com.pulumi.openstack.compute.InstanceArgs;\nimport com.pulumi.openstack.compute.VolumeAttach;\nimport com.pulumi.openstack.compute.VolumeAttachArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        for (var i = 0; i \u003c 2; i++) {\n            new Volume(\"volumes-\" + i, VolumeArgs.builder()\n                .name(StdFunctions.format(FormatArgs.builder()\n                    .input(\"vol-%02d\")\n                    .args(range.value() + 1)\n                    .build()).result())\n                .size(1)\n                .build());\n\n        \n}\n        var instance1 = new Instance(\"instance1\", InstanceArgs.builder()\n            .name(\"instance_1\")\n            .securityGroups(\"default\")\n            .build());\n\n        for (var i = 0; i \u003c 2; i++) {\n            new VolumeAttach(\"attachments-\" + i, VolumeAttachArgs.builder()\n                .instanceId(instance1.id())\n                .volumeId(volumes[range.value()].id())\n                .build());\n\n        \n}\n        ctx.export(\"volumeDevices\", attachments.stream().map(element -\u003e element.device()).collect(toList()));\n    }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nNote that the above example will not guarantee that the volumes are attached in\na deterministic manner. The volumes will be attached in a seemingly random\norder.\n\nIf you want to ensure that the volumes are attached in a given order, create\nexplicit dependencies between the volumes, such as:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\nimport * as std from \"@pulumi/std\";\n\nconst volumes: openstack.blockstorage.Volume[] = [];\nfor (const range = {value: 0}; range.value \u003c 2; range.value++) {\n    volumes.push(new openstack.blockstorage.Volume(`volumes-${range.value}`, {\n        name: std.format({\n            input: \"vol-%02d\",\n            args: [range.value + 1],\n        }).then(invoke =\u003e invoke.result),\n        size: 1,\n    }));\n}\nconst instance1 = new openstack.compute.Instance(\"instance_1\", {\n    name: \"instance_1\",\n    securityGroups: [\"default\"],\n});\nconst attach1 = new openstack.compute.VolumeAttach(\"attach_1\", {\n    instanceId: instance1.id,\n    volumeId: volumes[0].id,\n});\nconst attach2 = new openstack.compute.VolumeAttach(\"attach_2\", {\n    instanceId: instance1.id,\n    volumeId: volumes[1].id,\n}, {\n    dependsOn: [attach1],\n});\nexport const volumeDevices = attachments.map(__item =\u003e __item.device);\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\nimport pulumi_std as std\n\nvolumes = []\nfor range in [{\"value\": i} for i in range(0, 2)]:\n    volumes.append(openstack.blockstorage.Volume(f\"volumes-{range['value']}\",\n        name=std.format(input=\"vol-%02d\",\n            args=[range[\"value\"] + 1]).result,\n        size=1))\ninstance1 = openstack.compute.Instance(\"instance_1\",\n    name=\"instance_1\",\n    security_groups=[\"default\"])\nattach1 = openstack.compute.VolumeAttach(\"attach_1\",\n    instance_id=instance1.id,\n    volume_id=volumes[0].id)\nattach2 = openstack.compute.VolumeAttach(\"attach_2\",\n    instance_id=instance1.id,\n    volume_id=volumes[1].id,\n    opts = pulumi.ResourceOptions(depends_on=[attach1]))\npulumi.export(\"volumeDevices\", [__item[\"device\"] for __item in attachments])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var volumes = new List\u003cOpenStack.BlockStorage.Volume\u003e();\n    for (var rangeIndex = 0; rangeIndex \u003c 2; rangeIndex++)\n    {\n        var range = new { Value = rangeIndex };\n        volumes.Add(new OpenStack.BlockStorage.Volume($\"volumes-{range.Value}\", new()\n        {\n            Name = Std.Format.Invoke(new()\n            {\n                Input = \"vol-%02d\",\n                Args = new[]\n                {\n                    range.Value + 1,\n                },\n            }).Apply(invoke =\u003e invoke.Result),\n            Size = 1,\n        }));\n    }\n    var instance1 = new OpenStack.Compute.Instance(\"instance_1\", new()\n    {\n        Name = \"instance_1\",\n        SecurityGroups = new[]\n        {\n            \"default\",\n        },\n    });\n\n    var attach1 = new OpenStack.Compute.VolumeAttach(\"attach_1\", new()\n    {\n        InstanceId = instance1.Id,\n        VolumeId = volumes[0].Id,\n    });\n\n    var attach2 = new OpenStack.Compute.VolumeAttach(\"attach_2\", new()\n    {\n        InstanceId = instance1.Id,\n        VolumeId = volumes[1].Id,\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            attach1,\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"volumeDevices\"] = attachments.Select(__item =\u003e __item.Device).ToList(),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/blockstorage\"\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/compute\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\ninvokeFormat, err := std.Format(ctx, \u0026std.FormatArgs{\nInput: \"vol-%02d\",\nArgs: []float64{\nval0 + 1,\n},\n}, nil)\nif err != nil {\nreturn err\n}\nvar volumes []*blockstorage.Volume\nfor index := 0; index \u003c 2; index++ {\n    key0 := index\n    _ := index\n__res, err := blockstorage.NewVolume(ctx, fmt.Sprintf(\"volumes-%v\", key0), \u0026blockstorage.VolumeArgs{\nName: pulumi.String(invokeFormat.Result),\nSize: pulumi.Int(1),\n})\nif err != nil {\nreturn err\n}\nvolumes = append(volumes, __res)\n}\ninstance1, err := compute.NewInstance(ctx, \"instance_1\", \u0026compute.InstanceArgs{\nName: pulumi.String(\"instance_1\"),\nSecurityGroups: pulumi.StringArray{\npulumi.String(\"default\"),\n},\n})\nif err != nil {\nreturn err\n}\nattach1, err := compute.NewVolumeAttach(ctx, \"attach_1\", \u0026compute.VolumeAttachArgs{\nInstanceId: instance1.ID(),\nVolumeId: volumes[0].ID(),\n})\nif err != nil {\nreturn err\n}\n_, err = compute.NewVolumeAttach(ctx, \"attach_2\", \u0026compute.VolumeAttachArgs{\nInstanceId: instance1.ID(),\nVolumeId: volumes[1].ID(),\n}, pulumi.DependsOn([]pulumi.Resource{\nattach1,\n}))\nif err != nil {\nreturn err\n}\nctx.Export(\"volumeDevices\", pulumi.Array(%!v(PANIC=Format method: fatal: A failure has occurred: unlowered splat expression @ example.pp:33,11-32)))\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openstack.blockstorage.Volume;\nimport com.pulumi.openstack.blockstorage.VolumeArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FormatArgs;\nimport com.pulumi.openstack.compute.Instance;\nimport com.pulumi.openstack.compute.InstanceArgs;\nimport com.pulumi.openstack.compute.VolumeAttach;\nimport com.pulumi.openstack.compute.VolumeAttachArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        for (var i = 0; i \u003c 2; i++) {\n            new Volume(\"volumes-\" + i, VolumeArgs.builder()\n                .name(StdFunctions.format(FormatArgs.builder()\n                    .input(\"vol-%02d\")\n                    .args(range.value() + 1)\n                    .build()).result())\n                .size(1)\n                .build());\n\n        \n}\n        var instance1 = new Instance(\"instance1\", InstanceArgs.builder()\n            .name(\"instance_1\")\n            .securityGroups(\"default\")\n            .build());\n\n        var attach1 = new VolumeAttach(\"attach1\", VolumeAttachArgs.builder()\n            .instanceId(instance1.id())\n            .volumeId(volumes[0].id())\n            .build());\n\n        var attach2 = new VolumeAttach(\"attach2\", VolumeAttachArgs.builder()\n            .instanceId(instance1.id())\n            .volumeId(volumes[1].id())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(attach1)\n                .build());\n\n        ctx.export(\"volumeDevices\", attachments.stream().map(element -\u003e element.device()).collect(toList()));\n    }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Using Multiattach-enabled volumes\n\nMultiattach Volumes are dependent upon your OpenStack cloud and not all\nclouds support multiattach. Multiattach volumes require a\u003cspan pulumi-lang-nodejs=\" volumeType \" pulumi-lang-dotnet=\" VolumeType \" pulumi-lang-go=\" volumeType \" pulumi-lang-python=\" volume_type \" pulumi-lang-yaml=\" volumeType \" pulumi-lang-java=\" volumeType \"\u003e volume_type \u003c/span\u003ethat has [multiattach enabled](https://docs.openstack.org/cinder/latest/admin/volume-multiattach.html#multiattach-volume-type).\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst volume1 = new openstack.blockstorage.Volume(\"volume_1\", {\n    name: \"volume_1\",\n    size: 1,\n    volumeType: \"multiattach\",\n});\nconst instance1 = new openstack.compute.Instance(\"instance_1\", {\n    name: \"instance_1\",\n    securityGroups: [\"default\"],\n});\nconst instance2 = new openstack.compute.Instance(\"instance_2\", {\n    name: \"instance_2\",\n    securityGroups: [\"default\"],\n});\nconst va1 = new openstack.compute.VolumeAttach(\"va_1\", {\n    instanceId: instance1.id,\n    volumeId: volume1.id,\n    multiattach: true,\n});\nconst va2 = new openstack.compute.VolumeAttach(\"va_2\", {\n    instanceId: instance2.id,\n    volumeId: volume1.id,\n    multiattach: true,\n}, {\n    dependsOn: [va1],\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nvolume1 = openstack.blockstorage.Volume(\"volume_1\",\n    name=\"volume_1\",\n    size=1,\n    volume_type=\"multiattach\")\ninstance1 = openstack.compute.Instance(\"instance_1\",\n    name=\"instance_1\",\n    security_groups=[\"default\"])\ninstance2 = openstack.compute.Instance(\"instance_2\",\n    name=\"instance_2\",\n    security_groups=[\"default\"])\nva1 = openstack.compute.VolumeAttach(\"va_1\",\n    instance_id=instance1.id,\n    volume_id=volume1.id,\n    multiattach=True)\nva2 = openstack.compute.VolumeAttach(\"va_2\",\n    instance_id=instance2.id,\n    volume_id=volume1.id,\n    multiattach=True,\n    opts = pulumi.ResourceOptions(depends_on=[va1]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var volume1 = new OpenStack.BlockStorage.Volume(\"volume_1\", new()\n    {\n        Name = \"volume_1\",\n        Size = 1,\n        VolumeType = \"multiattach\",\n    });\n\n    var instance1 = new OpenStack.Compute.Instance(\"instance_1\", new()\n    {\n        Name = \"instance_1\",\n        SecurityGroups = new[]\n        {\n            \"default\",\n        },\n    });\n\n    var instance2 = new OpenStack.Compute.Instance(\"instance_2\", new()\n    {\n        Name = \"instance_2\",\n        SecurityGroups = new[]\n        {\n            \"default\",\n        },\n    });\n\n    var va1 = new OpenStack.Compute.VolumeAttach(\"va_1\", new()\n    {\n        InstanceId = instance1.Id,\n        VolumeId = volume1.Id,\n        Multiattach = true,\n    });\n\n    var va2 = new OpenStack.Compute.VolumeAttach(\"va_2\", new()\n    {\n        InstanceId = instance2.Id,\n        VolumeId = volume1.Id,\n        Multiattach = true,\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            va1,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/blockstorage\"\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvolume1, err := blockstorage.NewVolume(ctx, \"volume_1\", \u0026blockstorage.VolumeArgs{\n\t\t\tName:       pulumi.String(\"volume_1\"),\n\t\t\tSize:       pulumi.Int(1),\n\t\t\tVolumeType: pulumi.String(\"multiattach\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance1, err := compute.NewInstance(ctx, \"instance_1\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"instance_1\"),\n\t\t\tSecurityGroups: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"default\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance2, err := compute.NewInstance(ctx, \"instance_2\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"instance_2\"),\n\t\t\tSecurityGroups: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"default\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tva1, err := compute.NewVolumeAttach(ctx, \"va_1\", \u0026compute.VolumeAttachArgs{\n\t\t\tInstanceId:  instance1.ID(),\n\t\t\tVolumeId:    volume1.ID(),\n\t\t\tMultiattach: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewVolumeAttach(ctx, \"va_2\", \u0026compute.VolumeAttachArgs{\n\t\t\tInstanceId:  instance2.ID(),\n\t\t\tVolumeId:    volume1.ID(),\n\t\t\tMultiattach: pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tva1,\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.openstack.blockstorage.Volume;\nimport com.pulumi.openstack.blockstorage.VolumeArgs;\nimport com.pulumi.openstack.compute.Instance;\nimport com.pulumi.openstack.compute.InstanceArgs;\nimport com.pulumi.openstack.compute.VolumeAttach;\nimport com.pulumi.openstack.compute.VolumeAttachArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var volume1 = new Volume(\"volume1\", VolumeArgs.builder()\n            .name(\"volume_1\")\n            .size(1)\n            .volumeType(\"multiattach\")\n            .build());\n\n        var instance1 = new Instance(\"instance1\", InstanceArgs.builder()\n            .name(\"instance_1\")\n            .securityGroups(\"default\")\n            .build());\n\n        var instance2 = new Instance(\"instance2\", InstanceArgs.builder()\n            .name(\"instance_2\")\n            .securityGroups(\"default\")\n            .build());\n\n        var va1 = new VolumeAttach(\"va1\", VolumeAttachArgs.builder()\n            .instanceId(instance1.id())\n            .volumeId(volume1.id())\n            .multiattach(true)\n            .build());\n\n        var va2 = new VolumeAttach(\"va2\", VolumeAttachArgs.builder()\n            .instanceId(instance2.id())\n            .volumeId(volume1.id())\n            .multiattach(true)\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(va1)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  volume1:\n    type: openstack:blockstorage:Volume\n    name: volume_1\n    properties:\n      name: volume_1\n      size: 1\n      volumeType: multiattach\n  instance1:\n    type: openstack:compute:Instance\n    name: instance_1\n    properties:\n      name: instance_1\n      securityGroups:\n        - default\n  instance2:\n    type: openstack:compute:Instance\n    name: instance_2\n    properties:\n      name: instance_2\n      securityGroups:\n        - default\n  va1:\n    type: openstack:compute:VolumeAttach\n    name: va_1\n    properties:\n      instanceId: ${instance1.id}\n      volumeId: ${volume1.id}\n      multiattach: true\n  va2:\n    type: openstack:compute:VolumeAttach\n    name: va_2\n    properties:\n      instanceId: ${instance2.id}\n      volumeId: ${volume1.id}\n      multiattach: true\n    options:\n      dependsOn:\n        - ${va1}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nIt is recommended to use \u003cspan pulumi-lang-nodejs=\"`dependsOn`\" pulumi-lang-dotnet=\"`DependsOn`\" pulumi-lang-go=\"`dependsOn`\" pulumi-lang-python=\"`depends_on`\" pulumi-lang-yaml=\"`dependsOn`\" pulumi-lang-java=\"`dependsOn`\"\u003e`depends_on`\u003c/span\u003e for the attach resources\nto enforce the volume attachments to happen one at a time.\n\n## Import\n\nVolume Attachments can be imported using the Instance ID and Volume ID\nseparated by a slash, e.g.\n\n```sh\n$ pulumi import openstack:compute/volumeAttach:VolumeAttach va_1 89c60255-9bd6-460c-822a-e2b959ede9d2/45670584-225f-46c3-b33e-6707b589b666\n```\n","properties":{"device":{"type":"string"},"instanceId":{"type":"string","description":"The ID of the Instance to attach the Volume to.\n"},"multiattach":{"type":"boolean","description":"Enable attachment of multiattach-capable volumes.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Compute client.\nA Compute client is needed to create a volume attachment. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a\nnew volume attachment.\n"},"tag":{"type":"string","description":"Add a device role tag that is applied to the volume when\nattaching it to the VM. Changing this creates a new volume attachment with\nthe new tag. Requires microversion \u003e= 2.49.\n"},"vendorOptions":{"$ref":"#/types/openstack:compute/VolumeAttachVendorOptions:VolumeAttachVendorOptions","description":"Map of additional vendor-specific options.\nSupported options are described below.\n"},"volumeId":{"type":"string","description":"The ID of the Volume to attach to an Instance.\n"}},"required":["device","instanceId","region","volumeId"],"inputProperties":{"device":{"type":"string"},"instanceId":{"type":"string","description":"The ID of the Instance to attach the Volume to.\n","willReplaceOnChanges":true},"multiattach":{"type":"boolean","description":"Enable attachment of multiattach-capable volumes.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Compute client.\nA Compute client is needed to create a volume attachment. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a\nnew volume attachment.\n","willReplaceOnChanges":true},"tag":{"type":"string","description":"Add a device role tag that is applied to the volume when\nattaching it to the VM. Changing this creates a new volume attachment with\nthe new tag. Requires microversion \u003e= 2.49.\n","willReplaceOnChanges":true},"vendorOptions":{"$ref":"#/types/openstack:compute/VolumeAttachVendorOptions:VolumeAttachVendorOptions","description":"Map of additional vendor-specific options.\nSupported options are described below.\n","willReplaceOnChanges":true},"volumeId":{"type":"string","description":"The ID of the Volume to attach to an Instance.\n","willReplaceOnChanges":true}},"requiredInputs":["instanceId","volumeId"],"stateInputs":{"description":"Input properties used for looking up and filtering VolumeAttach resources.\n","properties":{"device":{"type":"string"},"instanceId":{"type":"string","description":"The ID of the Instance to attach the Volume to.\n","willReplaceOnChanges":true},"multiattach":{"type":"boolean","description":"Enable attachment of multiattach-capable volumes.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Compute client.\nA Compute client is needed to create a volume attachment. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a\nnew volume attachment.\n","willReplaceOnChanges":true},"tag":{"type":"string","description":"Add a device role tag that is applied to the volume when\nattaching it to the VM. Changing this creates a new volume attachment with\nthe new tag. Requires microversion \u003e= 2.49.\n","willReplaceOnChanges":true},"vendorOptions":{"$ref":"#/types/openstack:compute/VolumeAttachVendorOptions:VolumeAttachVendorOptions","description":"Map of additional vendor-specific options.\nSupported options are described below.\n","willReplaceOnChanges":true},"volumeId":{"type":"string","description":"The ID of the Volume to attach to an Instance.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:containerinfra/cluster:Cluster":{"description":"Manages a V1 Magnum cluster resource within OpenStack.\n\n\u003e **Note:** All arguments including the \u003cspan pulumi-lang-nodejs=\"`kubeconfig`\" pulumi-lang-dotnet=\"`Kubeconfig`\" pulumi-lang-go=\"`kubeconfig`\" pulumi-lang-python=\"`kubeconfig`\" pulumi-lang-yaml=\"`kubeconfig`\" pulumi-lang-java=\"`kubeconfig`\"\u003e`kubeconfig`\u003c/span\u003e computed attribute will be\nstored in the raw state as plain-text. Read more about sensitive data in\nstate.\n\n## Example Usage\n\n### Create a Cluster\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst cluster1 = new openstack.containerinfra.Cluster(\"cluster_1\", {\n    name: \"cluster_1\",\n    clusterTemplateId: \"b9a45c5c-cd03-4958-82aa-b80bf93cb922\",\n    masterCount: 3,\n    nodeCount: 5,\n    keypair: \"ssh_keypair\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\ncluster1 = openstack.containerinfra.Cluster(\"cluster_1\",\n    name=\"cluster_1\",\n    cluster_template_id=\"b9a45c5c-cd03-4958-82aa-b80bf93cb922\",\n    master_count=3,\n    node_count=5,\n    keypair=\"ssh_keypair\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var cluster1 = new OpenStack.ContainerInfra.Cluster(\"cluster_1\", new()\n    {\n        Name = \"cluster_1\",\n        ClusterTemplateId = \"b9a45c5c-cd03-4958-82aa-b80bf93cb922\",\n        MasterCount = 3,\n        NodeCount = 5,\n        Keypair = \"ssh_keypair\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/containerinfra\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := containerinfra.NewCluster(ctx, \"cluster_1\", \u0026containerinfra.ClusterArgs{\n\t\t\tName:              pulumi.String(\"cluster_1\"),\n\t\t\tClusterTemplateId: pulumi.String(\"b9a45c5c-cd03-4958-82aa-b80bf93cb922\"),\n\t\t\tMasterCount:       pulumi.Int(3),\n\t\t\tNodeCount:         pulumi.Int(5),\n\t\t\tKeypair:           pulumi.String(\"ssh_keypair\"),\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.openstack.containerinfra.Cluster;\nimport com.pulumi.openstack.containerinfra.ClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 cluster1 = new Cluster(\"cluster1\", ClusterArgs.builder()\n            .name(\"cluster_1\")\n            .clusterTemplateId(\"b9a45c5c-cd03-4958-82aa-b80bf93cb922\")\n            .masterCount(3)\n            .nodeCount(5)\n            .keypair(\"ssh_keypair\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  cluster1:\n    type: openstack:containerinfra:Cluster\n    name: cluster_1\n    properties:\n      name: cluster_1\n      clusterTemplateId: b9a45c5c-cd03-4958-82aa-b80bf93cb922\n      masterCount: 3\n      nodeCount: 5\n      keypair: ssh_keypair\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Attributes reference\n\nThe following attributes are exported:\n\n* \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`project_id`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`createdAt`\" pulumi-lang-dotnet=\"`CreatedAt`\" pulumi-lang-go=\"`createdAt`\" pulumi-lang-python=\"`created_at`\" pulumi-lang-yaml=\"`createdAt`\" pulumi-lang-java=\"`createdAt`\"\u003e`created_at`\u003c/span\u003e - The time at which cluster was created.\n* \u003cspan pulumi-lang-nodejs=\"`updatedAt`\" pulumi-lang-dotnet=\"`UpdatedAt`\" pulumi-lang-go=\"`updatedAt`\" pulumi-lang-python=\"`updated_at`\" pulumi-lang-yaml=\"`updatedAt`\" pulumi-lang-java=\"`updatedAt`\"\u003e`updated_at`\u003c/span\u003e - The time at which cluster was created.\n* \u003cspan pulumi-lang-nodejs=\"`apiAddress`\" pulumi-lang-dotnet=\"`ApiAddress`\" pulumi-lang-go=\"`apiAddress`\" pulumi-lang-python=\"`api_address`\" pulumi-lang-yaml=\"`apiAddress`\" pulumi-lang-java=\"`apiAddress`\"\u003e`api_address`\u003c/span\u003e - COE API address.\n* \u003cspan pulumi-lang-nodejs=\"`coeVersion`\" pulumi-lang-dotnet=\"`CoeVersion`\" pulumi-lang-go=\"`coeVersion`\" pulumi-lang-python=\"`coe_version`\" pulumi-lang-yaml=\"`coeVersion`\" pulumi-lang-java=\"`coeVersion`\"\u003e`coe_version`\u003c/span\u003e - COE software version.\n* \u003cspan pulumi-lang-nodejs=\"`clusterTemplateId`\" pulumi-lang-dotnet=\"`ClusterTemplateId`\" pulumi-lang-go=\"`clusterTemplateId`\" pulumi-lang-python=\"`cluster_template_id`\" pulumi-lang-yaml=\"`clusterTemplateId`\" pulumi-lang-java=\"`clusterTemplateId`\"\u003e`cluster_template_id`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`containerVersion`\" pulumi-lang-dotnet=\"`ContainerVersion`\" pulumi-lang-go=\"`containerVersion`\" pulumi-lang-python=\"`container_version`\" pulumi-lang-yaml=\"`containerVersion`\" pulumi-lang-java=\"`containerVersion`\"\u003e`container_version`\u003c/span\u003e - Container software version.\n* \u003cspan pulumi-lang-nodejs=\"`createTimeout`\" pulumi-lang-dotnet=\"`CreateTimeout`\" pulumi-lang-go=\"`createTimeout`\" pulumi-lang-python=\"`create_timeout`\" pulumi-lang-yaml=\"`createTimeout`\" pulumi-lang-java=\"`createTimeout`\"\u003e`create_timeout`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`discoveryUrl`\" pulumi-lang-dotnet=\"`DiscoveryUrl`\" pulumi-lang-go=\"`discoveryUrl`\" pulumi-lang-python=\"`discovery_url`\" pulumi-lang-yaml=\"`discoveryUrl`\" pulumi-lang-java=\"`discoveryUrl`\"\u003e`discovery_url`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`dockerVolumeSize`\" pulumi-lang-dotnet=\"`DockerVolumeSize`\" pulumi-lang-go=\"`dockerVolumeSize`\" pulumi-lang-python=\"`docker_volume_size`\" pulumi-lang-yaml=\"`dockerVolumeSize`\" pulumi-lang-java=\"`dockerVolumeSize`\"\u003e`docker_volume_size`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`flavor`\" pulumi-lang-dotnet=\"`Flavor`\" pulumi-lang-go=\"`flavor`\" pulumi-lang-python=\"`flavor`\" pulumi-lang-yaml=\"`flavor`\" pulumi-lang-java=\"`flavor`\"\u003e`flavor`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`masterFlavor`\" pulumi-lang-dotnet=\"`MasterFlavor`\" pulumi-lang-go=\"`masterFlavor`\" pulumi-lang-python=\"`master_flavor`\" pulumi-lang-yaml=\"`masterFlavor`\" pulumi-lang-java=\"`masterFlavor`\"\u003e`master_flavor`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`keypair`\" pulumi-lang-dotnet=\"`Keypair`\" pulumi-lang-go=\"`keypair`\" pulumi-lang-python=\"`keypair`\" pulumi-lang-yaml=\"`keypair`\" pulumi-lang-java=\"`keypair`\"\u003e`keypair`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`labels`\" pulumi-lang-dotnet=\"`Labels`\" pulumi-lang-go=\"`labels`\" pulumi-lang-python=\"`labels`\" pulumi-lang-yaml=\"`labels`\" pulumi-lang-java=\"`labels`\"\u003e`labels`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`mergeLabels`\" pulumi-lang-dotnet=\"`MergeLabels`\" pulumi-lang-go=\"`mergeLabels`\" pulumi-lang-python=\"`merge_labels`\" pulumi-lang-yaml=\"`mergeLabels`\" pulumi-lang-java=\"`mergeLabels`\"\u003e`merge_labels`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`masterCount`\" pulumi-lang-dotnet=\"`MasterCount`\" pulumi-lang-go=\"`masterCount`\" pulumi-lang-python=\"`master_count`\" pulumi-lang-yaml=\"`masterCount`\" pulumi-lang-java=\"`masterCount`\"\u003e`master_count`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`nodeCount`\" pulumi-lang-dotnet=\"`NodeCount`\" pulumi-lang-go=\"`nodeCount`\" pulumi-lang-python=\"`node_count`\" pulumi-lang-yaml=\"`nodeCount`\" pulumi-lang-java=\"`nodeCount`\"\u003e`node_count`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`fixedNetwork`\" pulumi-lang-dotnet=\"`FixedNetwork`\" pulumi-lang-go=\"`fixedNetwork`\" pulumi-lang-python=\"`fixed_network`\" pulumi-lang-yaml=\"`fixedNetwork`\" pulumi-lang-java=\"`fixedNetwork`\"\u003e`fixed_network`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`fixedSubnet`\" pulumi-lang-dotnet=\"`FixedSubnet`\" pulumi-lang-go=\"`fixedSubnet`\" pulumi-lang-python=\"`fixed_subnet`\" pulumi-lang-yaml=\"`fixedSubnet`\" pulumi-lang-java=\"`fixedSubnet`\"\u003e`fixed_subnet`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`floatingIpEnabled`\" pulumi-lang-dotnet=\"`FloatingIpEnabled`\" pulumi-lang-go=\"`floatingIpEnabled`\" pulumi-lang-python=\"`floating_ip_enabled`\" pulumi-lang-yaml=\"`floatingIpEnabled`\" pulumi-lang-java=\"`floatingIpEnabled`\"\u003e`floating_ip_enabled`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`masterAddresses`\" pulumi-lang-dotnet=\"`MasterAddresses`\" pulumi-lang-go=\"`masterAddresses`\" pulumi-lang-python=\"`master_addresses`\" pulumi-lang-yaml=\"`masterAddresses`\" pulumi-lang-java=\"`masterAddresses`\"\u003e`master_addresses`\u003c/span\u003e - IP addresses of the master node of the cluster.\n* \u003cspan pulumi-lang-nodejs=\"`nodeAddresses`\" pulumi-lang-dotnet=\"`NodeAddresses`\" pulumi-lang-go=\"`nodeAddresses`\" pulumi-lang-python=\"`node_addresses`\" pulumi-lang-yaml=\"`nodeAddresses`\" pulumi-lang-java=\"`nodeAddresses`\"\u003e`node_addresses`\u003c/span\u003e - IP addresses of the node of the cluster.\n* \u003cspan pulumi-lang-nodejs=\"`stackId`\" pulumi-lang-dotnet=\"`StackId`\" pulumi-lang-go=\"`stackId`\" pulumi-lang-python=\"`stack_id`\" pulumi-lang-yaml=\"`stackId`\" pulumi-lang-java=\"`stackId`\"\u003e`stack_id`\u003c/span\u003e - UUID of the Orchestration service stack.\n* \u003cspan pulumi-lang-nodejs=\"`kubeconfig`\" pulumi-lang-dotnet=\"`Kubeconfig`\" pulumi-lang-go=\"`kubeconfig`\" pulumi-lang-python=\"`kubeconfig`\" pulumi-lang-yaml=\"`kubeconfig`\" pulumi-lang-java=\"`kubeconfig`\"\u003e`kubeconfig`\u003c/span\u003e - The Kubernetes cluster's credentials\n  * \u003cspan pulumi-lang-nodejs=\"`rawConfig`\" pulumi-lang-dotnet=\"`RawConfig`\" pulumi-lang-go=\"`rawConfig`\" pulumi-lang-python=\"`raw_config`\" pulumi-lang-yaml=\"`rawConfig`\" pulumi-lang-java=\"`rawConfig`\"\u003e`raw_config`\u003c/span\u003e - The raw kubeconfig file\n  * \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\"\u003e`host`\u003c/span\u003e - The cluster's API server URL\n  * \u003cspan pulumi-lang-nodejs=\"`clusterCaCertificate`\" pulumi-lang-dotnet=\"`ClusterCaCertificate`\" pulumi-lang-go=\"`clusterCaCertificate`\" pulumi-lang-python=\"`cluster_ca_certificate`\" pulumi-lang-yaml=\"`clusterCaCertificate`\" pulumi-lang-java=\"`clusterCaCertificate`\"\u003e`cluster_ca_certificate`\u003c/span\u003e - The cluster's CA certificate\n  * \u003cspan pulumi-lang-nodejs=\"`clientKey`\" pulumi-lang-dotnet=\"`ClientKey`\" pulumi-lang-go=\"`clientKey`\" pulumi-lang-python=\"`client_key`\" pulumi-lang-yaml=\"`clientKey`\" pulumi-lang-java=\"`clientKey`\"\u003e`client_key`\u003c/span\u003e - The client's RSA key\n  * \u003cspan pulumi-lang-nodejs=\"`clientCertificate`\" pulumi-lang-dotnet=\"`ClientCertificate`\" pulumi-lang-go=\"`clientCertificate`\" pulumi-lang-python=\"`client_certificate`\" pulumi-lang-yaml=\"`clientCertificate`\" pulumi-lang-java=\"`clientCertificate`\"\u003e`client_certificate`\u003c/span\u003e - The client's certificate\n\n## Import\n\nClusters can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:containerinfra/cluster:Cluster cluster_1 ce0f9463-dd25-474b-9fe8-94de63e5e42b\n```\n","properties":{"apiAddress":{"type":"string"},"clusterTemplateId":{"type":"string","description":"The UUID of the V1 Container Infra cluster\ntemplate. Changing this creates a new cluster.\n"},"coeVersion":{"type":"string"},"containerVersion":{"type":"string"},"createTimeout":{"type":"integer","description":"The timeout (in minutes) for creating the\ncluster. Changing this creates a new cluster.\n"},"createdAt":{"type":"string"},"discoveryUrl":{"type":"string","description":"The URL used for cluster node discovery.\nChanging this creates a new cluster.\n"},"dockerVolumeSize":{"type":"integer","description":"The size (in GB) of the Docker volume.\nChanging this creates a new cluster.\n"},"fixedNetwork":{"type":"string","description":"The fixed network that will be attached to the\ncluster. Changing this creates a new cluster.\n"},"fixedSubnet":{"type":"string","description":"The fixed subnet that will be attached to the\ncluster. Changing this creates a new cluster.\n"},"flavor":{"type":"string","description":"The flavor for the nodes of the cluster. Can be set via\nthe `OS_MAGNUM_FLAVOR` environment variable. Changing this creates a new\ncluster.\n"},"floatingIpEnabled":{"type":"boolean","description":"Indicates whether floating IP should be\ncreated for every cluster node. Changing this creates a new cluster.\n"},"keypair":{"type":"string","description":"The name of the Compute service SSH keypair. Changing\nthis creates a new cluster.\n"},"kubeconfig":{"type":"object","additionalProperties":{"type":"string"},"secret":true},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"The list of key value pairs representing additional\nproperties of the cluster. Changing this creates a new cluster.\n"},"masterAddresses":{"type":"array","items":{"type":"string"}},"masterCount":{"type":"integer","description":"The number of master nodes for the cluster.\nChanging this creates a new cluster.\n"},"masterFlavor":{"type":"string","description":"The flavor for the master nodes. Can be set via\nthe `OS_MAGNUM_MASTER_FLAVOR` environment variable. Changing this creates a\nnew cluster.\n"},"masterLbEnabled":{"type":"boolean","description":"Indicates whether to create a load balancer\nfor the master nodes. Changing this creates a new cluster.\n"},"mergeLabels":{"type":"boolean","description":"Indicates whether the provided labels should be\nmerged with cluster template labels. Changing this creates a new cluster.\n"},"name":{"type":"string","description":"The name of the cluster. Changing this creates a new\ncluster.\n"},"nodeAddresses":{"type":"array","items":{"type":"string"}},"nodeCount":{"type":"integer","description":"The number of nodes for the cluster.\n"},"projectId":{"type":"string","description":"The project of the cluster. Required if admin wants\nto create a cluster in another project. Changing this creates a new\ncluster.\n"},"region":{"type":"string","description":"The region in which to obtain the V1 Container Infra\nclient. A Container Infra client is needed to create a cluster. If omitted,\nthe \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\ncluster.\n"},"stackId":{"type":"string"},"updatedAt":{"type":"string"},"userId":{"type":"string","description":"The user of the cluster. Required if admin wants to\ncreate a cluster template for another user. Changing this creates a new\ncluster.\n"}},"required":["apiAddress","clusterTemplateId","coeVersion","containerVersion","createTimeout","createdAt","discoveryUrl","dockerVolumeSize","fixedNetwork","fixedSubnet","flavor","floatingIpEnabled","keypair","kubeconfig","labels","masterAddresses","masterCount","masterFlavor","masterLbEnabled","name","nodeAddresses","projectId","region","stackId","updatedAt","userId"],"inputProperties":{"clusterTemplateId":{"type":"string","description":"The UUID of the V1 Container Infra cluster\ntemplate. Changing this creates a new cluster.\n"},"createTimeout":{"type":"integer","description":"The timeout (in minutes) for creating the\ncluster. Changing this creates a new cluster.\n","willReplaceOnChanges":true},"discoveryUrl":{"type":"string","description":"The URL used for cluster node discovery.\nChanging this creates a new cluster.\n","willReplaceOnChanges":true},"dockerVolumeSize":{"type":"integer","description":"The size (in GB) of the Docker volume.\nChanging this creates a new cluster.\n","willReplaceOnChanges":true},"fixedNetwork":{"type":"string","description":"The fixed network that will be attached to the\ncluster. Changing this creates a new cluster.\n","willReplaceOnChanges":true},"fixedSubnet":{"type":"string","description":"The fixed subnet that will be attached to the\ncluster. Changing this creates a new cluster.\n","willReplaceOnChanges":true},"flavor":{"type":"string","description":"The flavor for the nodes of the cluster. Can be set via\nthe `OS_MAGNUM_FLAVOR` environment variable. Changing this creates a new\ncluster.\n","willReplaceOnChanges":true},"floatingIpEnabled":{"type":"boolean","description":"Indicates whether floating IP should be\ncreated for every cluster node. Changing this creates a new cluster.\n","willReplaceOnChanges":true},"keypair":{"type":"string","description":"The name of the Compute service SSH keypair. Changing\nthis creates a new cluster.\n","willReplaceOnChanges":true},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"The list of key value pairs representing additional\nproperties of the cluster. Changing this creates a new cluster.\n","willReplaceOnChanges":true},"masterCount":{"type":"integer","description":"The number of master nodes for the cluster.\nChanging this creates a new cluster.\n","willReplaceOnChanges":true},"masterFlavor":{"type":"string","description":"The flavor for the master nodes. Can be set via\nthe `OS_MAGNUM_MASTER_FLAVOR` environment variable. Changing this creates a\nnew cluster.\n","willReplaceOnChanges":true},"masterLbEnabled":{"type":"boolean","description":"Indicates whether to create a load balancer\nfor the master nodes. Changing this creates a new cluster.\n","willReplaceOnChanges":true},"mergeLabels":{"type":"boolean","description":"Indicates whether the provided labels should be\nmerged with cluster template labels. Changing this creates a new cluster.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"The name of the cluster. Changing this creates a new\ncluster.\n","willReplaceOnChanges":true},"nodeCount":{"type":"integer","description":"The number of nodes for the cluster.\n"},"region":{"type":"string","description":"The region in which to obtain the V1 Container Infra\nclient. A Container Infra client is needed to create a cluster. If omitted,\nthe \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\ncluster.\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering Cluster resources.\n","properties":{"apiAddress":{"type":"string"},"clusterTemplateId":{"type":"string","description":"The UUID of the V1 Container Infra cluster\ntemplate. Changing this creates a new cluster.\n"},"coeVersion":{"type":"string"},"containerVersion":{"type":"string"},"createTimeout":{"type":"integer","description":"The timeout (in minutes) for creating the\ncluster. Changing this creates a new cluster.\n","willReplaceOnChanges":true},"createdAt":{"type":"string"},"discoveryUrl":{"type":"string","description":"The URL used for cluster node discovery.\nChanging this creates a new cluster.\n","willReplaceOnChanges":true},"dockerVolumeSize":{"type":"integer","description":"The size (in GB) of the Docker volume.\nChanging this creates a new cluster.\n","willReplaceOnChanges":true},"fixedNetwork":{"type":"string","description":"The fixed network that will be attached to the\ncluster. Changing this creates a new cluster.\n","willReplaceOnChanges":true},"fixedSubnet":{"type":"string","description":"The fixed subnet that will be attached to the\ncluster. Changing this creates a new cluster.\n","willReplaceOnChanges":true},"flavor":{"type":"string","description":"The flavor for the nodes of the cluster. Can be set via\nthe `OS_MAGNUM_FLAVOR` environment variable. Changing this creates a new\ncluster.\n","willReplaceOnChanges":true},"floatingIpEnabled":{"type":"boolean","description":"Indicates whether floating IP should be\ncreated for every cluster node. Changing this creates a new cluster.\n","willReplaceOnChanges":true},"keypair":{"type":"string","description":"The name of the Compute service SSH keypair. Changing\nthis creates a new cluster.\n","willReplaceOnChanges":true},"kubeconfig":{"type":"object","additionalProperties":{"type":"string"},"secret":true},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"The list of key value pairs representing additional\nproperties of the cluster. Changing this creates a new cluster.\n","willReplaceOnChanges":true},"masterAddresses":{"type":"array","items":{"type":"string"}},"masterCount":{"type":"integer","description":"The number of master nodes for the cluster.\nChanging this creates a new cluster.\n","willReplaceOnChanges":true},"masterFlavor":{"type":"string","description":"The flavor for the master nodes. Can be set via\nthe `OS_MAGNUM_MASTER_FLAVOR` environment variable. Changing this creates a\nnew cluster.\n","willReplaceOnChanges":true},"masterLbEnabled":{"type":"boolean","description":"Indicates whether to create a load balancer\nfor the master nodes. Changing this creates a new cluster.\n","willReplaceOnChanges":true},"mergeLabels":{"type":"boolean","description":"Indicates whether the provided labels should be\nmerged with cluster template labels. Changing this creates a new cluster.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"The name of the cluster. Changing this creates a new\ncluster.\n","willReplaceOnChanges":true},"nodeAddresses":{"type":"array","items":{"type":"string"}},"nodeCount":{"type":"integer","description":"The number of nodes for the cluster.\n"},"projectId":{"type":"string","description":"The project of the cluster. Required if admin wants\nto create a cluster in another project. Changing this creates a new\ncluster.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V1 Container Infra\nclient. A Container Infra client is needed to create a cluster. If omitted,\nthe \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\ncluster.\n","willReplaceOnChanges":true},"stackId":{"type":"string"},"updatedAt":{"type":"string"},"userId":{"type":"string","description":"The user of the cluster. Required if admin wants to\ncreate a cluster template for another user. Changing this creates a new\ncluster.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:containerinfra/clusterTemplate:ClusterTemplate":{"description":"Manages a V1 Magnum cluster template resource within OpenStack.\n\n## Example Usage\n\n### Create a Cluster template\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst clustertemplate1 = new openstack.containerinfra.ClusterTemplate(\"clustertemplate_1\", {\n    name: \"clustertemplate_1\",\n    image: \"Fedora-Atomic-27\",\n    coe: \"kubernetes\",\n    flavor: \"m1.small\",\n    masterFlavor: \"m1.medium\",\n    dnsNameserver: \"1.1.1.1\",\n    dockerStorageDriver: \"devicemapper\",\n    dockerVolumeSize: 10,\n    volumeDriver: \"cinder\",\n    networkDriver: \"flannel\",\n    serverType: \"vm\",\n    masterLbEnabled: true,\n    floatingIpEnabled: false,\n    labels: {\n        kube_tag: \"1.11.1\",\n        kube_dashboard_enabled: \"true\",\n        prometheus_monitoring: \"true\",\n        influx_grafana_dashboard_enabled: \"true\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nclustertemplate1 = openstack.containerinfra.ClusterTemplate(\"clustertemplate_1\",\n    name=\"clustertemplate_1\",\n    image=\"Fedora-Atomic-27\",\n    coe=\"kubernetes\",\n    flavor=\"m1.small\",\n    master_flavor=\"m1.medium\",\n    dns_nameserver=\"1.1.1.1\",\n    docker_storage_driver=\"devicemapper\",\n    docker_volume_size=10,\n    volume_driver=\"cinder\",\n    network_driver=\"flannel\",\n    server_type=\"vm\",\n    master_lb_enabled=True,\n    floating_ip_enabled=False,\n    labels={\n        \"kube_tag\": \"1.11.1\",\n        \"kube_dashboard_enabled\": \"true\",\n        \"prometheus_monitoring\": \"true\",\n        \"influx_grafana_dashboard_enabled\": \"true\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var clustertemplate1 = new OpenStack.ContainerInfra.ClusterTemplate(\"clustertemplate_1\", new()\n    {\n        Name = \"clustertemplate_1\",\n        Image = \"Fedora-Atomic-27\",\n        Coe = \"kubernetes\",\n        Flavor = \"m1.small\",\n        MasterFlavor = \"m1.medium\",\n        DnsNameserver = \"1.1.1.1\",\n        DockerStorageDriver = \"devicemapper\",\n        DockerVolumeSize = 10,\n        VolumeDriver = \"cinder\",\n        NetworkDriver = \"flannel\",\n        ServerType = \"vm\",\n        MasterLbEnabled = true,\n        FloatingIpEnabled = false,\n        Labels = \n        {\n            { \"kube_tag\", \"1.11.1\" },\n            { \"kube_dashboard_enabled\", \"true\" },\n            { \"prometheus_monitoring\", \"true\" },\n            { \"influx_grafana_dashboard_enabled\", \"true\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/containerinfra\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := containerinfra.NewClusterTemplate(ctx, \"clustertemplate_1\", \u0026containerinfra.ClusterTemplateArgs{\n\t\t\tName:                pulumi.String(\"clustertemplate_1\"),\n\t\t\tImage:               pulumi.String(\"Fedora-Atomic-27\"),\n\t\t\tCoe:                 pulumi.String(\"kubernetes\"),\n\t\t\tFlavor:              pulumi.String(\"m1.small\"),\n\t\t\tMasterFlavor:        pulumi.String(\"m1.medium\"),\n\t\t\tDnsNameserver:       pulumi.String(\"1.1.1.1\"),\n\t\t\tDockerStorageDriver: pulumi.String(\"devicemapper\"),\n\t\t\tDockerVolumeSize:    pulumi.Int(10),\n\t\t\tVolumeDriver:        pulumi.String(\"cinder\"),\n\t\t\tNetworkDriver:       pulumi.String(\"flannel\"),\n\t\t\tServerType:          pulumi.String(\"vm\"),\n\t\t\tMasterLbEnabled:     pulumi.Bool(true),\n\t\t\tFloatingIpEnabled:   pulumi.Bool(false),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"kube_tag\":                         pulumi.String(\"1.11.1\"),\n\t\t\t\t\"kube_dashboard_enabled\":           pulumi.String(\"true\"),\n\t\t\t\t\"prometheus_monitoring\":            pulumi.String(\"true\"),\n\t\t\t\t\"influx_grafana_dashboard_enabled\": pulumi.String(\"true\"),\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.openstack.containerinfra.ClusterTemplate;\nimport com.pulumi.openstack.containerinfra.ClusterTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 clustertemplate1 = new ClusterTemplate(\"clustertemplate1\", ClusterTemplateArgs.builder()\n            .name(\"clustertemplate_1\")\n            .image(\"Fedora-Atomic-27\")\n            .coe(\"kubernetes\")\n            .flavor(\"m1.small\")\n            .masterFlavor(\"m1.medium\")\n            .dnsNameserver(\"1.1.1.1\")\n            .dockerStorageDriver(\"devicemapper\")\n            .dockerVolumeSize(10)\n            .volumeDriver(\"cinder\")\n            .networkDriver(\"flannel\")\n            .serverType(\"vm\")\n            .masterLbEnabled(true)\n            .floatingIpEnabled(false)\n            .labels(Map.ofEntries(\n                Map.entry(\"kube_tag\", \"1.11.1\"),\n                Map.entry(\"kube_dashboard_enabled\", \"true\"),\n                Map.entry(\"prometheus_monitoring\", \"true\"),\n                Map.entry(\"influx_grafana_dashboard_enabled\", \"true\")\n            ))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  clustertemplate1:\n    type: openstack:containerinfra:ClusterTemplate\n    name: clustertemplate_1\n    properties:\n      name: clustertemplate_1\n      image: Fedora-Atomic-27\n      coe: kubernetes\n      flavor: m1.small\n      masterFlavor: m1.medium\n      dnsNameserver: 1.1.1.1\n      dockerStorageDriver: devicemapper\n      dockerVolumeSize: 10\n      volumeDriver: cinder\n      networkDriver: flannel\n      serverType: vm\n      masterLbEnabled: true\n      floatingIpEnabled: false\n      labels:\n        kube_tag: 1.11.1\n        kube_dashboard_enabled: 'true'\n        prometheus_monitoring: 'true'\n        influx_grafana_dashboard_enabled: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Attributes reference\n\nThe following attributes are exported:\n\n* \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`project_id`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`createdAt`\" pulumi-lang-dotnet=\"`CreatedAt`\" pulumi-lang-go=\"`createdAt`\" pulumi-lang-python=\"`created_at`\" pulumi-lang-yaml=\"`createdAt`\" pulumi-lang-java=\"`createdAt`\"\u003e`created_at`\u003c/span\u003e - The time at which cluster template was created.\n* \u003cspan pulumi-lang-nodejs=\"`updatedAt`\" pulumi-lang-dotnet=\"`UpdatedAt`\" pulumi-lang-go=\"`updatedAt`\" pulumi-lang-python=\"`updated_at`\" pulumi-lang-yaml=\"`updatedAt`\" pulumi-lang-java=\"`updatedAt`\"\u003e`updated_at`\u003c/span\u003e - The time at which cluster template was created.\n* \u003cspan pulumi-lang-nodejs=\"`apiserverPort`\" pulumi-lang-dotnet=\"`ApiserverPort`\" pulumi-lang-go=\"`apiserverPort`\" pulumi-lang-python=\"`apiserver_port`\" pulumi-lang-yaml=\"`apiserverPort`\" pulumi-lang-java=\"`apiserverPort`\"\u003e`apiserver_port`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`coe`\" pulumi-lang-dotnet=\"`Coe`\" pulumi-lang-go=\"`coe`\" pulumi-lang-python=\"`coe`\" pulumi-lang-yaml=\"`coe`\" pulumi-lang-java=\"`coe`\"\u003e`coe`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`clusterDistro`\" pulumi-lang-dotnet=\"`ClusterDistro`\" pulumi-lang-go=\"`clusterDistro`\" pulumi-lang-python=\"`cluster_distro`\" pulumi-lang-yaml=\"`clusterDistro`\" pulumi-lang-java=\"`clusterDistro`\"\u003e`cluster_distro`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`dnsNameserver`\" pulumi-lang-dotnet=\"`DnsNameserver`\" pulumi-lang-go=\"`dnsNameserver`\" pulumi-lang-python=\"`dns_nameserver`\" pulumi-lang-yaml=\"`dnsNameserver`\" pulumi-lang-java=\"`dnsNameserver`\"\u003e`dns_nameserver`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`dockerStorageDriver`\" pulumi-lang-dotnet=\"`DockerStorageDriver`\" pulumi-lang-go=\"`dockerStorageDriver`\" pulumi-lang-python=\"`docker_storage_driver`\" pulumi-lang-yaml=\"`dockerStorageDriver`\" pulumi-lang-java=\"`dockerStorageDriver`\"\u003e`docker_storage_driver`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`dockerVolumeSize`\" pulumi-lang-dotnet=\"`DockerVolumeSize`\" pulumi-lang-go=\"`dockerVolumeSize`\" pulumi-lang-python=\"`docker_volume_size`\" pulumi-lang-yaml=\"`dockerVolumeSize`\" pulumi-lang-java=\"`dockerVolumeSize`\"\u003e`docker_volume_size`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`externalNetworkId`\" pulumi-lang-dotnet=\"`ExternalNetworkId`\" pulumi-lang-go=\"`externalNetworkId`\" pulumi-lang-python=\"`external_network_id`\" pulumi-lang-yaml=\"`externalNetworkId`\" pulumi-lang-java=\"`externalNetworkId`\"\u003e`external_network_id`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`fixedNetwork`\" pulumi-lang-dotnet=\"`FixedNetwork`\" pulumi-lang-go=\"`fixedNetwork`\" pulumi-lang-python=\"`fixed_network`\" pulumi-lang-yaml=\"`fixedNetwork`\" pulumi-lang-java=\"`fixedNetwork`\"\u003e`fixed_network`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`fixedSubnet`\" pulumi-lang-dotnet=\"`FixedSubnet`\" pulumi-lang-go=\"`fixedSubnet`\" pulumi-lang-python=\"`fixed_subnet`\" pulumi-lang-yaml=\"`fixedSubnet`\" pulumi-lang-java=\"`fixedSubnet`\"\u003e`fixed_subnet`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`flavor`\" pulumi-lang-dotnet=\"`Flavor`\" pulumi-lang-go=\"`flavor`\" pulumi-lang-python=\"`flavor`\" pulumi-lang-yaml=\"`flavor`\" pulumi-lang-java=\"`flavor`\"\u003e`flavor`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`masterFlavor`\" pulumi-lang-dotnet=\"`MasterFlavor`\" pulumi-lang-go=\"`masterFlavor`\" pulumi-lang-python=\"`master_flavor`\" pulumi-lang-yaml=\"`masterFlavor`\" pulumi-lang-java=\"`masterFlavor`\"\u003e`master_flavor`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`floatingIpEnabled`\" pulumi-lang-dotnet=\"`FloatingIpEnabled`\" pulumi-lang-go=\"`floatingIpEnabled`\" pulumi-lang-python=\"`floating_ip_enabled`\" pulumi-lang-yaml=\"`floatingIpEnabled`\" pulumi-lang-java=\"`floatingIpEnabled`\"\u003e`floating_ip_enabled`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`httpProxy`\" pulumi-lang-dotnet=\"`HttpProxy`\" pulumi-lang-go=\"`httpProxy`\" pulumi-lang-python=\"`http_proxy`\" pulumi-lang-yaml=\"`httpProxy`\" pulumi-lang-java=\"`httpProxy`\"\u003e`http_proxy`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`httpsProxy`\" pulumi-lang-dotnet=\"`HttpsProxy`\" pulumi-lang-go=\"`httpsProxy`\" pulumi-lang-python=\"`https_proxy`\" pulumi-lang-yaml=\"`httpsProxy`\" pulumi-lang-java=\"`httpsProxy`\"\u003e`https_proxy`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`insecureRegistry`\" pulumi-lang-dotnet=\"`InsecureRegistry`\" pulumi-lang-go=\"`insecureRegistry`\" pulumi-lang-python=\"`insecure_registry`\" pulumi-lang-yaml=\"`insecureRegistry`\" pulumi-lang-java=\"`insecureRegistry`\"\u003e`insecure_registry`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`keypairId`\" pulumi-lang-dotnet=\"`KeypairId`\" pulumi-lang-go=\"`keypairId`\" pulumi-lang-python=\"`keypair_id`\" pulumi-lang-yaml=\"`keypairId`\" pulumi-lang-java=\"`keypairId`\"\u003e`keypair_id`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`labels`\" pulumi-lang-dotnet=\"`Labels`\" pulumi-lang-go=\"`labels`\" pulumi-lang-python=\"`labels`\" pulumi-lang-yaml=\"`labels`\" pulumi-lang-java=\"`labels`\"\u003e`labels`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`links`\" pulumi-lang-dotnet=\"`Links`\" pulumi-lang-go=\"`links`\" pulumi-lang-python=\"`links`\" pulumi-lang-yaml=\"`links`\" pulumi-lang-java=\"`links`\"\u003e`links`\u003c/span\u003e - A list containing associated cluster template links.\n* \u003cspan pulumi-lang-nodejs=\"`masterLbEnabled`\" pulumi-lang-dotnet=\"`MasterLbEnabled`\" pulumi-lang-go=\"`masterLbEnabled`\" pulumi-lang-python=\"`master_lb_enabled`\" pulumi-lang-yaml=\"`masterLbEnabled`\" pulumi-lang-java=\"`masterLbEnabled`\"\u003e`master_lb_enabled`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`networkDriver`\" pulumi-lang-dotnet=\"`NetworkDriver`\" pulumi-lang-go=\"`networkDriver`\" pulumi-lang-python=\"`network_driver`\" pulumi-lang-yaml=\"`networkDriver`\" pulumi-lang-java=\"`networkDriver`\"\u003e`network_driver`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`noProxy`\" pulumi-lang-dotnet=\"`NoProxy`\" pulumi-lang-go=\"`noProxy`\" pulumi-lang-python=\"`no_proxy`\" pulumi-lang-yaml=\"`noProxy`\" pulumi-lang-java=\"`noProxy`\"\u003e`no_proxy`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`public`\" pulumi-lang-dotnet=\"`Public`\" pulumi-lang-go=\"`public`\" pulumi-lang-python=\"`public`\" pulumi-lang-yaml=\"`public`\" pulumi-lang-java=\"`public`\"\u003e`public`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`registryEnabled`\" pulumi-lang-dotnet=\"`RegistryEnabled`\" pulumi-lang-go=\"`registryEnabled`\" pulumi-lang-python=\"`registry_enabled`\" pulumi-lang-yaml=\"`registryEnabled`\" pulumi-lang-java=\"`registryEnabled`\"\u003e`registry_enabled`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`serverType`\" pulumi-lang-dotnet=\"`ServerType`\" pulumi-lang-go=\"`serverType`\" pulumi-lang-python=\"`server_type`\" pulumi-lang-yaml=\"`serverType`\" pulumi-lang-java=\"`serverType`\"\u003e`server_type`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`tlsDisabled`\" pulumi-lang-dotnet=\"`TlsDisabled`\" pulumi-lang-go=\"`tlsDisabled`\" pulumi-lang-python=\"`tls_disabled`\" pulumi-lang-yaml=\"`tlsDisabled`\" pulumi-lang-java=\"`tlsDisabled`\"\u003e`tls_disabled`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`volumeDriver`\" pulumi-lang-dotnet=\"`VolumeDriver`\" pulumi-lang-go=\"`volumeDriver`\" pulumi-lang-python=\"`volume_driver`\" pulumi-lang-yaml=\"`volumeDriver`\" pulumi-lang-java=\"`volumeDriver`\"\u003e`volume_driver`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`hidden`\" pulumi-lang-dotnet=\"`Hidden`\" pulumi-lang-go=\"`hidden`\" pulumi-lang-python=\"`hidden`\" pulumi-lang-yaml=\"`hidden`\" pulumi-lang-java=\"`hidden`\"\u003e`hidden`\u003c/span\u003e - See Argument Reference above.\n\n## Import\n\nCluster templates can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:containerinfra/clusterTemplate:ClusterTemplate clustertemplate_1 b9a45c5c-cd03-4958-82aa-b80bf93cb922\n```\n","properties":{"apiserverPort":{"type":"integer","description":"The API server port for the Container\nOrchestration Engine for this cluster template. Changing this updates the\nAPI server port of the existing cluster template.\n"},"clusterDistro":{"type":"string","description":"The distro for the cluster (fedora-atomic,\ncoreos, etc.). Changing this updates the cluster distro of the existing\ncluster template.\n"},"coe":{"type":"string","description":"The Container Orchestration Engine for this cluster\ntemplate. Changing this updates the engine of the existing cluster\ntemplate.\n"},"createdAt":{"type":"string"},"dnsNameserver":{"type":"string","description":"Address of the DNS nameserver that is used in\nnodes of the cluster. Changing this updates the DNS nameserver of the\nexisting cluster template.\n"},"dockerStorageDriver":{"type":"string","description":"Docker storage driver. Changing this\nupdates the Docker storage driver of the existing cluster template.\n"},"dockerVolumeSize":{"type":"integer","description":"The size (in GB) of the Docker volume.\nChanging this updates the Docker volume size of the existing cluster\ntemplate.\n"},"externalNetworkId":{"type":"string","description":"The ID of the external network that will\nbe used for the cluster. Changing this updates the external network ID of\nthe existing cluster template.\n"},"fixedNetwork":{"type":"string","description":"The fixed network that will be attached to the\ncluster. Changing this updates the fixed network of the existing cluster\ntemplate.\n"},"fixedSubnet":{"type":"string","description":"The fixed subnet that will be attached to the\ncluster. Changing this updates the fixed subnet of the existing cluster\ntemplate.\n"},"flavor":{"type":"string","description":"The flavor for the nodes of the cluster. Can be set via\nthe `OS_MAGNUM_FLAVOR` environment variable. Changing this updates the\nflavor of the existing cluster template.\n"},"floatingIpEnabled":{"type":"boolean","description":"Indicates whether created cluster should\ncreate floating IP for every node or not. Changing this updates the\nfloating IP enabled attribute of the existing cluster template.\n"},"hidden":{"type":"boolean","description":"Indicates whether the ClusterTemplate is hidden or not.\nChanging this updates the hidden attribute of the existing cluster\ntemplate.\n"},"httpProxy":{"type":"string","description":"The address of a proxy for receiving all HTTP\nrequests and relay them. Changing this updates the HTTP proxy address of\nthe existing cluster template.\n"},"httpsProxy":{"type":"string","description":"The address of a proxy for receiving all HTTPS\nrequests and relay them. Changing this updates the HTTPS proxy address of\nthe existing cluster template.\n"},"image":{"type":"string","description":"The reference to an image that is used for nodes of the\ncluster. Can be set via the `OS_MAGNUM_IMAGE` environment variable.\nChanging this updates the image attribute of the existing cluster template.\n"},"insecureRegistry":{"type":"string","description":"The insecure registry URL for the cluster\ntemplate. Changing this updates the insecure registry attribute of the\nexisting cluster template.\n"},"keypairId":{"type":"string","description":"The name of the Compute service SSH keypair.\nChanging this updates the keypair of the existing cluster template.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"The list of key value pairs representing additional\nproperties of the cluster template. Changing this updates the labels of the\nexisting cluster template.\n"},"masterFlavor":{"type":"string","description":"The flavor for the master nodes. Can be set via\nthe `OS_MAGNUM_MASTER_FLAVOR` environment variable. Changing this updates\nthe master flavor of the existing cluster template.\n"},"masterLbEnabled":{"type":"boolean","description":"Indicates whether created cluster should\nhas a loadbalancer for master nodes or not. Changing this updates the\nattribute of the existing cluster template.\n"},"name":{"type":"string","description":"The name of the cluster template. Changing this updates\nthe name of the existing cluster template.\n"},"networkDriver":{"type":"string","description":"The name of the driver for the container\nnetwork. Changing this updates the network driver of the existing cluster\ntemplate.\n"},"noProxy":{"type":"string","description":"A comma-separated list of IP addresses that shouldn't\nbe used in the cluster. Changing this updates the no proxy list of the\nexisting cluster template.\n"},"projectId":{"type":"string","description":"The project of the cluster template. Required if\nadmin wants to create a cluster template in another project. Changing this\ncreates a new cluster template.\n"},"public":{"type":"boolean","description":"Indicates whether cluster template should be public.\nChanging this updates the public attribute of the existing cluster\ntemplate.\n"},"region":{"type":"string","description":"The region in which to obtain the V1 Container Infra\nclient. A Container Infra client is needed to create a cluster template. If\nomitted,the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new cluster template.\n"},"registryEnabled":{"type":"boolean","description":"Indicates whether Docker registry is enabled\nin the cluster. Changing this updates the registry enabled attribute of the\nexisting cluster template.\n"},"serverType":{"type":"string","description":"The server type for the cluster template. Changing\nthis updates the server type of the existing cluster template.\n"},"tlsDisabled":{"type":"boolean","description":"Indicates whether the TLS should be disabled in\nthe cluster. Changing this updates the attribute of the existing cluster.\n"},"updatedAt":{"type":"string"},"userId":{"type":"string","description":"The user of the cluster template. Required if admin\nwants to create a cluster template for another user. Changing this creates\na new cluster template.\n"},"volumeDriver":{"type":"string","description":"The name of the driver that is used for the\nvolumes of the cluster nodes. Changing this updates the volume driver of\nthe existing cluster template.\n"}},"required":["clusterDistro","coe","createdAt","image","name","networkDriver","projectId","region","serverType","updatedAt","userId"],"inputProperties":{"apiserverPort":{"type":"integer","description":"The API server port for the Container\nOrchestration Engine for this cluster template. Changing this updates the\nAPI server port of the existing cluster template.\n"},"clusterDistro":{"type":"string","description":"The distro for the cluster (fedora-atomic,\ncoreos, etc.). Changing this updates the cluster distro of the existing\ncluster template.\n"},"coe":{"type":"string","description":"The Container Orchestration Engine for this cluster\ntemplate. Changing this updates the engine of the existing cluster\ntemplate.\n"},"dnsNameserver":{"type":"string","description":"Address of the DNS nameserver that is used in\nnodes of the cluster. Changing this updates the DNS nameserver of the\nexisting cluster template.\n"},"dockerStorageDriver":{"type":"string","description":"Docker storage driver. Changing this\nupdates the Docker storage driver of the existing cluster template.\n"},"dockerVolumeSize":{"type":"integer","description":"The size (in GB) of the Docker volume.\nChanging this updates the Docker volume size of the existing cluster\ntemplate.\n"},"externalNetworkId":{"type":"string","description":"The ID of the external network that will\nbe used for the cluster. Changing this updates the external network ID of\nthe existing cluster template.\n"},"fixedNetwork":{"type":"string","description":"The fixed network that will be attached to the\ncluster. Changing this updates the fixed network of the existing cluster\ntemplate.\n"},"fixedSubnet":{"type":"string","description":"The fixed subnet that will be attached to the\ncluster. Changing this updates the fixed subnet of the existing cluster\ntemplate.\n"},"flavor":{"type":"string","description":"The flavor for the nodes of the cluster. Can be set via\nthe `OS_MAGNUM_FLAVOR` environment variable. Changing this updates the\nflavor of the existing cluster template.\n"},"floatingIpEnabled":{"type":"boolean","description":"Indicates whether created cluster should\ncreate floating IP for every node or not. Changing this updates the\nfloating IP enabled attribute of the existing cluster template.\n"},"hidden":{"type":"boolean","description":"Indicates whether the ClusterTemplate is hidden or not.\nChanging this updates the hidden attribute of the existing cluster\ntemplate.\n"},"httpProxy":{"type":"string","description":"The address of a proxy for receiving all HTTP\nrequests and relay them. Changing this updates the HTTP proxy address of\nthe existing cluster template.\n"},"httpsProxy":{"type":"string","description":"The address of a proxy for receiving all HTTPS\nrequests and relay them. Changing this updates the HTTPS proxy address of\nthe existing cluster template.\n"},"image":{"type":"string","description":"The reference to an image that is used for nodes of the\ncluster. Can be set via the `OS_MAGNUM_IMAGE` environment variable.\nChanging this updates the image attribute of the existing cluster template.\n"},"insecureRegistry":{"type":"string","description":"The insecure registry URL for the cluster\ntemplate. Changing this updates the insecure registry attribute of the\nexisting cluster template.\n"},"keypairId":{"type":"string","description":"The name of the Compute service SSH keypair.\nChanging this updates the keypair of the existing cluster template.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"The list of key value pairs representing additional\nproperties of the cluster template. Changing this updates the labels of the\nexisting cluster template.\n"},"masterFlavor":{"type":"string","description":"The flavor for the master nodes. Can be set via\nthe `OS_MAGNUM_MASTER_FLAVOR` environment variable. Changing this updates\nthe master flavor of the existing cluster template.\n"},"masterLbEnabled":{"type":"boolean","description":"Indicates whether created cluster should\nhas a loadbalancer for master nodes or not. Changing this updates the\nattribute of the existing cluster template.\n"},"name":{"type":"string","description":"The name of the cluster template. Changing this updates\nthe name of the existing cluster template.\n"},"networkDriver":{"type":"string","description":"The name of the driver for the container\nnetwork. Changing this updates the network driver of the existing cluster\ntemplate.\n"},"noProxy":{"type":"string","description":"A comma-separated list of IP addresses that shouldn't\nbe used in the cluster. Changing this updates the no proxy list of the\nexisting cluster template.\n"},"public":{"type":"boolean","description":"Indicates whether cluster template should be public.\nChanging this updates the public attribute of the existing cluster\ntemplate.\n"},"region":{"type":"string","description":"The region in which to obtain the V1 Container Infra\nclient. A Container Infra client is needed to create a cluster template. If\nomitted,the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new cluster template.\n","willReplaceOnChanges":true},"registryEnabled":{"type":"boolean","description":"Indicates whether Docker registry is enabled\nin the cluster. Changing this updates the registry enabled attribute of the\nexisting cluster template.\n"},"serverType":{"type":"string","description":"The server type for the cluster template. Changing\nthis updates the server type of the existing cluster template.\n"},"tlsDisabled":{"type":"boolean","description":"Indicates whether the TLS should be disabled in\nthe cluster. Changing this updates the attribute of the existing cluster.\n"},"volumeDriver":{"type":"string","description":"The name of the driver that is used for the\nvolumes of the cluster nodes. Changing this updates the volume driver of\nthe existing cluster template.\n"}},"requiredInputs":["coe"],"stateInputs":{"description":"Input properties used for looking up and filtering ClusterTemplate resources.\n","properties":{"apiserverPort":{"type":"integer","description":"The API server port for the Container\nOrchestration Engine for this cluster template. Changing this updates the\nAPI server port of the existing cluster template.\n"},"clusterDistro":{"type":"string","description":"The distro for the cluster (fedora-atomic,\ncoreos, etc.). Changing this updates the cluster distro of the existing\ncluster template.\n"},"coe":{"type":"string","description":"The Container Orchestration Engine for this cluster\ntemplate. Changing this updates the engine of the existing cluster\ntemplate.\n"},"createdAt":{"type":"string"},"dnsNameserver":{"type":"string","description":"Address of the DNS nameserver that is used in\nnodes of the cluster. Changing this updates the DNS nameserver of the\nexisting cluster template.\n"},"dockerStorageDriver":{"type":"string","description":"Docker storage driver. Changing this\nupdates the Docker storage driver of the existing cluster template.\n"},"dockerVolumeSize":{"type":"integer","description":"The size (in GB) of the Docker volume.\nChanging this updates the Docker volume size of the existing cluster\ntemplate.\n"},"externalNetworkId":{"type":"string","description":"The ID of the external network that will\nbe used for the cluster. Changing this updates the external network ID of\nthe existing cluster template.\n"},"fixedNetwork":{"type":"string","description":"The fixed network that will be attached to the\ncluster. Changing this updates the fixed network of the existing cluster\ntemplate.\n"},"fixedSubnet":{"type":"string","description":"The fixed subnet that will be attached to the\ncluster. Changing this updates the fixed subnet of the existing cluster\ntemplate.\n"},"flavor":{"type":"string","description":"The flavor for the nodes of the cluster. Can be set via\nthe `OS_MAGNUM_FLAVOR` environment variable. Changing this updates the\nflavor of the existing cluster template.\n"},"floatingIpEnabled":{"type":"boolean","description":"Indicates whether created cluster should\ncreate floating IP for every node or not. Changing this updates the\nfloating IP enabled attribute of the existing cluster template.\n"},"hidden":{"type":"boolean","description":"Indicates whether the ClusterTemplate is hidden or not.\nChanging this updates the hidden attribute of the existing cluster\ntemplate.\n"},"httpProxy":{"type":"string","description":"The address of a proxy for receiving all HTTP\nrequests and relay them. Changing this updates the HTTP proxy address of\nthe existing cluster template.\n"},"httpsProxy":{"type":"string","description":"The address of a proxy for receiving all HTTPS\nrequests and relay them. Changing this updates the HTTPS proxy address of\nthe existing cluster template.\n"},"image":{"type":"string","description":"The reference to an image that is used for nodes of the\ncluster. Can be set via the `OS_MAGNUM_IMAGE` environment variable.\nChanging this updates the image attribute of the existing cluster template.\n"},"insecureRegistry":{"type":"string","description":"The insecure registry URL for the cluster\ntemplate. Changing this updates the insecure registry attribute of the\nexisting cluster template.\n"},"keypairId":{"type":"string","description":"The name of the Compute service SSH keypair.\nChanging this updates the keypair of the existing cluster template.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"The list of key value pairs representing additional\nproperties of the cluster template. Changing this updates the labels of the\nexisting cluster template.\n"},"masterFlavor":{"type":"string","description":"The flavor for the master nodes. Can be set via\nthe `OS_MAGNUM_MASTER_FLAVOR` environment variable. Changing this updates\nthe master flavor of the existing cluster template.\n"},"masterLbEnabled":{"type":"boolean","description":"Indicates whether created cluster should\nhas a loadbalancer for master nodes or not. Changing this updates the\nattribute of the existing cluster template.\n"},"name":{"type":"string","description":"The name of the cluster template. Changing this updates\nthe name of the existing cluster template.\n"},"networkDriver":{"type":"string","description":"The name of the driver for the container\nnetwork. Changing this updates the network driver of the existing cluster\ntemplate.\n"},"noProxy":{"type":"string","description":"A comma-separated list of IP addresses that shouldn't\nbe used in the cluster. Changing this updates the no proxy list of the\nexisting cluster template.\n"},"projectId":{"type":"string","description":"The project of the cluster template. Required if\nadmin wants to create a cluster template in another project. Changing this\ncreates a new cluster template.\n","willReplaceOnChanges":true},"public":{"type":"boolean","description":"Indicates whether cluster template should be public.\nChanging this updates the public attribute of the existing cluster\ntemplate.\n"},"region":{"type":"string","description":"The region in which to obtain the V1 Container Infra\nclient. A Container Infra client is needed to create a cluster template. If\nomitted,the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new cluster template.\n","willReplaceOnChanges":true},"registryEnabled":{"type":"boolean","description":"Indicates whether Docker registry is enabled\nin the cluster. Changing this updates the registry enabled attribute of the\nexisting cluster template.\n"},"serverType":{"type":"string","description":"The server type for the cluster template. Changing\nthis updates the server type of the existing cluster template.\n"},"tlsDisabled":{"type":"boolean","description":"Indicates whether the TLS should be disabled in\nthe cluster. Changing this updates the attribute of the existing cluster.\n"},"updatedAt":{"type":"string"},"userId":{"type":"string","description":"The user of the cluster template. Required if admin\nwants to create a cluster template for another user. Changing this creates\na new cluster template.\n","willReplaceOnChanges":true},"volumeDriver":{"type":"string","description":"The name of the driver that is used for the\nvolumes of the cluster nodes. Changing this updates the volume driver of\nthe existing cluster template.\n"}},"type":"object"}},"openstack:containerinfra/nodeGroup:NodeGroup":{"description":"Manages a V1 Magnum node group resource within OpenStack.\n\n## Example Usage\n\n### Create a Nodegroup\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst nodegroup1 = new openstack.containerinfra.NodeGroup(\"nodegroup_1\", {\n    name: \"nodegroup_1\",\n    clusterId: \"b9a45c5c-cd03-4958-82aa-b80bf93cb922\",\n    nodeCount: 5,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nnodegroup1 = openstack.containerinfra.NodeGroup(\"nodegroup_1\",\n    name=\"nodegroup_1\",\n    cluster_id=\"b9a45c5c-cd03-4958-82aa-b80bf93cb922\",\n    node_count=5)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var nodegroup1 = new OpenStack.ContainerInfra.NodeGroup(\"nodegroup_1\", new()\n    {\n        Name = \"nodegroup_1\",\n        ClusterId = \"b9a45c5c-cd03-4958-82aa-b80bf93cb922\",\n        NodeCount = 5,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/containerinfra\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := containerinfra.NewNodeGroup(ctx, \"nodegroup_1\", \u0026containerinfra.NodeGroupArgs{\n\t\t\tName:      pulumi.String(\"nodegroup_1\"),\n\t\t\tClusterId: pulumi.String(\"b9a45c5c-cd03-4958-82aa-b80bf93cb922\"),\n\t\t\tNodeCount: pulumi.Int(5),\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.openstack.containerinfra.NodeGroup;\nimport com.pulumi.openstack.containerinfra.NodeGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 nodegroup1 = new NodeGroup(\"nodegroup1\", NodeGroupArgs.builder()\n            .name(\"nodegroup_1\")\n            .clusterId(\"b9a45c5c-cd03-4958-82aa-b80bf93cb922\")\n            .nodeCount(5)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  nodegroup1:\n    type: openstack:containerinfra:NodeGroup\n    name: nodegroup_1\n    properties:\n      name: nodegroup_1\n      clusterId: b9a45c5c-cd03-4958-82aa-b80bf93cb922\n      nodeCount: 5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Attributes reference\n\nThe following attributes are exported:\n\n* \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`project_id`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`createdAt`\" pulumi-lang-dotnet=\"`CreatedAt`\" pulumi-lang-go=\"`createdAt`\" pulumi-lang-python=\"`created_at`\" pulumi-lang-yaml=\"`createdAt`\" pulumi-lang-java=\"`createdAt`\"\u003e`created_at`\u003c/span\u003e - The time at which node group was created.\n* \u003cspan pulumi-lang-nodejs=\"`updatedAt`\" pulumi-lang-dotnet=\"`UpdatedAt`\" pulumi-lang-go=\"`updatedAt`\" pulumi-lang-python=\"`updated_at`\" pulumi-lang-yaml=\"`updatedAt`\" pulumi-lang-java=\"`updatedAt`\"\u003e`updated_at`\u003c/span\u003e - The time at which node group was created.\n* \u003cspan pulumi-lang-nodejs=\"`dockerVolumeSize`\" pulumi-lang-dotnet=\"`DockerVolumeSize`\" pulumi-lang-go=\"`dockerVolumeSize`\" pulumi-lang-python=\"`docker_volume_size`\" pulumi-lang-yaml=\"`dockerVolumeSize`\" pulumi-lang-java=\"`dockerVolumeSize`\"\u003e`docker_volume_size`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\"\u003e`role`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`imageId`\" pulumi-lang-dotnet=\"`ImageId`\" pulumi-lang-go=\"`imageId`\" pulumi-lang-python=\"`image_id`\" pulumi-lang-yaml=\"`imageId`\" pulumi-lang-java=\"`imageId`\"\u003e`image_id`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`flavorId`\" pulumi-lang-dotnet=\"`FlavorId`\" pulumi-lang-go=\"`flavorId`\" pulumi-lang-python=\"`flavor_id`\" pulumi-lang-yaml=\"`flavorId`\" pulumi-lang-java=\"`flavorId`\"\u003e`flavor_id`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`labels`\" pulumi-lang-dotnet=\"`Labels`\" pulumi-lang-go=\"`labels`\" pulumi-lang-python=\"`labels`\" pulumi-lang-yaml=\"`labels`\" pulumi-lang-java=\"`labels`\"\u003e`labels`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`nodeCount`\" pulumi-lang-dotnet=\"`NodeCount`\" pulumi-lang-go=\"`nodeCount`\" pulumi-lang-python=\"`node_count`\" pulumi-lang-yaml=\"`nodeCount`\" pulumi-lang-java=\"`nodeCount`\"\u003e`node_count`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`minNodeCount`\" pulumi-lang-dotnet=\"`MinNodeCount`\" pulumi-lang-go=\"`minNodeCount`\" pulumi-lang-python=\"`min_node_count`\" pulumi-lang-yaml=\"`minNodeCount`\" pulumi-lang-java=\"`minNodeCount`\"\u003e`min_node_count`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`maxNodeCount`\" pulumi-lang-dotnet=\"`MaxNodeCount`\" pulumi-lang-go=\"`maxNodeCount`\" pulumi-lang-python=\"`max_node_count`\" pulumi-lang-yaml=\"`maxNodeCount`\" pulumi-lang-java=\"`maxNodeCount`\"\u003e`max_node_count`\u003c/span\u003e - See Argument Reference above.\n* \u003cspan pulumi-lang-nodejs=\"`role`\" pulumi-lang-dotnet=\"`Role`\" pulumi-lang-go=\"`role`\" pulumi-lang-python=\"`role`\" pulumi-lang-yaml=\"`role`\" pulumi-lang-java=\"`role`\"\u003e`role`\u003c/span\u003e - See Argument Reference above.\n\n## Import\n\nNode groups can be imported using the `id` (cluster_id/nodegroup_id), e.g.\n\n```sh\n$ pulumi import openstack:containerinfra/nodeGroup:NodeGroup nodegroup_1 b9a45c5c-cd03-4958-82aa-b80bf93cb922/ce0f9463-dd25-474b-9fe8-94de63e5e42b\n```\n","properties":{"clusterId":{"type":"string","description":"The UUID of the V1 Container Infra cluster.\nChanging this creates a new node group.\n"},"createdAt":{"type":"string"},"dockerVolumeSize":{"type":"integer","description":"The size (in GB) of the Docker volume.\nChanging this creates a new node group.\n"},"flavorId":{"type":"string","description":"The flavor for the nodes of the node group. Can be set\nvia the `OS_MAGNUM_FLAVOR` environment variable. Changing this creates a new\nnode group.\n"},"imageId":{"type":"string","description":"The reference to an image that is used for nodes of the\nnode group. Can be set via the `OS_MAGNUM_IMAGE` environment variable.\nChanging this updates the image attribute of the existing node group.\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"The list of key value pairs representing additional\nproperties of the node group. Changing this creates a new node group.\n"},"maxNodeCount":{"type":"integer","description":"The maximum number of nodes for the node group.\nChanging this update the maximum number of nodes of the node group.\n"},"mergeLabels":{"type":"boolean","description":"Indicates whether the provided labels should be\nmerged with cluster labels. Changing this creates a new nodegroup.\n"},"minNodeCount":{"type":"integer","description":"The minimum number of nodes for the node group.\nChanging this update the minimum number of nodes of the node group.\n"},"name":{"type":"string","description":"The name of the node group. Changing this creates a new\nnode group.\n"},"nodeCount":{"type":"integer","description":"The number of nodes for the node group. Changing\nthis update the number of nodes of the node group.\n"},"projectId":{"type":"string","description":"The project of the node group. Required if admin\nwants to create a cluster in another project. Changing this creates a new\nnode group.\n"},"region":{"type":"string","description":"The region in which to obtain the V1 Container Infra\nclient. A Container Infra client is needed to create a cluster. If omitted,\nthe \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nnode group.\n"},"role":{"type":"string","description":"The role of nodes in the node group. Changing this\ncreates a new node group.\n"},"updatedAt":{"type":"string"}},"required":["clusterId","createdAt","dockerVolumeSize","flavorId","imageId","labels","minNodeCount","name","projectId","region","role","updatedAt"],"inputProperties":{"clusterId":{"type":"string","description":"The UUID of the V1 Container Infra cluster.\nChanging this creates a new node group.\n","willReplaceOnChanges":true},"dockerVolumeSize":{"type":"integer","description":"The size (in GB) of the Docker volume.\nChanging this creates a new node group.\n","willReplaceOnChanges":true},"flavorId":{"type":"string","description":"The flavor for the nodes of the node group. Can be set\nvia the `OS_MAGNUM_FLAVOR` environment variable. Changing this creates a new\nnode group.\n","willReplaceOnChanges":true},"imageId":{"type":"string","description":"The reference to an image that is used for nodes of the\nnode group. Can be set via the `OS_MAGNUM_IMAGE` environment variable.\nChanging this updates the image attribute of the existing node group.\n","willReplaceOnChanges":true},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"The list of key value pairs representing additional\nproperties of the node group. Changing this creates a new node group.\n","willReplaceOnChanges":true},"maxNodeCount":{"type":"integer","description":"The maximum number of nodes for the node group.\nChanging this update the maximum number of nodes of the node group.\n"},"mergeLabels":{"type":"boolean","description":"Indicates whether the provided labels should be\nmerged with cluster labels. Changing this creates a new nodegroup.\n","willReplaceOnChanges":true},"minNodeCount":{"type":"integer","description":"The minimum number of nodes for the node group.\nChanging this update the minimum number of nodes of the node group.\n"},"name":{"type":"string","description":"The name of the node group. Changing this creates a new\nnode group.\n","willReplaceOnChanges":true},"nodeCount":{"type":"integer","description":"The number of nodes for the node group. Changing\nthis update the number of nodes of the node group.\n"},"region":{"type":"string","description":"The region in which to obtain the V1 Container Infra\nclient. A Container Infra client is needed to create a cluster. If omitted,\nthe \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nnode group.\n","willReplaceOnChanges":true},"role":{"type":"string","description":"The role of nodes in the node group. Changing this\ncreates a new node group.\n","willReplaceOnChanges":true}},"requiredInputs":["clusterId"],"stateInputs":{"description":"Input properties used for looking up and filtering NodeGroup resources.\n","properties":{"clusterId":{"type":"string","description":"The UUID of the V1 Container Infra cluster.\nChanging this creates a new node group.\n","willReplaceOnChanges":true},"createdAt":{"type":"string"},"dockerVolumeSize":{"type":"integer","description":"The size (in GB) of the Docker volume.\nChanging this creates a new node group.\n","willReplaceOnChanges":true},"flavorId":{"type":"string","description":"The flavor for the nodes of the node group. Can be set\nvia the `OS_MAGNUM_FLAVOR` environment variable. Changing this creates a new\nnode group.\n","willReplaceOnChanges":true},"imageId":{"type":"string","description":"The reference to an image that is used for nodes of the\nnode group. Can be set via the `OS_MAGNUM_IMAGE` environment variable.\nChanging this updates the image attribute of the existing node group.\n","willReplaceOnChanges":true},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"The list of key value pairs representing additional\nproperties of the node group. Changing this creates a new node group.\n","willReplaceOnChanges":true},"maxNodeCount":{"type":"integer","description":"The maximum number of nodes for the node group.\nChanging this update the maximum number of nodes of the node group.\n"},"mergeLabels":{"type":"boolean","description":"Indicates whether the provided labels should be\nmerged with cluster labels. Changing this creates a new nodegroup.\n","willReplaceOnChanges":true},"minNodeCount":{"type":"integer","description":"The minimum number of nodes for the node group.\nChanging this update the minimum number of nodes of the node group.\n"},"name":{"type":"string","description":"The name of the node group. Changing this creates a new\nnode group.\n","willReplaceOnChanges":true},"nodeCount":{"type":"integer","description":"The number of nodes for the node group. Changing\nthis update the number of nodes of the node group.\n"},"projectId":{"type":"string","description":"The project of the node group. Required if admin\nwants to create a cluster in another project. Changing this creates a new\nnode group.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V1 Container Infra\nclient. A Container Infra client is needed to create a cluster. If omitted,\nthe \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nnode group.\n","willReplaceOnChanges":true},"role":{"type":"string","description":"The role of nodes in the node group. Changing this\ncreates a new node group.\n","willReplaceOnChanges":true},"updatedAt":{"type":"string"}},"type":"object"}},"openstack:database/configuration:Configuration":{"properties":{"configurations":{"type":"array","items":{"$ref":"#/types/openstack:database/ConfigurationConfiguration:ConfigurationConfiguration"},"description":"An array of configuration parameter name and value. Can be specified multiple times. The configuration object structure is documented below.\n"},"datastore":{"$ref":"#/types/openstack:database/ConfigurationDatastore:ConfigurationDatastore","description":"An array of database engine type and version. The datastore\nobject structure is documented below. Changing this creates resource.\n"},"description":{"type":"string","description":"Description of the resource.\n"},"name":{"type":"string","description":"A unique name for the resource.\n"},"region":{"type":"string","description":"The region in which to create the db instance. Changing this\ncreates a new instance.\n"}},"required":["datastore","description","name","region"],"inputProperties":{"configurations":{"type":"array","items":{"$ref":"#/types/openstack:database/ConfigurationConfiguration:ConfigurationConfiguration"},"description":"An array of configuration parameter name and value. Can be specified multiple times. The configuration object structure is documented below.\n","willReplaceOnChanges":true},"datastore":{"$ref":"#/types/openstack:database/ConfigurationDatastore:ConfigurationDatastore","description":"An array of database engine type and version. The datastore\nobject structure is documented below. Changing this creates resource.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"Description of the resource.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"A unique name for the resource.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to create the db instance. Changing this\ncreates a new instance.\n","willReplaceOnChanges":true}},"requiredInputs":["datastore","description"],"stateInputs":{"description":"Input properties used for looking up and filtering Configuration resources.\n","properties":{"configurations":{"type":"array","items":{"$ref":"#/types/openstack:database/ConfigurationConfiguration:ConfigurationConfiguration"},"description":"An array of configuration parameter name and value. Can be specified multiple times. The configuration object structure is documented below.\n","willReplaceOnChanges":true},"datastore":{"$ref":"#/types/openstack:database/ConfigurationDatastore:ConfigurationDatastore","description":"An array of database engine type and version. The datastore\nobject structure is documented below. Changing this creates resource.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"Description of the resource.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"A unique name for the resource.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to create the db instance. Changing this\ncreates a new instance.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:database/database:Database":{"description":"Manages a V1 DB database resource within OpenStack.\n\n## Example Usage\n\n### Database\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst mydb = new openstack.database.Database(\"mydb\", {\n    name: \"mydb\",\n    instanceId: basic.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nmydb = openstack.database.Database(\"mydb\",\n    name=\"mydb\",\n    instance_id=basic[\"id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var mydb = new OpenStack.Database.Database(\"mydb\", new()\n    {\n        Name = \"mydb\",\n        InstanceId = basic.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/database\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := database.NewDatabase(ctx, \"mydb\", \u0026database.DatabaseArgs{\n\t\t\tName:       pulumi.String(\"mydb\"),\n\t\t\tInstanceId: pulumi.Any(basic.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.openstack.database.Database;\nimport com.pulumi.openstack.database.DatabaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 mydb = new Database(\"mydb\", DatabaseArgs.builder()\n            .name(\"mydb\")\n            .instanceId(basic.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  mydb:\n    type: openstack:database:Database\n    properties:\n      name: mydb\n      instanceId: ${basic.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatabases can be imported by using `instance-id/db-name`, e.g.\n\n```sh\n$ pulumi import openstack:database/database:Database mydb 7b9e3cd3-00d9-449c-b074-8439f8e274fa/mydb\n```\n","properties":{"instanceId":{"type":"string","description":"The ID for the database instance.\n"},"name":{"type":"string","description":"A unique name for the resource.\n"},"region":{"type":"string","description":"The region in which to create the database. Changing\nthis creates a new database.\n"}},"required":["instanceId","name","region"],"inputProperties":{"instanceId":{"type":"string","description":"The ID for the database instance.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"A unique name for the resource.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to create the database. Changing\nthis creates a new database.\n","willReplaceOnChanges":true}},"requiredInputs":["instanceId"],"stateInputs":{"description":"Input properties used for looking up and filtering Database resources.\n","properties":{"instanceId":{"type":"string","description":"The ID for the database instance.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"A unique name for the resource.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to create the database. Changing\nthis creates a new database.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:database/instance:Instance":{"description":"Manages a V1 DB instance resource within OpenStack.\n\n\u003e **Note:** All arguments including the instance user password will be stored\nin the raw state as plain-text. Read more about sensitive data in\nstate.\n\n## Example Usage\n\n### Instance\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst test = new openstack.database.Instance(\"test\", {\n    region: \"region-test\",\n    name: \"test\",\n    flavorId: \"31792d21-c355-4587-9290-56c1ed0ca376\",\n    size: 8,\n    networks: [{\n        uuid: \"c0612505-caf2-4fb0-b7cb-56a0240a2b12\",\n    }],\n    datastore: {\n        version: \"mysql-5.7\",\n        type: \"mysql\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\ntest = openstack.database.Instance(\"test\",\n    region=\"region-test\",\n    name=\"test\",\n    flavor_id=\"31792d21-c355-4587-9290-56c1ed0ca376\",\n    size=8,\n    networks=[{\n        \"uuid\": \"c0612505-caf2-4fb0-b7cb-56a0240a2b12\",\n    }],\n    datastore={\n        \"version\": \"mysql-5.7\",\n        \"type\": \"mysql\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new OpenStack.Database.Instance(\"test\", new()\n    {\n        Region = \"region-test\",\n        Name = \"test\",\n        FlavorId = \"31792d21-c355-4587-9290-56c1ed0ca376\",\n        Size = 8,\n        Networks = new[]\n        {\n            new OpenStack.Database.Inputs.InstanceNetworkArgs\n            {\n                Uuid = \"c0612505-caf2-4fb0-b7cb-56a0240a2b12\",\n            },\n        },\n        Datastore = new OpenStack.Database.Inputs.InstanceDatastoreArgs\n        {\n            Version = \"mysql-5.7\",\n            Type = \"mysql\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/database\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := database.NewInstance(ctx, \"test\", \u0026database.InstanceArgs{\n\t\t\tRegion:   pulumi.String(\"region-test\"),\n\t\t\tName:     pulumi.String(\"test\"),\n\t\t\tFlavorId: pulumi.String(\"31792d21-c355-4587-9290-56c1ed0ca376\"),\n\t\t\tSize:     pulumi.Int(8),\n\t\t\tNetworks: database.InstanceNetworkArray{\n\t\t\t\t\u0026database.InstanceNetworkArgs{\n\t\t\t\t\tUuid: pulumi.String(\"c0612505-caf2-4fb0-b7cb-56a0240a2b12\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDatastore: \u0026database.InstanceDatastoreArgs{\n\t\t\t\tVersion: pulumi.String(\"mysql-5.7\"),\n\t\t\t\tType:    pulumi.String(\"mysql\"),\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.openstack.database.Instance;\nimport com.pulumi.openstack.database.InstanceArgs;\nimport com.pulumi.openstack.database.inputs.InstanceNetworkArgs;\nimport com.pulumi.openstack.database.inputs.InstanceDatastoreArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 test = new Instance(\"test\", InstanceArgs.builder()\n            .region(\"region-test\")\n            .name(\"test\")\n            .flavorId(\"31792d21-c355-4587-9290-56c1ed0ca376\")\n            .size(8)\n            .networks(InstanceNetworkArgs.builder()\n                .uuid(\"c0612505-caf2-4fb0-b7cb-56a0240a2b12\")\n                .build())\n            .datastore(InstanceDatastoreArgs.builder()\n                .version(\"mysql-5.7\")\n                .type(\"mysql\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: openstack:database:Instance\n    properties:\n      region: region-test\n      name: test\n      flavorId: 31792d21-c355-4587-9290-56c1ed0ca376\n      size: 8\n      networks:\n        - uuid: c0612505-caf2-4fb0-b7cb-56a0240a2b12\n      datastore:\n        version: mysql-5.7\n        type: mysql\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"addresses":{"type":"array","items":{"type":"string"},"description":"A list of IP addresses assigned to the instance.\n"},"configurationId":{"type":"string","description":"Configuration ID to be attached to the instance. Database instance\nwill be rebooted when configuration is detached.\n"},"databases":{"type":"array","items":{"$ref":"#/types/openstack:database/InstanceDatabase:InstanceDatabase"},"description":"An array of database name, charset and collate. The database\nobject structure is documented below.\n"},"datastore":{"$ref":"#/types/openstack:database/InstanceDatastore:InstanceDatastore","description":"An array of database engine type and version. The datastore\nobject structure is documented below. Changing this creates a new instance.\n"},"flavorId":{"type":"string","description":"The flavor ID of the desired flavor for the instance.\nChanging this creates new instance.\n"},"name":{"type":"string","description":"A unique name for the resource.\n"},"networks":{"type":"array","items":{"$ref":"#/types/openstack:database/InstanceNetwork:InstanceNetwork"},"description":"An array of one or more networks to attach to the\ninstance. The network object structure is documented below. Changing this\ncreates a new instance.\n"},"region":{"type":"string","description":"The region in which to create the db instance. Changing this\ncreates a new instance.\n"},"size":{"type":"integer","description":"Specifies the volume size in GB. Changing this creates new instance.\n"},"users":{"type":"array","items":{"$ref":"#/types/openstack:database/InstanceUser:InstanceUser"},"description":"An array of username, password, host and databases. The user\nobject structure is documented below.\n"},"volumeType":{"type":"string","description":"Specifies the volume type to use. If you want to\nspecify a volume type, you must also specify a volume size. Changing this\ncreates new instance.\n"}},"required":["addresses","datastore","flavorId","name","region","size"],"inputProperties":{"configurationId":{"type":"string","description":"Configuration ID to be attached to the instance. Database instance\nwill be rebooted when configuration is detached.\n"},"databases":{"type":"array","items":{"$ref":"#/types/openstack:database/InstanceDatabase:InstanceDatabase"},"description":"An array of database name, charset and collate. The database\nobject structure is documented below.\n","willReplaceOnChanges":true},"datastore":{"$ref":"#/types/openstack:database/InstanceDatastore:InstanceDatastore","description":"An array of database engine type and version. The datastore\nobject structure is documented below. Changing this creates a new instance.\n","willReplaceOnChanges":true},"flavorId":{"type":"string","description":"The flavor ID of the desired flavor for the instance.\nChanging this creates new instance.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"A unique name for the resource.\n","willReplaceOnChanges":true},"networks":{"type":"array","items":{"$ref":"#/types/openstack:database/InstanceNetwork:InstanceNetwork"},"description":"An array of one or more networks to attach to the\ninstance. The network object structure is documented below. Changing this\ncreates a new instance.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to create the db instance. Changing this\ncreates a new instance.\n"},"size":{"type":"integer","description":"Specifies the volume size in GB. Changing this creates new instance.\n","willReplaceOnChanges":true},"users":{"type":"array","items":{"$ref":"#/types/openstack:database/InstanceUser:InstanceUser"},"description":"An array of username, password, host and databases. The user\nobject structure is documented below.\n","willReplaceOnChanges":true},"volumeType":{"type":"string","description":"Specifies the volume type to use. If you want to\nspecify a volume type, you must also specify a volume size. Changing this\ncreates new instance.\n","willReplaceOnChanges":true}},"requiredInputs":["datastore","size"],"stateInputs":{"description":"Input properties used for looking up and filtering Instance resources.\n","properties":{"addresses":{"type":"array","items":{"type":"string"},"description":"A list of IP addresses assigned to the instance.\n"},"configurationId":{"type":"string","description":"Configuration ID to be attached to the instance. Database instance\nwill be rebooted when configuration is detached.\n"},"databases":{"type":"array","items":{"$ref":"#/types/openstack:database/InstanceDatabase:InstanceDatabase"},"description":"An array of database name, charset and collate. The database\nobject structure is documented below.\n","willReplaceOnChanges":true},"datastore":{"$ref":"#/types/openstack:database/InstanceDatastore:InstanceDatastore","description":"An array of database engine type and version. The datastore\nobject structure is documented below. Changing this creates a new instance.\n","willReplaceOnChanges":true},"flavorId":{"type":"string","description":"The flavor ID of the desired flavor for the instance.\nChanging this creates new instance.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"A unique name for the resource.\n","willReplaceOnChanges":true},"networks":{"type":"array","items":{"$ref":"#/types/openstack:database/InstanceNetwork:InstanceNetwork"},"description":"An array of one or more networks to attach to the\ninstance. The network object structure is documented below. Changing this\ncreates a new instance.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to create the db instance. Changing this\ncreates a new instance.\n"},"size":{"type":"integer","description":"Specifies the volume size in GB. Changing this creates new instance.\n","willReplaceOnChanges":true},"users":{"type":"array","items":{"$ref":"#/types/openstack:database/InstanceUser:InstanceUser"},"description":"An array of username, password, host and databases. The user\nobject structure is documented below.\n","willReplaceOnChanges":true},"volumeType":{"type":"string","description":"Specifies the volume type to use. If you want to\nspecify a volume type, you must also specify a volume size. Changing this\ncreates new instance.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:database/user:User":{"description":"Manages a V1 DB user resource within OpenStack.\n\n\u003e **Note:** All arguments including the database password will be stored in the\nraw state as plain-text. Read more about sensitive data in\nstate.\n\n## Example Usage\n\n### User\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst basic = new openstack.database.User(\"basic\", {\n    name: \"basic\",\n    instanceId: basicOpenstackDbInstanceV1.id,\n    password: \"password\",\n    databases: [\"testdb\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nbasic = openstack.database.User(\"basic\",\n    name=\"basic\",\n    instance_id=basic_openstack_db_instance_v1[\"id\"],\n    password=\"password\",\n    databases=[\"testdb\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var basic = new OpenStack.Database.User(\"basic\", new()\n    {\n        Name = \"basic\",\n        InstanceId = basicOpenstackDbInstanceV1.Id,\n        Password = \"password\",\n        Databases = new[]\n        {\n            \"testdb\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/database\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := database.NewUser(ctx, \"basic\", \u0026database.UserArgs{\n\t\t\tName:       pulumi.String(\"basic\"),\n\t\t\tInstanceId: pulumi.Any(basicOpenstackDbInstanceV1.Id),\n\t\t\tPassword:   pulumi.String(\"password\"),\n\t\t\tDatabases: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"testdb\"),\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.openstack.database.User;\nimport com.pulumi.openstack.database.UserArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 basic = new User(\"basic\", UserArgs.builder()\n            .name(\"basic\")\n            .instanceId(basicOpenstackDbInstanceV1.id())\n            .password(\"password\")\n            .databases(\"testdb\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  basic:\n    type: openstack:database:User\n    properties:\n      name: basic\n      instanceId: ${basicOpenstackDbInstanceV1.id}\n      password: password\n      databases:\n        - testdb\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"databases":{"type":"array","items":{"type":"string"},"description":"A list of database user should have access to.\n"},"host":{"type":"string"},"instanceId":{"type":"string","description":"The ID for the database instance.\n"},"name":{"type":"string","description":"A unique name for the resource.\n"},"password":{"type":"string","description":"User's password.\n","secret":true},"region":{"type":"string","description":"The region in which to create the db user. Changing\nthis creates a new user.\n"}},"required":["databases","instanceId","name","password","region"],"inputProperties":{"databases":{"type":"array","items":{"type":"string"},"description":"A list of database user should have access to.\n"},"host":{"type":"string","willReplaceOnChanges":true},"instanceId":{"type":"string","description":"The ID for the database instance.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"A unique name for the resource.\n","willReplaceOnChanges":true},"password":{"type":"string","description":"User's password.\n","secret":true,"willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to create the db user. Changing\nthis creates a new user.\n","willReplaceOnChanges":true}},"requiredInputs":["instanceId","password"],"stateInputs":{"description":"Input properties used for looking up and filtering User resources.\n","properties":{"databases":{"type":"array","items":{"type":"string"},"description":"A list of database user should have access to.\n"},"host":{"type":"string","willReplaceOnChanges":true},"instanceId":{"type":"string","description":"The ID for the database instance.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"A unique name for the resource.\n","willReplaceOnChanges":true},"password":{"type":"string","description":"User's password.\n","secret":true,"willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to create the db user. Changing\nthis creates a new user.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:dns/quotaV2:QuotaV2":{"description":"Manages DNS quota in OpenStack DNS Service.\n\n\u003e **Note:** This usually requires admin privileges.\n\n\u003e **Note:** This resource has a no-op deletion so no actual actions will be\ndone against the OpenStack API in case of delete call.\n\n## Import\n\nQuotas can be imported using the `project_id/region_name`, e.g.\n\n```sh\n$ pulumi import openstack:dns/quotaV2:QuotaV2 quota_1 2a0f2240-c5e6-41de-896d-e80d97428d6b/region_1\n```\n","properties":{"apiExportSize":{"type":"integer","description":"The maximum number of zones that can be\nexported via the API.\n"},"projectId":{"type":"string","description":"ID of the project to manage quota. Changing this\ncreates new quota.\n"},"recordsetRecords":{"type":"integer","description":"The maximum number of records in a\nrecordset.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 DNS client. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new DNS quota.\n"},"zoneRecords":{"type":"integer","description":"The maximum number of records in a zone.\n"},"zoneRecordsets":{"type":"integer","description":"The maximum number of recordsets in a zone.\n"},"zones":{"type":"integer","description":"The maximum number of zones that can be created.\n"}},"required":["apiExportSize","projectId","recordsetRecords","region","zoneRecords","zoneRecordsets","zones"],"inputProperties":{"apiExportSize":{"type":"integer","description":"The maximum number of zones that can be\nexported via the API.\n"},"projectId":{"type":"string","description":"ID of the project to manage quota. Changing this\ncreates new quota.\n","willReplaceOnChanges":true},"recordsetRecords":{"type":"integer","description":"The maximum number of records in a\nrecordset.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 DNS client. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new DNS quota.\n","willReplaceOnChanges":true},"zoneRecords":{"type":"integer","description":"The maximum number of records in a zone.\n"},"zoneRecordsets":{"type":"integer","description":"The maximum number of recordsets in a zone.\n"},"zones":{"type":"integer","description":"The maximum number of zones that can be created.\n"}},"requiredInputs":["projectId"],"stateInputs":{"description":"Input properties used for looking up and filtering QuotaV2 resources.\n","properties":{"apiExportSize":{"type":"integer","description":"The maximum number of zones that can be\nexported via the API.\n"},"projectId":{"type":"string","description":"ID of the project to manage quota. Changing this\ncreates new quota.\n","willReplaceOnChanges":true},"recordsetRecords":{"type":"integer","description":"The maximum number of records in a\nrecordset.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 DNS client. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new DNS quota.\n","willReplaceOnChanges":true},"zoneRecords":{"type":"integer","description":"The maximum number of records in a zone.\n"},"zoneRecordsets":{"type":"integer","description":"The maximum number of recordsets in a zone.\n"},"zones":{"type":"integer","description":"The maximum number of zones that can be created.\n"}},"type":"object"}},"openstack:dns/recordSet:RecordSet":{"description":"Manages a DNS record set in the OpenStack DNS Service.\n\n## Example Usage\n\n### Automatically detect the correct network\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst exampleZone = new openstack.dns.Zone(\"example_zone\", {\n    name: \"example.com.\",\n    email: \"email2@example.com\",\n    description: \"a zone\",\n    ttl: 6000,\n    type: \"PRIMARY\",\n});\nconst rsExampleCom = new openstack.dns.RecordSet(\"rs_example_com\", {\n    zoneId: exampleZone.id,\n    name: \"rs.example.com.\",\n    description: \"An example record set\",\n    ttl: 3000,\n    type: \"A\",\n    records: [\"10.0.0.1\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nexample_zone = openstack.dns.Zone(\"example_zone\",\n    name=\"example.com.\",\n    email=\"email2@example.com\",\n    description=\"a zone\",\n    ttl=6000,\n    type=\"PRIMARY\")\nrs_example_com = openstack.dns.RecordSet(\"rs_example_com\",\n    zone_id=example_zone.id,\n    name=\"rs.example.com.\",\n    description=\"An example record set\",\n    ttl=3000,\n    type=\"A\",\n    records=[\"10.0.0.1\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleZone = new OpenStack.Dns.Zone(\"example_zone\", new()\n    {\n        Name = \"example.com.\",\n        Email = \"email2@example.com\",\n        Description = \"a zone\",\n        Ttl = 6000,\n        Type = \"PRIMARY\",\n    });\n\n    var rsExampleCom = new OpenStack.Dns.RecordSet(\"rs_example_com\", new()\n    {\n        ZoneId = exampleZone.Id,\n        Name = \"rs.example.com.\",\n        Description = \"An example record set\",\n        Ttl = 3000,\n        Type = \"A\",\n        Records = new[]\n        {\n            \"10.0.0.1\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleZone, err := dns.NewZone(ctx, \"example_zone\", \u0026dns.ZoneArgs{\n\t\t\tName:        pulumi.String(\"example.com.\"),\n\t\t\tEmail:       pulumi.String(\"email2@example.com\"),\n\t\t\tDescription: pulumi.String(\"a zone\"),\n\t\t\tTtl:         pulumi.Int(6000),\n\t\t\tType:        pulumi.String(\"PRIMARY\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"rs_example_com\", \u0026dns.RecordSetArgs{\n\t\t\tZoneId:      exampleZone.ID(),\n\t\t\tName:        pulumi.String(\"rs.example.com.\"),\n\t\t\tDescription: pulumi.String(\"An example record set\"),\n\t\t\tTtl:         pulumi.Int(3000),\n\t\t\tType:        pulumi.String(\"A\"),\n\t\t\tRecords: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.0.1\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openstack.dns.Zone;\nimport com.pulumi.openstack.dns.ZoneArgs;\nimport com.pulumi.openstack.dns.RecordSet;\nimport com.pulumi.openstack.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 exampleZone = new Zone(\"exampleZone\", ZoneArgs.builder()\n            .name(\"example.com.\")\n            .email(\"email2@example.com\")\n            .description(\"a zone\")\n            .ttl(6000)\n            .type(\"PRIMARY\")\n            .build());\n\n        var rsExampleCom = new RecordSet(\"rsExampleCom\", RecordSetArgs.builder()\n            .zoneId(exampleZone.id())\n            .name(\"rs.example.com.\")\n            .description(\"An example record set\")\n            .ttl(3000)\n            .type(\"A\")\n            .records(\"10.0.0.1\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleZone:\n    type: openstack:dns:Zone\n    name: example_zone\n    properties:\n      name: example.com.\n      email: email2@example.com\n      description: a zone\n      ttl: 6000\n      type: PRIMARY\n  rsExampleCom:\n    type: openstack:dns:RecordSet\n    name: rs_example_com\n    properties:\n      zoneId: ${exampleZone.id}\n      name: rs.example.com.\n      description: An example record set\n      ttl: 3000\n      type: A\n      records:\n        - 10.0.0.1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource can be imported by specifying the zone ID and recordset ID with an optional project ID as a prefix:\n\n```sh\n$ pulumi import openstack:dns/recordSet:RecordSet recordset_1 project_id/zone_id/recordset_id\n```\n\n```sh\n$ pulumi import openstack:dns/recordSet:RecordSet recordset_1 zone_id/recordset_id\n```\n\n","properties":{"description":{"type":"string","description":"A description of the  record set.\n"},"disableStatusCheck":{"type":"boolean","description":"Disable wait for recordset to reach ACTIVE\nstatus. This argumen is disabled by default. If it is set to true, the recordset\nwill be considered as created/updated/deleted if OpenStack request returned success.\n"},"name":{"type":"string","description":"The name of the record set. Note the `.` at the end of the name.\nChanging this creates a new DNS  record set.\n"},"projectId":{"type":"string","description":"The ID of the project DNS zone is created\nfor, sets `X-Auth-Sudo-Tenant-ID` header (requires an assigned\nuser role in target project)\n"},"records":{"type":"array","items":{"type":"string"},"description":"An array of DNS records.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 DNS client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\nChanging this creates a new DNS  record set.\n"},"ttl":{"type":"integer","description":"The time to live (TTL) of the record set.\n"},"type":{"type":"string","description":"The type of record set. Examples: \"A\", \"MX\".\nChanging this creates a new DNS  record set.\n"},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options. Changing this creates a\nnew record set.\n"},"zoneId":{"type":"string","description":"The ID of the zone in which to create the record set.\nChanging this creates a new DNS  record set.\n"}},"required":["name","projectId","records","region","ttl","type","zoneId"],"inputProperties":{"description":{"type":"string","description":"A description of the  record set.\n"},"disableStatusCheck":{"type":"boolean","description":"Disable wait for recordset to reach ACTIVE\nstatus. This argumen is disabled by default. If it is set to true, the recordset\nwill be considered as created/updated/deleted if OpenStack request returned success.\n"},"name":{"type":"string","description":"The name of the record set. Note the `.` at the end of the name.\nChanging this creates a new DNS  record set.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"The ID of the project DNS zone is created\nfor, sets `X-Auth-Sudo-Tenant-ID` header (requires an assigned\nuser role in target project)\n","willReplaceOnChanges":true},"records":{"type":"array","items":{"type":"string"},"description":"An array of DNS records.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 DNS client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\nChanging this creates a new DNS  record set.\n","willReplaceOnChanges":true},"ttl":{"type":"integer","description":"The time to live (TTL) of the record set.\n"},"type":{"type":"string","description":"The type of record set. Examples: \"A\", \"MX\".\nChanging this creates a new DNS  record set.\n","willReplaceOnChanges":true},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options. Changing this creates a\nnew record set.\n","willReplaceOnChanges":true},"zoneId":{"type":"string","description":"The ID of the zone in which to create the record set.\nChanging this creates a new DNS  record set.\n","willReplaceOnChanges":true}},"requiredInputs":["records","zoneId"],"stateInputs":{"description":"Input properties used for looking up and filtering RecordSet resources.\n","properties":{"description":{"type":"string","description":"A description of the  record set.\n"},"disableStatusCheck":{"type":"boolean","description":"Disable wait for recordset to reach ACTIVE\nstatus. This argumen is disabled by default. If it is set to true, the recordset\nwill be considered as created/updated/deleted if OpenStack request returned success.\n"},"name":{"type":"string","description":"The name of the record set. Note the `.` at the end of the name.\nChanging this creates a new DNS  record set.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"The ID of the project DNS zone is created\nfor, sets `X-Auth-Sudo-Tenant-ID` header (requires an assigned\nuser role in target project)\n","willReplaceOnChanges":true},"records":{"type":"array","items":{"type":"string"},"description":"An array of DNS records.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 DNS client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\nChanging this creates a new DNS  record set.\n","willReplaceOnChanges":true},"ttl":{"type":"integer","description":"The time to live (TTL) of the record set.\n"},"type":{"type":"string","description":"The type of record set. Examples: \"A\", \"MX\".\nChanging this creates a new DNS  record set.\n","willReplaceOnChanges":true},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options. Changing this creates a\nnew record set.\n","willReplaceOnChanges":true},"zoneId":{"type":"string","description":"The ID of the zone in which to create the record set.\nChanging this creates a new DNS  record set.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:dns/transferAccept:TransferAccept":{"description":"Manages a DNS zone transfer accept in the OpenStack DNS Service.\n\n## Example Usage\n\n### Automatically detect the correct network\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst exampleZone = new openstack.dns.Zone(\"example_zone\", {\n    name: \"example.com.\",\n    email: \"jdoe@example.com\",\n    description: \"An example zone\",\n    ttl: 3000,\n    type: \"PRIMARY\",\n});\nconst request1 = new openstack.dns.TransferRequest(\"request_1\", {\n    zoneId: exampleZone.id,\n    description: \"a transfer accept\",\n});\nconst accept1 = new openstack.dns.TransferAccept(\"accept_1\", {\n    zoneTransferRequestId: request1.id,\n    key: request1.key,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nexample_zone = openstack.dns.Zone(\"example_zone\",\n    name=\"example.com.\",\n    email=\"jdoe@example.com\",\n    description=\"An example zone\",\n    ttl=3000,\n    type=\"PRIMARY\")\nrequest1 = openstack.dns.TransferRequest(\"request_1\",\n    zone_id=example_zone.id,\n    description=\"a transfer accept\")\naccept1 = openstack.dns.TransferAccept(\"accept_1\",\n    zone_transfer_request_id=request1.id,\n    key=request1.key)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleZone = new OpenStack.Dns.Zone(\"example_zone\", new()\n    {\n        Name = \"example.com.\",\n        Email = \"jdoe@example.com\",\n        Description = \"An example zone\",\n        Ttl = 3000,\n        Type = \"PRIMARY\",\n    });\n\n    var request1 = new OpenStack.Dns.TransferRequest(\"request_1\", new()\n    {\n        ZoneId = exampleZone.Id,\n        Description = \"a transfer accept\",\n    });\n\n    var accept1 = new OpenStack.Dns.TransferAccept(\"accept_1\", new()\n    {\n        ZoneTransferRequestId = request1.Id,\n        Key = request1.Key,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleZone, err := dns.NewZone(ctx, \"example_zone\", \u0026dns.ZoneArgs{\n\t\t\tName:        pulumi.String(\"example.com.\"),\n\t\t\tEmail:       pulumi.String(\"jdoe@example.com\"),\n\t\t\tDescription: pulumi.String(\"An example zone\"),\n\t\t\tTtl:         pulumi.Int(3000),\n\t\t\tType:        pulumi.String(\"PRIMARY\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trequest1, err := dns.NewTransferRequest(ctx, \"request_1\", \u0026dns.TransferRequestArgs{\n\t\t\tZoneId:      exampleZone.ID(),\n\t\t\tDescription: pulumi.String(\"a transfer accept\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewTransferAccept(ctx, \"accept_1\", \u0026dns.TransferAcceptArgs{\n\t\t\tZoneTransferRequestId: request1.ID(),\n\t\t\tKey:                   request1.Key,\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.openstack.dns.Zone;\nimport com.pulumi.openstack.dns.ZoneArgs;\nimport com.pulumi.openstack.dns.TransferRequest;\nimport com.pulumi.openstack.dns.TransferRequestArgs;\nimport com.pulumi.openstack.dns.TransferAccept;\nimport com.pulumi.openstack.dns.TransferAcceptArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 exampleZone = new Zone(\"exampleZone\", ZoneArgs.builder()\n            .name(\"example.com.\")\n            .email(\"jdoe@example.com\")\n            .description(\"An example zone\")\n            .ttl(3000)\n            .type(\"PRIMARY\")\n            .build());\n\n        var request1 = new TransferRequest(\"request1\", TransferRequestArgs.builder()\n            .zoneId(exampleZone.id())\n            .description(\"a transfer accept\")\n            .build());\n\n        var accept1 = new TransferAccept(\"accept1\", TransferAcceptArgs.builder()\n            .zoneTransferRequestId(request1.id())\n            .key(request1.key())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleZone:\n    type: openstack:dns:Zone\n    name: example_zone\n    properties:\n      name: example.com.\n      email: jdoe@example.com\n      description: An example zone\n      ttl: 3000\n      type: PRIMARY\n  request1:\n    type: openstack:dns:TransferRequest\n    name: request_1\n    properties:\n      zoneId: ${exampleZone.id}\n      description: a transfer accept\n  accept1:\n    type: openstack:dns:TransferAccept\n    name: accept_1\n    properties:\n      zoneTransferRequestId: ${request1.id}\n      key: ${request1.key}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource can be imported by specifying the transferAccept ID:\n\n```sh\n$ pulumi import openstack:dns/transferAccept:TransferAccept accept_1 accept_id\n```\n","properties":{"disableStatusCheck":{"type":"boolean","description":"Disable wait for zone to reach ACTIVE\nstatus. The check is enabled by default. If this argument is true, zone\nwill be considered as created/updated if OpenStack accept returned success.\n"},"key":{"type":"string","description":"The transfer key.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 DNS client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\nChanging this creates a new DNS zone zone transfer accept.\n"},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options. Changing this creates a\nnew transfer accept.\n"},"zoneTransferRequestId":{"type":"string","description":"The ID of the zone transfer request.\n"}},"required":["key","region","zoneTransferRequestId"],"inputProperties":{"disableStatusCheck":{"type":"boolean","description":"Disable wait for zone to reach ACTIVE\nstatus. The check is enabled by default. If this argument is true, zone\nwill be considered as created/updated if OpenStack accept returned success.\n","willReplaceOnChanges":true},"key":{"type":"string","description":"The transfer key.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 DNS client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\nChanging this creates a new DNS zone zone transfer accept.\n","willReplaceOnChanges":true},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options. Changing this creates a\nnew transfer accept.\n","willReplaceOnChanges":true},"zoneTransferRequestId":{"type":"string","description":"The ID of the zone transfer request.\n","willReplaceOnChanges":true}},"requiredInputs":["key","zoneTransferRequestId"],"stateInputs":{"description":"Input properties used for looking up and filtering TransferAccept resources.\n","properties":{"disableStatusCheck":{"type":"boolean","description":"Disable wait for zone to reach ACTIVE\nstatus. The check is enabled by default. If this argument is true, zone\nwill be considered as created/updated if OpenStack accept returned success.\n","willReplaceOnChanges":true},"key":{"type":"string","description":"The transfer key.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 DNS client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\nChanging this creates a new DNS zone zone transfer accept.\n","willReplaceOnChanges":true},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options. Changing this creates a\nnew transfer accept.\n","willReplaceOnChanges":true},"zoneTransferRequestId":{"type":"string","description":"The ID of the zone transfer request.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:dns/transferRequest:TransferRequest":{"description":"Manages a DNS zone transfer request in the OpenStack DNS Service.\n\n## Example Usage\n\n### Automatically detect the correct network\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst exampleZone = new openstack.dns.Zone(\"example_zone\", {\n    name: \"example.com.\",\n    email: \"jdoe@example.com\",\n    description: \"An example zone\",\n    ttl: 3000,\n    type: \"PRIMARY\",\n});\nconst request1 = new openstack.dns.TransferRequest(\"request_1\", {\n    zoneId: exampleZone.id,\n    description: \"a transfer request\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nexample_zone = openstack.dns.Zone(\"example_zone\",\n    name=\"example.com.\",\n    email=\"jdoe@example.com\",\n    description=\"An example zone\",\n    ttl=3000,\n    type=\"PRIMARY\")\nrequest1 = openstack.dns.TransferRequest(\"request_1\",\n    zone_id=example_zone.id,\n    description=\"a transfer request\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleZone = new OpenStack.Dns.Zone(\"example_zone\", new()\n    {\n        Name = \"example.com.\",\n        Email = \"jdoe@example.com\",\n        Description = \"An example zone\",\n        Ttl = 3000,\n        Type = \"PRIMARY\",\n    });\n\n    var request1 = new OpenStack.Dns.TransferRequest(\"request_1\", new()\n    {\n        ZoneId = exampleZone.Id,\n        Description = \"a transfer request\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleZone, err := dns.NewZone(ctx, \"example_zone\", \u0026dns.ZoneArgs{\n\t\t\tName:        pulumi.String(\"example.com.\"),\n\t\t\tEmail:       pulumi.String(\"jdoe@example.com\"),\n\t\t\tDescription: pulumi.String(\"An example zone\"),\n\t\t\tTtl:         pulumi.Int(3000),\n\t\t\tType:        pulumi.String(\"PRIMARY\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewTransferRequest(ctx, \"request_1\", \u0026dns.TransferRequestArgs{\n\t\t\tZoneId:      exampleZone.ID(),\n\t\t\tDescription: pulumi.String(\"a transfer request\"),\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.openstack.dns.Zone;\nimport com.pulumi.openstack.dns.ZoneArgs;\nimport com.pulumi.openstack.dns.TransferRequest;\nimport com.pulumi.openstack.dns.TransferRequestArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 exampleZone = new Zone(\"exampleZone\", ZoneArgs.builder()\n            .name(\"example.com.\")\n            .email(\"jdoe@example.com\")\n            .description(\"An example zone\")\n            .ttl(3000)\n            .type(\"PRIMARY\")\n            .build());\n\n        var request1 = new TransferRequest(\"request1\", TransferRequestArgs.builder()\n            .zoneId(exampleZone.id())\n            .description(\"a transfer request\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleZone:\n    type: openstack:dns:Zone\n    name: example_zone\n    properties:\n      name: example.com.\n      email: jdoe@example.com\n      description: An example zone\n      ttl: 3000\n      type: PRIMARY\n  request1:\n    type: openstack:dns:TransferRequest\n    name: request_1\n    properties:\n      zoneId: ${exampleZone.id}\n      description: a transfer request\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource can be imported by specifying the transferRequest ID:\n\n```sh\n$ pulumi import openstack:dns/transferRequest:TransferRequest request_1 request_id\n```\n","properties":{"description":{"type":"string","description":"A description of the zone tranfer request.\n"},"disableStatusCheck":{"type":"boolean","description":"Disable wait for zone to reach ACTIVE\nstatus. The check is enabled by default. If this argument is true, zone\nwill be considered as created/updated if OpenStack request returned success.\n"},"key":{"type":"string"},"region":{"type":"string","description":"The region in which to obtain the V2 DNS client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\nChanging this creates a new DNS zone zone transfer accept.\n"},"targetProjectId":{"type":"string","description":"The target Project ID to transfer to.\n"},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options. Changing this creates a\nnew transfer request.\n"},"zoneId":{"type":"string","description":"The ID of the zone for which to create the transfer\nrequest.\n"}},"required":["key","region","targetProjectId","zoneId"],"inputProperties":{"description":{"type":"string","description":"A description of the zone tranfer request.\n"},"disableStatusCheck":{"type":"boolean","description":"Disable wait for zone to reach ACTIVE\nstatus. The check is enabled by default. If this argument is true, zone\nwill be considered as created/updated if OpenStack request returned success.\n"},"key":{"type":"string","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 DNS client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\nChanging this creates a new DNS zone zone transfer accept.\n","willReplaceOnChanges":true},"targetProjectId":{"type":"string","description":"The target Project ID to transfer to.\n","willReplaceOnChanges":true},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options. Changing this creates a\nnew transfer request.\n","willReplaceOnChanges":true},"zoneId":{"type":"string","description":"The ID of the zone for which to create the transfer\nrequest.\n","willReplaceOnChanges":true}},"requiredInputs":["zoneId"],"stateInputs":{"description":"Input properties used for looking up and filtering TransferRequest resources.\n","properties":{"description":{"type":"string","description":"A description of the zone tranfer request.\n"},"disableStatusCheck":{"type":"boolean","description":"Disable wait for zone to reach ACTIVE\nstatus. The check is enabled by default. If this argument is true, zone\nwill be considered as created/updated if OpenStack request returned success.\n"},"key":{"type":"string","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 DNS client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\nChanging this creates a new DNS zone zone transfer accept.\n","willReplaceOnChanges":true},"targetProjectId":{"type":"string","description":"The target Project ID to transfer to.\n","willReplaceOnChanges":true},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options. Changing this creates a\nnew transfer request.\n","willReplaceOnChanges":true},"zoneId":{"type":"string","description":"The ID of the zone for which to create the transfer\nrequest.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:dns/zone:Zone":{"description":"Manages a DNS zone in the OpenStack DNS Service.\n\n## Example Usage\n\n### Automatically detect the correct network\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst exampleCom = new openstack.dns.Zone(\"example_com\", {\n    name: \"example.com.\",\n    email: \"jdoe@example.com\",\n    description: \"An example zone\",\n    ttl: 3000,\n    type: \"PRIMARY\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nexample_com = openstack.dns.Zone(\"example_com\",\n    name=\"example.com.\",\n    email=\"jdoe@example.com\",\n    description=\"An example zone\",\n    ttl=3000,\n    type=\"PRIMARY\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleCom = new OpenStack.Dns.Zone(\"example_com\", new()\n    {\n        Name = \"example.com.\",\n        Email = \"jdoe@example.com\",\n        Description = \"An example zone\",\n        Ttl = 3000,\n        Type = \"PRIMARY\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dns.NewZone(ctx, \"example_com\", \u0026dns.ZoneArgs{\n\t\t\tName:        pulumi.String(\"example.com.\"),\n\t\t\tEmail:       pulumi.String(\"jdoe@example.com\"),\n\t\t\tDescription: pulumi.String(\"An example zone\"),\n\t\t\tTtl:         pulumi.Int(3000),\n\t\t\tType:        pulumi.String(\"PRIMARY\"),\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.openstack.dns.Zone;\nimport com.pulumi.openstack.dns.ZoneArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 exampleCom = new Zone(\"exampleCom\", ZoneArgs.builder()\n            .name(\"example.com.\")\n            .email(\"jdoe@example.com\")\n            .description(\"An example zone\")\n            .ttl(3000)\n            .type(\"PRIMARY\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleCom:\n    type: openstack:dns:Zone\n    name: example_com\n    properties:\n      name: example.com.\n      email: jdoe@example.com\n      description: An example zone\n      ttl: 3000\n      type: PRIMARY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource can be imported by specifying the zone ID with optional project ID:\n\n```sh\n$ pulumi import openstack:dns/zone:Zone zone_1 zone_id\n```\n\n```sh\n$ pulumi import openstack:dns/zone:Zone zone_1 zone_id/project_id\n```\n\n","properties":{"attributes":{"type":"object","additionalProperties":{"type":"string"},"description":"Attributes for the DNS Service scheduler.\nChanging this creates a new zone.\n"},"description":{"type":"string","description":"A description of the zone.\n"},"disableStatusCheck":{"type":"boolean","description":"Disable wait for zone to reach ACTIVE\nstatus. The check is enabled by default. If this argument is true, zone\nwill be considered as created/updated if OpenStack request returned success.\n"},"email":{"type":"string","description":"The email contact for the zone record.\n"},"masters":{"type":"array","items":{"type":"string"},"description":"An array of master DNS servers. For when \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e is\n`SECONDARY`.\n"},"name":{"type":"string","description":"The name of the zone. Note the `.` at the end of the name.\nChanging this creates a new DNS zone.\n"},"projectId":{"type":"string","description":"The ID of the project DNS zone is created\nfor, sets `X-Auth-Sudo-Tenant-ID` header (requires an assigned\nuser role in target project).\n"},"region":{"type":"string","description":"The region in which to obtain the V2 DNS client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\nChanging this creates a new DNS zone.\n"},"ttl":{"type":"integer","description":"The time to live (TTL) of the zone.\n"},"type":{"type":"string","description":"The type of zone. Can either be `PRIMARY` or `SECONDARY`.\nChanging this creates a new zone.\n"},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options. Changing this creates a\nnew zone.\n"}},"required":["name","projectId","region","ttl","type"],"inputProperties":{"attributes":{"type":"object","additionalProperties":{"type":"string"},"description":"Attributes for the DNS Service scheduler.\nChanging this creates a new zone.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"A description of the zone.\n"},"disableStatusCheck":{"type":"boolean","description":"Disable wait for zone to reach ACTIVE\nstatus. The check is enabled by default. If this argument is true, zone\nwill be considered as created/updated if OpenStack request returned success.\n"},"email":{"type":"string","description":"The email contact for the zone record.\n"},"masters":{"type":"array","items":{"type":"string"},"description":"An array of master DNS servers. For when \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e is\n`SECONDARY`.\n"},"name":{"type":"string","description":"The name of the zone. Note the `.` at the end of the name.\nChanging this creates a new DNS zone.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"The ID of the project DNS zone is created\nfor, sets `X-Auth-Sudo-Tenant-ID` header (requires an assigned\nuser role in target project).\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 DNS client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\nChanging this creates a new DNS zone.\n","willReplaceOnChanges":true},"ttl":{"type":"integer","description":"The time to live (TTL) of the zone.\n"},"type":{"type":"string","description":"The type of zone. Can either be `PRIMARY` or `SECONDARY`.\nChanging this creates a new zone.\n","willReplaceOnChanges":true},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options. Changing this creates a\nnew zone.\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering Zone resources.\n","properties":{"attributes":{"type":"object","additionalProperties":{"type":"string"},"description":"Attributes for the DNS Service scheduler.\nChanging this creates a new zone.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"A description of the zone.\n"},"disableStatusCheck":{"type":"boolean","description":"Disable wait for zone to reach ACTIVE\nstatus. The check is enabled by default. If this argument is true, zone\nwill be considered as created/updated if OpenStack request returned success.\n"},"email":{"type":"string","description":"The email contact for the zone record.\n"},"masters":{"type":"array","items":{"type":"string"},"description":"An array of master DNS servers. For when \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e is\n`SECONDARY`.\n"},"name":{"type":"string","description":"The name of the zone. Note the `.` at the end of the name.\nChanging this creates a new DNS zone.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"The ID of the project DNS zone is created\nfor, sets `X-Auth-Sudo-Tenant-ID` header (requires an assigned\nuser role in target project).\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 DNS client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\nChanging this creates a new DNS zone.\n","willReplaceOnChanges":true},"ttl":{"type":"integer","description":"The time to live (TTL) of the zone.\n"},"type":{"type":"string","description":"The type of zone. Can either be `PRIMARY` or `SECONDARY`.\nChanging this creates a new zone.\n","willReplaceOnChanges":true},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options. Changing this creates a\nnew zone.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:dns/zoneShareV2:ZoneShareV2":{"description":"Manages the sharing of a DNS zone in the OpenStack DNS Service.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst example = new openstack.dns.ZoneShareV2(\"example\", {\n    zoneId: \"00000000-0000-0000-0000-000000000000\",\n    targetProjectId: \"11111111-1111-1111-1111-111111111111\",\n    projectId: \"22222222-2222-2222-2222-222222222222\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nexample = openstack.dns.ZoneShareV2(\"example\",\n    zone_id=\"00000000-0000-0000-0000-000000000000\",\n    target_project_id=\"11111111-1111-1111-1111-111111111111\",\n    project_id=\"22222222-2222-2222-2222-222222222222\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new OpenStack.Dns.ZoneShareV2(\"example\", new()\n    {\n        ZoneId = \"00000000-0000-0000-0000-000000000000\",\n        TargetProjectId = \"11111111-1111-1111-1111-111111111111\",\n        ProjectId = \"22222222-2222-2222-2222-222222222222\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dns.NewZoneShareV2(ctx, \"example\", \u0026dns.ZoneShareV2Args{\n\t\t\tZoneId:          pulumi.String(\"00000000-0000-0000-0000-000000000000\"),\n\t\t\tTargetProjectId: pulumi.String(\"11111111-1111-1111-1111-111111111111\"),\n\t\t\tProjectId:       pulumi.String(\"22222222-2222-2222-2222-222222222222\"),\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.openstack.dns.ZoneShareV2;\nimport com.pulumi.openstack.dns.ZoneShareV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new ZoneShareV2(\"example\", ZoneShareV2Args.builder()\n            .zoneId(\"00000000-0000-0000-0000-000000000000\")\n            .targetProjectId(\"11111111-1111-1111-1111-111111111111\")\n            .projectId(\"22222222-2222-2222-2222-222222222222\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: openstack:dns:ZoneShareV2\n    properties:\n      zoneId: 00000000-0000-0000-0000-000000000000\n      targetProjectId: 11111111-1111-1111-1111-111111111111\n      projectId: 22222222-2222-2222-2222-222222222222\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDNS zone share can be imported by specifying the zone ID with share ID and optional project ID:\n\nbash\n\n```sh\n$ pulumi import openstack:dns/zoneShareV2:ZoneShareV2 share_1 60cbdc69-64f9-49ee-b294-352e71e22827/0e1dae51-aee2-4b44-962f-885bb69f3a5c\n```\n\n```sh\n$ pulumi import openstack:dns/zoneShareV2:ZoneShareV2 share_1 60cbdc69-64f9-49ee-b294-352e71e22827/0e1dae51-aee2-4b44-962f-885bb69f3a5c/eb92139f6c054a878852ac9e8cbe612a\n```\n\n","properties":{"projectId":{"type":"string","description":"The ID of the project DNS zone is created for, sets\n`X-Auth-Sudo-Tenant-ID` header (requires an assigned user role in target\nproject).\n"},"region":{"type":"string","description":"The region in which to obtain the V2 DNS client. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new DNS zone share.\n"},"targetProjectId":{"type":"string","description":"The ID of the target project with which the\nDNS zone will be shared.\n"},"zoneId":{"type":"string","description":"The ID of the DNS zone to be shared.\n"}},"required":["projectId","region","targetProjectId","zoneId"],"inputProperties":{"projectId":{"type":"string","description":"The ID of the project DNS zone is created for, sets\n`X-Auth-Sudo-Tenant-ID` header (requires an assigned user role in target\nproject).\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 DNS client. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new DNS zone share.\n"},"targetProjectId":{"type":"string","description":"The ID of the target project with which the\nDNS zone will be shared.\n","willReplaceOnChanges":true},"zoneId":{"type":"string","description":"The ID of the DNS zone to be shared.\n","willReplaceOnChanges":true}},"requiredInputs":["targetProjectId","zoneId"],"stateInputs":{"description":"Input properties used for looking up and filtering ZoneShareV2 resources.\n","properties":{"projectId":{"type":"string","description":"The ID of the project DNS zone is created for, sets\n`X-Auth-Sudo-Tenant-ID` header (requires an assigned user role in target\nproject).\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 DNS client. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new DNS zone share.\n"},"targetProjectId":{"type":"string","description":"The ID of the target project with which the\nDNS zone will be shared.\n","willReplaceOnChanges":true},"zoneId":{"type":"string","description":"The ID of the DNS zone to be shared.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:firewall/groupV2:GroupV2":{"description":"Manages a v2 firewall group resource within OpenStack.\n\n\u003e **Note:** Firewall v2 has no support for OVN currently.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst rule1 = new openstack.firewall.RuleV2(\"rule_1\", {\n    name: \"firewall_rule_2\",\n    description: \"drop TELNET traffic\",\n    action: \"deny\",\n    protocol: \"tcp\",\n    destinationPort: \"23\",\n    enabled: true,\n});\nconst rule2 = new openstack.firewall.RuleV2(\"rule_2\", {\n    name: \"firewall_rule_1\",\n    description: \"drop NTP traffic\",\n    action: \"deny\",\n    protocol: \"udp\",\n    destinationPort: \"123\",\n    enabled: false,\n});\nconst policy1 = new openstack.firewall.PolicyV2(\"policy_1\", {\n    name: \"firewall_ingress_policy\",\n    rules: [rule1.id],\n});\nconst policy2 = new openstack.firewall.PolicyV2(\"policy_2\", {\n    name: \"firewall_egress_policy\",\n    rules: [rule2.id],\n});\nconst group1 = new openstack.firewall.GroupV2(\"group_1\", {\n    name: \"firewall_group\",\n    ingressFirewallPolicyId: policy1.id,\n    egressFirewallPolicyId: policy2.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nrule1 = openstack.firewall.RuleV2(\"rule_1\",\n    name=\"firewall_rule_2\",\n    description=\"drop TELNET traffic\",\n    action=\"deny\",\n    protocol=\"tcp\",\n    destination_port=\"23\",\n    enabled=True)\nrule2 = openstack.firewall.RuleV2(\"rule_2\",\n    name=\"firewall_rule_1\",\n    description=\"drop NTP traffic\",\n    action=\"deny\",\n    protocol=\"udp\",\n    destination_port=\"123\",\n    enabled=False)\npolicy1 = openstack.firewall.PolicyV2(\"policy_1\",\n    name=\"firewall_ingress_policy\",\n    rules=[rule1.id])\npolicy2 = openstack.firewall.PolicyV2(\"policy_2\",\n    name=\"firewall_egress_policy\",\n    rules=[rule2.id])\ngroup1 = openstack.firewall.GroupV2(\"group_1\",\n    name=\"firewall_group\",\n    ingress_firewall_policy_id=policy1.id,\n    egress_firewall_policy_id=policy2.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var rule1 = new OpenStack.Firewall.RuleV2(\"rule_1\", new()\n    {\n        Name = \"firewall_rule_2\",\n        Description = \"drop TELNET traffic\",\n        Action = \"deny\",\n        Protocol = \"tcp\",\n        DestinationPort = \"23\",\n        Enabled = true,\n    });\n\n    var rule2 = new OpenStack.Firewall.RuleV2(\"rule_2\", new()\n    {\n        Name = \"firewall_rule_1\",\n        Description = \"drop NTP traffic\",\n        Action = \"deny\",\n        Protocol = \"udp\",\n        DestinationPort = \"123\",\n        Enabled = false,\n    });\n\n    var policy1 = new OpenStack.Firewall.PolicyV2(\"policy_1\", new()\n    {\n        Name = \"firewall_ingress_policy\",\n        Rules = new[]\n        {\n            rule1.Id,\n        },\n    });\n\n    var policy2 = new OpenStack.Firewall.PolicyV2(\"policy_2\", new()\n    {\n        Name = \"firewall_egress_policy\",\n        Rules = new[]\n        {\n            rule2.Id,\n        },\n    });\n\n    var group1 = new OpenStack.Firewall.GroupV2(\"group_1\", new()\n    {\n        Name = \"firewall_group\",\n        IngressFirewallPolicyId = policy1.Id,\n        EgressFirewallPolicyId = policy2.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/firewall\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\trule1, err := firewall.NewRuleV2(ctx, \"rule_1\", \u0026firewall.RuleV2Args{\n\t\t\tName:            pulumi.String(\"firewall_rule_2\"),\n\t\t\tDescription:     pulumi.String(\"drop TELNET traffic\"),\n\t\t\tAction:          pulumi.String(\"deny\"),\n\t\t\tProtocol:        pulumi.String(\"tcp\"),\n\t\t\tDestinationPort: pulumi.String(\"23\"),\n\t\t\tEnabled:         pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trule2, err := firewall.NewRuleV2(ctx, \"rule_2\", \u0026firewall.RuleV2Args{\n\t\t\tName:            pulumi.String(\"firewall_rule_1\"),\n\t\t\tDescription:     pulumi.String(\"drop NTP traffic\"),\n\t\t\tAction:          pulumi.String(\"deny\"),\n\t\t\tProtocol:        pulumi.String(\"udp\"),\n\t\t\tDestinationPort: pulumi.String(\"123\"),\n\t\t\tEnabled:         pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpolicy1, err := firewall.NewPolicyV2(ctx, \"policy_1\", \u0026firewall.PolicyV2Args{\n\t\t\tName: pulumi.String(\"firewall_ingress_policy\"),\n\t\t\tRules: pulumi.StringArray{\n\t\t\t\trule1.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpolicy2, err := firewall.NewPolicyV2(ctx, \"policy_2\", \u0026firewall.PolicyV2Args{\n\t\t\tName: pulumi.String(\"firewall_egress_policy\"),\n\t\t\tRules: pulumi.StringArray{\n\t\t\t\trule2.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firewall.NewGroupV2(ctx, \"group_1\", \u0026firewall.GroupV2Args{\n\t\t\tName:                    pulumi.String(\"firewall_group\"),\n\t\t\tIngressFirewallPolicyId: policy1.ID(),\n\t\t\tEgressFirewallPolicyId:  policy2.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.openstack.firewall.RuleV2;\nimport com.pulumi.openstack.firewall.RuleV2Args;\nimport com.pulumi.openstack.firewall.PolicyV2;\nimport com.pulumi.openstack.firewall.PolicyV2Args;\nimport com.pulumi.openstack.firewall.GroupV2;\nimport com.pulumi.openstack.firewall.GroupV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 rule1 = new RuleV2(\"rule1\", RuleV2Args.builder()\n            .name(\"firewall_rule_2\")\n            .description(\"drop TELNET traffic\")\n            .action(\"deny\")\n            .protocol(\"tcp\")\n            .destinationPort(\"23\")\n            .enabled(true)\n            .build());\n\n        var rule2 = new RuleV2(\"rule2\", RuleV2Args.builder()\n            .name(\"firewall_rule_1\")\n            .description(\"drop NTP traffic\")\n            .action(\"deny\")\n            .protocol(\"udp\")\n            .destinationPort(\"123\")\n            .enabled(false)\n            .build());\n\n        var policy1 = new PolicyV2(\"policy1\", PolicyV2Args.builder()\n            .name(\"firewall_ingress_policy\")\n            .rules(rule1.id())\n            .build());\n\n        var policy2 = new PolicyV2(\"policy2\", PolicyV2Args.builder()\n            .name(\"firewall_egress_policy\")\n            .rules(rule2.id())\n            .build());\n\n        var group1 = new GroupV2(\"group1\", GroupV2Args.builder()\n            .name(\"firewall_group\")\n            .ingressFirewallPolicyId(policy1.id())\n            .egressFirewallPolicyId(policy2.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  rule1:\n    type: openstack:firewall:RuleV2\n    name: rule_1\n    properties:\n      name: firewall_rule_2\n      description: drop TELNET traffic\n      action: deny\n      protocol: tcp\n      destinationPort: '23'\n      enabled: 'true'\n  rule2:\n    type: openstack:firewall:RuleV2\n    name: rule_2\n    properties:\n      name: firewall_rule_1\n      description: drop NTP traffic\n      action: deny\n      protocol: udp\n      destinationPort: '123'\n      enabled: 'false'\n  policy1:\n    type: openstack:firewall:PolicyV2\n    name: policy_1\n    properties:\n      name: firewall_ingress_policy\n      rules:\n        - ${rule1.id}\n  policy2:\n    type: openstack:firewall:PolicyV2\n    name: policy_2\n    properties:\n      name: firewall_egress_policy\n      rules:\n        - ${rule2.id}\n  group1:\n    type: openstack:firewall:GroupV2\n    name: group_1\n    properties:\n      name: firewall_group\n      ingressFirewallPolicyId: ${policy1.id}\n      egressFirewallPolicyId: ${policy2.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFirewall groups can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:firewall/groupV2:GroupV2 group_1 c9e39fb2-ce20-46c8-a964-25f3898c7a97\n```\n","properties":{"adminStateUp":{"type":"boolean","description":"Administrative up/down status for the firewall\ngroup (must be \"true\" or \"false\" if provided - defaults to \"true\").\nChanging this updates the \u003cspan pulumi-lang-nodejs=\"`adminStateUp`\" pulumi-lang-dotnet=\"`AdminStateUp`\" pulumi-lang-go=\"`adminStateUp`\" pulumi-lang-python=\"`admin_state_up`\" pulumi-lang-yaml=\"`adminStateUp`\" pulumi-lang-java=\"`adminStateUp`\"\u003e`admin_state_up`\u003c/span\u003e of an existing firewall group.\n"},"description":{"type":"string","description":"A description for the firewall group. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\"\u003e`description`\u003c/span\u003e of an existing firewall group.\n"},"egressFirewallPolicyId":{"type":"string","description":"The egress firewall policy resource\nid for the firewall group. Changing this updates the\n\u003cspan pulumi-lang-nodejs=\"`egressFirewallPolicyId`\" pulumi-lang-dotnet=\"`EgressFirewallPolicyId`\" pulumi-lang-go=\"`egressFirewallPolicyId`\" pulumi-lang-python=\"`egress_firewall_policy_id`\" pulumi-lang-yaml=\"`egressFirewallPolicyId`\" pulumi-lang-java=\"`egressFirewallPolicyId`\"\u003e`egress_firewall_policy_id`\u003c/span\u003e of an existing firewall group.\n"},"ingressFirewallPolicyId":{"type":"string","description":"The ingress firewall policy resource\nid for the firewall group. Changing this updates the\n\u003cspan pulumi-lang-nodejs=\"`ingressFirewallPolicyId`\" pulumi-lang-dotnet=\"`IngressFirewallPolicyId`\" pulumi-lang-go=\"`ingressFirewallPolicyId`\" pulumi-lang-python=\"`ingress_firewall_policy_id`\" pulumi-lang-yaml=\"`ingressFirewallPolicyId`\" pulumi-lang-java=\"`ingressFirewallPolicyId`\"\u003e`ingress_firewall_policy_id`\u003c/span\u003e of an existing firewall group.\n"},"name":{"type":"string","description":"A name for the firewall group. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e of an existing firewall.\n"},"ports":{"type":"array","items":{"type":"string"},"description":"Port(s) to associate this firewall group\nwith. Must be a list of strings. Changing this updates the associated ports\nof an existing firewall group.\n"},"projectId":{"type":"string","description":"This argument conflicts and  is interchangeable\nwith \u003cspan pulumi-lang-nodejs=\"`tenantId`\" pulumi-lang-dotnet=\"`TenantId`\" pulumi-lang-go=\"`tenantId`\" pulumi-lang-python=\"`tenant_id`\" pulumi-lang-yaml=\"`tenantId`\" pulumi-lang-java=\"`tenantId`\"\u003e`tenant_id`\u003c/span\u003e. The owner of the firewall group. Required if admin wants\nto create a firewall group for another project. Changing this creates a new\nfirewall group.\n"},"region":{"type":"string","description":"The region in which to obtain the v2 networking client.\nA networking client is needed to create a firewall group. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nfirewall group.\n"},"shared":{"type":"boolean","description":"Sharing status of the firewall group (must be \"true\"\nor \"false\" if provided). If this is \"true\" the firewall group is visible to,\nand can be used in, firewalls in other tenants. Changing this updates the\n\u003cspan pulumi-lang-nodejs=\"`shared`\" pulumi-lang-dotnet=\"`Shared`\" pulumi-lang-go=\"`shared`\" pulumi-lang-python=\"`shared`\" pulumi-lang-yaml=\"`shared`\" pulumi-lang-java=\"`shared`\"\u003e`shared`\u003c/span\u003e status of an existing firewall group. Only administrative users\ncan specify if the firewall group should be shared.\n"},"status":{"type":"string","description":"The status of the firewall group.\n"},"tenantId":{"type":"string","description":"This argument conflicts and is interchangeable with\n\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`project_id`\u003c/span\u003e. The owner of the firewall group. Required if admin wants to\ncreate a firewall group for another tenant. Changing this creates a new\nfirewall group.\n"}},"required":["name","projectId","region","status","tenantId"],"inputProperties":{"adminStateUp":{"type":"boolean","description":"Administrative up/down status for the firewall\ngroup (must be \"true\" or \"false\" if provided - defaults to \"true\").\nChanging this updates the \u003cspan pulumi-lang-nodejs=\"`adminStateUp`\" pulumi-lang-dotnet=\"`AdminStateUp`\" pulumi-lang-go=\"`adminStateUp`\" pulumi-lang-python=\"`admin_state_up`\" pulumi-lang-yaml=\"`adminStateUp`\" pulumi-lang-java=\"`adminStateUp`\"\u003e`admin_state_up`\u003c/span\u003e of an existing firewall group.\n"},"description":{"type":"string","description":"A description for the firewall group. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\"\u003e`description`\u003c/span\u003e of an existing firewall group.\n"},"egressFirewallPolicyId":{"type":"string","description":"The egress firewall policy resource\nid for the firewall group. Changing this updates the\n\u003cspan pulumi-lang-nodejs=\"`egressFirewallPolicyId`\" pulumi-lang-dotnet=\"`EgressFirewallPolicyId`\" pulumi-lang-go=\"`egressFirewallPolicyId`\" pulumi-lang-python=\"`egress_firewall_policy_id`\" pulumi-lang-yaml=\"`egressFirewallPolicyId`\" pulumi-lang-java=\"`egressFirewallPolicyId`\"\u003e`egress_firewall_policy_id`\u003c/span\u003e of an existing firewall group.\n"},"ingressFirewallPolicyId":{"type":"string","description":"The ingress firewall policy resource\nid for the firewall group. Changing this updates the\n\u003cspan pulumi-lang-nodejs=\"`ingressFirewallPolicyId`\" pulumi-lang-dotnet=\"`IngressFirewallPolicyId`\" pulumi-lang-go=\"`ingressFirewallPolicyId`\" pulumi-lang-python=\"`ingress_firewall_policy_id`\" pulumi-lang-yaml=\"`ingressFirewallPolicyId`\" pulumi-lang-java=\"`ingressFirewallPolicyId`\"\u003e`ingress_firewall_policy_id`\u003c/span\u003e of an existing firewall group.\n"},"name":{"type":"string","description":"A name for the firewall group. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e of an existing firewall.\n"},"ports":{"type":"array","items":{"type":"string"},"description":"Port(s) to associate this firewall group\nwith. Must be a list of strings. Changing this updates the associated ports\nof an existing firewall group.\n"},"projectId":{"type":"string","description":"This argument conflicts and  is interchangeable\nwith \u003cspan pulumi-lang-nodejs=\"`tenantId`\" pulumi-lang-dotnet=\"`TenantId`\" pulumi-lang-go=\"`tenantId`\" pulumi-lang-python=\"`tenant_id`\" pulumi-lang-yaml=\"`tenantId`\" pulumi-lang-java=\"`tenantId`\"\u003e`tenant_id`\u003c/span\u003e. The owner of the firewall group. Required if admin wants\nto create a firewall group for another project. Changing this creates a new\nfirewall group.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the v2 networking client.\nA networking client is needed to create a firewall group. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nfirewall group.\n","willReplaceOnChanges":true},"shared":{"type":"boolean","description":"Sharing status of the firewall group (must be \"true\"\nor \"false\" if provided). If this is \"true\" the firewall group is visible to,\nand can be used in, firewalls in other tenants. Changing this updates the\n\u003cspan pulumi-lang-nodejs=\"`shared`\" pulumi-lang-dotnet=\"`Shared`\" pulumi-lang-go=\"`shared`\" pulumi-lang-python=\"`shared`\" pulumi-lang-yaml=\"`shared`\" pulumi-lang-java=\"`shared`\"\u003e`shared`\u003c/span\u003e status of an existing firewall group. Only administrative users\ncan specify if the firewall group should be shared.\n"},"tenantId":{"type":"string","description":"This argument conflicts and is interchangeable with\n\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`project_id`\u003c/span\u003e. The owner of the firewall group. Required if admin wants to\ncreate a firewall group for another tenant. Changing this creates a new\nfirewall group.\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering GroupV2 resources.\n","properties":{"adminStateUp":{"type":"boolean","description":"Administrative up/down status for the firewall\ngroup (must be \"true\" or \"false\" if provided - defaults to \"true\").\nChanging this updates the \u003cspan pulumi-lang-nodejs=\"`adminStateUp`\" pulumi-lang-dotnet=\"`AdminStateUp`\" pulumi-lang-go=\"`adminStateUp`\" pulumi-lang-python=\"`admin_state_up`\" pulumi-lang-yaml=\"`adminStateUp`\" pulumi-lang-java=\"`adminStateUp`\"\u003e`admin_state_up`\u003c/span\u003e of an existing firewall group.\n"},"description":{"type":"string","description":"A description for the firewall group. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\"\u003e`description`\u003c/span\u003e of an existing firewall group.\n"},"egressFirewallPolicyId":{"type":"string","description":"The egress firewall policy resource\nid for the firewall group. Changing this updates the\n\u003cspan pulumi-lang-nodejs=\"`egressFirewallPolicyId`\" pulumi-lang-dotnet=\"`EgressFirewallPolicyId`\" pulumi-lang-go=\"`egressFirewallPolicyId`\" pulumi-lang-python=\"`egress_firewall_policy_id`\" pulumi-lang-yaml=\"`egressFirewallPolicyId`\" pulumi-lang-java=\"`egressFirewallPolicyId`\"\u003e`egress_firewall_policy_id`\u003c/span\u003e of an existing firewall group.\n"},"ingressFirewallPolicyId":{"type":"string","description":"The ingress firewall policy resource\nid for the firewall group. Changing this updates the\n\u003cspan pulumi-lang-nodejs=\"`ingressFirewallPolicyId`\" pulumi-lang-dotnet=\"`IngressFirewallPolicyId`\" pulumi-lang-go=\"`ingressFirewallPolicyId`\" pulumi-lang-python=\"`ingress_firewall_policy_id`\" pulumi-lang-yaml=\"`ingressFirewallPolicyId`\" pulumi-lang-java=\"`ingressFirewallPolicyId`\"\u003e`ingress_firewall_policy_id`\u003c/span\u003e of an existing firewall group.\n"},"name":{"type":"string","description":"A name for the firewall group. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e of an existing firewall.\n"},"ports":{"type":"array","items":{"type":"string"},"description":"Port(s) to associate this firewall group\nwith. Must be a list of strings. Changing this updates the associated ports\nof an existing firewall group.\n"},"projectId":{"type":"string","description":"This argument conflicts and  is interchangeable\nwith \u003cspan pulumi-lang-nodejs=\"`tenantId`\" pulumi-lang-dotnet=\"`TenantId`\" pulumi-lang-go=\"`tenantId`\" pulumi-lang-python=\"`tenant_id`\" pulumi-lang-yaml=\"`tenantId`\" pulumi-lang-java=\"`tenantId`\"\u003e`tenant_id`\u003c/span\u003e. The owner of the firewall group. Required if admin wants\nto create a firewall group for another project. Changing this creates a new\nfirewall group.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the v2 networking client.\nA networking client is needed to create a firewall group. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nfirewall group.\n","willReplaceOnChanges":true},"shared":{"type":"boolean","description":"Sharing status of the firewall group (must be \"true\"\nor \"false\" if provided). If this is \"true\" the firewall group is visible to,\nand can be used in, firewalls in other tenants. Changing this updates the\n\u003cspan pulumi-lang-nodejs=\"`shared`\" pulumi-lang-dotnet=\"`Shared`\" pulumi-lang-go=\"`shared`\" pulumi-lang-python=\"`shared`\" pulumi-lang-yaml=\"`shared`\" pulumi-lang-java=\"`shared`\"\u003e`shared`\u003c/span\u003e status of an existing firewall group. Only administrative users\ncan specify if the firewall group should be shared.\n"},"status":{"type":"string","description":"The status of the firewall group.\n"},"tenantId":{"type":"string","description":"This argument conflicts and is interchangeable with\n\u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`project_id`\u003c/span\u003e. The owner of the firewall group. Required if admin wants to\ncreate a firewall group for another tenant. Changing this creates a new\nfirewall group.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:firewall/policyV2:PolicyV2":{"description":"Manages a v2 firewall policy resource within OpenStack.\n\n\u003e **Note:** Firewall v2 has no support for OVN currently.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst rule1 = new openstack.firewall.RuleV2(\"rule_1\", {\n    name: \"firewall_rule_1\",\n    description: \"drop TELNET traffic\",\n    action: \"deny\",\n    protocol: \"tcp\",\n    destinationPort: \"23\",\n    enabled: true,\n});\nconst rule2 = new openstack.firewall.RuleV2(\"rule_2\", {\n    name: \"firewall_rule_2\",\n    description: \"drop NTP traffic\",\n    action: \"deny\",\n    protocol: \"udp\",\n    destinationPort: \"123\",\n    enabled: false,\n});\nconst policy1 = new openstack.firewall.PolicyV2(\"policy_1\", {\n    name: \"firewall_policy\",\n    rules: [\n        rule1.id,\n        rule2.id,\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nrule1 = openstack.firewall.RuleV2(\"rule_1\",\n    name=\"firewall_rule_1\",\n    description=\"drop TELNET traffic\",\n    action=\"deny\",\n    protocol=\"tcp\",\n    destination_port=\"23\",\n    enabled=True)\nrule2 = openstack.firewall.RuleV2(\"rule_2\",\n    name=\"firewall_rule_2\",\n    description=\"drop NTP traffic\",\n    action=\"deny\",\n    protocol=\"udp\",\n    destination_port=\"123\",\n    enabled=False)\npolicy1 = openstack.firewall.PolicyV2(\"policy_1\",\n    name=\"firewall_policy\",\n    rules=[\n        rule1.id,\n        rule2.id,\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var rule1 = new OpenStack.Firewall.RuleV2(\"rule_1\", new()\n    {\n        Name = \"firewall_rule_1\",\n        Description = \"drop TELNET traffic\",\n        Action = \"deny\",\n        Protocol = \"tcp\",\n        DestinationPort = \"23\",\n        Enabled = true,\n    });\n\n    var rule2 = new OpenStack.Firewall.RuleV2(\"rule_2\", new()\n    {\n        Name = \"firewall_rule_2\",\n        Description = \"drop NTP traffic\",\n        Action = \"deny\",\n        Protocol = \"udp\",\n        DestinationPort = \"123\",\n        Enabled = false,\n    });\n\n    var policy1 = new OpenStack.Firewall.PolicyV2(\"policy_1\", new()\n    {\n        Name = \"firewall_policy\",\n        Rules = new[]\n        {\n            rule1.Id,\n            rule2.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/firewall\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\trule1, err := firewall.NewRuleV2(ctx, \"rule_1\", \u0026firewall.RuleV2Args{\n\t\t\tName:            pulumi.String(\"firewall_rule_1\"),\n\t\t\tDescription:     pulumi.String(\"drop TELNET traffic\"),\n\t\t\tAction:          pulumi.String(\"deny\"),\n\t\t\tProtocol:        pulumi.String(\"tcp\"),\n\t\t\tDestinationPort: pulumi.String(\"23\"),\n\t\t\tEnabled:         pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trule2, err := firewall.NewRuleV2(ctx, \"rule_2\", \u0026firewall.RuleV2Args{\n\t\t\tName:            pulumi.String(\"firewall_rule_2\"),\n\t\t\tDescription:     pulumi.String(\"drop NTP traffic\"),\n\t\t\tAction:          pulumi.String(\"deny\"),\n\t\t\tProtocol:        pulumi.String(\"udp\"),\n\t\t\tDestinationPort: pulumi.String(\"123\"),\n\t\t\tEnabled:         pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firewall.NewPolicyV2(ctx, \"policy_1\", \u0026firewall.PolicyV2Args{\n\t\t\tName: pulumi.String(\"firewall_policy\"),\n\t\t\tRules: pulumi.StringArray{\n\t\t\t\trule1.ID(),\n\t\t\t\trule2.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.openstack.firewall.RuleV2;\nimport com.pulumi.openstack.firewall.RuleV2Args;\nimport com.pulumi.openstack.firewall.PolicyV2;\nimport com.pulumi.openstack.firewall.PolicyV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 rule1 = new RuleV2(\"rule1\", RuleV2Args.builder()\n            .name(\"firewall_rule_1\")\n            .description(\"drop TELNET traffic\")\n            .action(\"deny\")\n            .protocol(\"tcp\")\n            .destinationPort(\"23\")\n            .enabled(true)\n            .build());\n\n        var rule2 = new RuleV2(\"rule2\", RuleV2Args.builder()\n            .name(\"firewall_rule_2\")\n            .description(\"drop NTP traffic\")\n            .action(\"deny\")\n            .protocol(\"udp\")\n            .destinationPort(\"123\")\n            .enabled(false)\n            .build());\n\n        var policy1 = new PolicyV2(\"policy1\", PolicyV2Args.builder()\n            .name(\"firewall_policy\")\n            .rules(            \n                rule1.id(),\n                rule2.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  rule1:\n    type: openstack:firewall:RuleV2\n    name: rule_1\n    properties:\n      name: firewall_rule_1\n      description: drop TELNET traffic\n      action: deny\n      protocol: tcp\n      destinationPort: '23'\n      enabled: 'true'\n  rule2:\n    type: openstack:firewall:RuleV2\n    name: rule_2\n    properties:\n      name: firewall_rule_2\n      description: drop NTP traffic\n      action: deny\n      protocol: udp\n      destinationPort: '123'\n      enabled: 'false'\n  policy1:\n    type: openstack:firewall:PolicyV2\n    name: policy_1\n    properties:\n      name: firewall_policy\n      rules:\n        - ${rule1.id}\n        - ${rule2.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFirewall Policies can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:firewall/policyV2:PolicyV2 policy_1 07f422e6-c596-474b-8b94-fe2c12506ce0\n```\n","properties":{"audited":{"type":"boolean","description":"Audit status of the firewall policy\n(must be \"true\" or \"false\" if provided - defaults to \"false\").\nThis status is set to \"false\" whenever the firewall policy or any of its\nrules are changed. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`audited`\" pulumi-lang-dotnet=\"`Audited`\" pulumi-lang-go=\"`audited`\" pulumi-lang-python=\"`audited`\" pulumi-lang-yaml=\"`audited`\" pulumi-lang-java=\"`audited`\"\u003e`audited`\u003c/span\u003e status of an existing\nfirewall policy.\n"},"description":{"type":"string","description":"A description for the firewall policy. Changing\nthis updates the \u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\"\u003e`description`\u003c/span\u003e of an existing firewall policy.\n"},"name":{"type":"string","description":"A name for the firewall policy. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e of an existing firewall policy.\n"},"projectId":{"type":"string","description":"This argument conflicts and is interchangeable\nwith \u003cspan pulumi-lang-nodejs=\"`tenantId`\" pulumi-lang-dotnet=\"`TenantId`\" pulumi-lang-go=\"`tenantId`\" pulumi-lang-python=\"`tenant_id`\" pulumi-lang-yaml=\"`tenantId`\" pulumi-lang-java=\"`tenantId`\"\u003e`tenant_id`\u003c/span\u003e. The owner of the firewall policy. Required if admin wants\nto create a firewall policy for another project. Changing this creates a new\nfirewall policy.\n"},"region":{"type":"string","description":"The region in which to obtain the v2 networking client.\nA networking client is needed to create a firewall policy. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nfirewall policy.\n"},"rules":{"type":"array","items":{"type":"string"},"description":"An array of one or more firewall rules that comprise\nthe policy. Changing this results in adding/removing rules from the\nexisting firewall policy.\n"},"shared":{"type":"boolean","description":"Sharing status of the firewall policy (must be \"true\"\nor \"false\" if provided). If this is \"true\" the policy is visible to, and\ncan be used in, firewalls in other tenants. Changing this updates the\n\u003cspan pulumi-lang-nodejs=\"`shared`\" pulumi-lang-dotnet=\"`Shared`\" pulumi-lang-go=\"`shared`\" pulumi-lang-python=\"`shared`\" pulumi-lang-yaml=\"`shared`\" pulumi-lang-java=\"`shared`\"\u003e`shared`\u003c/span\u003e status of an existing firewall policy. Only administrative users\ncan specify if the policy should be shared.\n"},"tenantId":{"type":"string","description":"This argument conflicts and is interchangeable\nwith \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`project_id`\u003c/span\u003e. The owner of the firewall policy. Required if admin wants\nto create a firewall policy for another tenant. Changing this creates a new\nfirewall policy.\n"}},"required":["name","projectId","region","tenantId"],"inputProperties":{"audited":{"type":"boolean","description":"Audit status of the firewall policy\n(must be \"true\" or \"false\" if provided - defaults to \"false\").\nThis status is set to \"false\" whenever the firewall policy or any of its\nrules are changed. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`audited`\" pulumi-lang-dotnet=\"`Audited`\" pulumi-lang-go=\"`audited`\" pulumi-lang-python=\"`audited`\" pulumi-lang-yaml=\"`audited`\" pulumi-lang-java=\"`audited`\"\u003e`audited`\u003c/span\u003e status of an existing\nfirewall policy.\n"},"description":{"type":"string","description":"A description for the firewall policy. Changing\nthis updates the \u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\"\u003e`description`\u003c/span\u003e of an existing firewall policy.\n"},"name":{"type":"string","description":"A name for the firewall policy. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e of an existing firewall policy.\n"},"projectId":{"type":"string","description":"This argument conflicts and is interchangeable\nwith \u003cspan pulumi-lang-nodejs=\"`tenantId`\" pulumi-lang-dotnet=\"`TenantId`\" pulumi-lang-go=\"`tenantId`\" pulumi-lang-python=\"`tenant_id`\" pulumi-lang-yaml=\"`tenantId`\" pulumi-lang-java=\"`tenantId`\"\u003e`tenant_id`\u003c/span\u003e. The owner of the firewall policy. Required if admin wants\nto create a firewall policy for another project. Changing this creates a new\nfirewall policy.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the v2 networking client.\nA networking client is needed to create a firewall policy. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nfirewall policy.\n","willReplaceOnChanges":true},"rules":{"type":"array","items":{"type":"string"},"description":"An array of one or more firewall rules that comprise\nthe policy. Changing this results in adding/removing rules from the\nexisting firewall policy.\n"},"shared":{"type":"boolean","description":"Sharing status of the firewall policy (must be \"true\"\nor \"false\" if provided). If this is \"true\" the policy is visible to, and\ncan be used in, firewalls in other tenants. Changing this updates the\n\u003cspan pulumi-lang-nodejs=\"`shared`\" pulumi-lang-dotnet=\"`Shared`\" pulumi-lang-go=\"`shared`\" pulumi-lang-python=\"`shared`\" pulumi-lang-yaml=\"`shared`\" pulumi-lang-java=\"`shared`\"\u003e`shared`\u003c/span\u003e status of an existing firewall policy. Only administrative users\ncan specify if the policy should be shared.\n"},"tenantId":{"type":"string","description":"This argument conflicts and is interchangeable\nwith \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`project_id`\u003c/span\u003e. The owner of the firewall policy. Required if admin wants\nto create a firewall policy for another tenant. Changing this creates a new\nfirewall policy.\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering PolicyV2 resources.\n","properties":{"audited":{"type":"boolean","description":"Audit status of the firewall policy\n(must be \"true\" or \"false\" if provided - defaults to \"false\").\nThis status is set to \"false\" whenever the firewall policy or any of its\nrules are changed. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`audited`\" pulumi-lang-dotnet=\"`Audited`\" pulumi-lang-go=\"`audited`\" pulumi-lang-python=\"`audited`\" pulumi-lang-yaml=\"`audited`\" pulumi-lang-java=\"`audited`\"\u003e`audited`\u003c/span\u003e status of an existing\nfirewall policy.\n"},"description":{"type":"string","description":"A description for the firewall policy. Changing\nthis updates the \u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\"\u003e`description`\u003c/span\u003e of an existing firewall policy.\n"},"name":{"type":"string","description":"A name for the firewall policy. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e of an existing firewall policy.\n"},"projectId":{"type":"string","description":"This argument conflicts and is interchangeable\nwith \u003cspan pulumi-lang-nodejs=\"`tenantId`\" pulumi-lang-dotnet=\"`TenantId`\" pulumi-lang-go=\"`tenantId`\" pulumi-lang-python=\"`tenant_id`\" pulumi-lang-yaml=\"`tenantId`\" pulumi-lang-java=\"`tenantId`\"\u003e`tenant_id`\u003c/span\u003e. The owner of the firewall policy. Required if admin wants\nto create a firewall policy for another project. Changing this creates a new\nfirewall policy.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the v2 networking client.\nA networking client is needed to create a firewall policy. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nfirewall policy.\n","willReplaceOnChanges":true},"rules":{"type":"array","items":{"type":"string"},"description":"An array of one or more firewall rules that comprise\nthe policy. Changing this results in adding/removing rules from the\nexisting firewall policy.\n"},"shared":{"type":"boolean","description":"Sharing status of the firewall policy (must be \"true\"\nor \"false\" if provided). If this is \"true\" the policy is visible to, and\ncan be used in, firewalls in other tenants. Changing this updates the\n\u003cspan pulumi-lang-nodejs=\"`shared`\" pulumi-lang-dotnet=\"`Shared`\" pulumi-lang-go=\"`shared`\" pulumi-lang-python=\"`shared`\" pulumi-lang-yaml=\"`shared`\" pulumi-lang-java=\"`shared`\"\u003e`shared`\u003c/span\u003e status of an existing firewall policy. Only administrative users\ncan specify if the policy should be shared.\n"},"tenantId":{"type":"string","description":"This argument conflicts and is interchangeable\nwith \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`project_id`\u003c/span\u003e. The owner of the firewall policy. Required if admin wants\nto create a firewall policy for another tenant. Changing this creates a new\nfirewall policy.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:firewall/ruleV2:RuleV2":{"description":"Manages a v2 firewall rule resource within OpenStack.\n\n\u003e **Note:** Firewall v2 has no support for OVN currently.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst rule2 = new openstack.firewall.RuleV2(\"rule_2\", {\n    name: \"firewall_rule\",\n    description: \"drop TELNET traffic\",\n    action: \"deny\",\n    protocol: \"tcp\",\n    destinationPort: \"23\",\n    enabled: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nrule2 = openstack.firewall.RuleV2(\"rule_2\",\n    name=\"firewall_rule\",\n    description=\"drop TELNET traffic\",\n    action=\"deny\",\n    protocol=\"tcp\",\n    destination_port=\"23\",\n    enabled=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var rule2 = new OpenStack.Firewall.RuleV2(\"rule_2\", new()\n    {\n        Name = \"firewall_rule\",\n        Description = \"drop TELNET traffic\",\n        Action = \"deny\",\n        Protocol = \"tcp\",\n        DestinationPort = \"23\",\n        Enabled = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/firewall\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firewall.NewRuleV2(ctx, \"rule_2\", \u0026firewall.RuleV2Args{\n\t\t\tName:            pulumi.String(\"firewall_rule\"),\n\t\t\tDescription:     pulumi.String(\"drop TELNET traffic\"),\n\t\t\tAction:          pulumi.String(\"deny\"),\n\t\t\tProtocol:        pulumi.String(\"tcp\"),\n\t\t\tDestinationPort: pulumi.String(\"23\"),\n\t\t\tEnabled:         pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openstack.firewall.RuleV2;\nimport com.pulumi.openstack.firewall.RuleV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 rule2 = new RuleV2(\"rule2\", RuleV2Args.builder()\n            .name(\"firewall_rule\")\n            .description(\"drop TELNET traffic\")\n            .action(\"deny\")\n            .protocol(\"tcp\")\n            .destinationPort(\"23\")\n            .enabled(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  rule2:\n    type: openstack:firewall:RuleV2\n    name: rule_2\n    properties:\n      name: firewall_rule\n      description: drop TELNET traffic\n      action: deny\n      protocol: tcp\n      destinationPort: '23'\n      enabled: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFirewall Rules can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:firewall/ruleV2:RuleV2 rule_1 8dbc0c28-e49c-463f-b712-5c5d1bbac327\n```\n","properties":{"action":{"type":"string","description":"Action to be taken (must be \"allow\", \"deny\" or \"reject\")\nwhen the firewall rule matches. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`action`\" pulumi-lang-dotnet=\"`Action`\" pulumi-lang-go=\"`action`\" pulumi-lang-python=\"`action`\" pulumi-lang-yaml=\"`action`\" pulumi-lang-java=\"`action`\"\u003e`action`\u003c/span\u003e of an\nexisting firewall rule. Default is \u003cspan pulumi-lang-nodejs=\"`deny`\" pulumi-lang-dotnet=\"`Deny`\" pulumi-lang-go=\"`deny`\" pulumi-lang-python=\"`deny`\" pulumi-lang-yaml=\"`deny`\" pulumi-lang-java=\"`deny`\"\u003e`deny`\u003c/span\u003e.\n"},"description":{"type":"string","description":"A description for the firewall rule. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\"\u003e`description`\u003c/span\u003e of an existing firewall rule.\n"},"destinationIpAddress":{"type":"string","description":"The destination IP address on which the\nfirewall rule operates. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`destinationIpAddress`\" pulumi-lang-dotnet=\"`DestinationIpAddress`\" pulumi-lang-go=\"`destinationIpAddress`\" pulumi-lang-python=\"`destination_ip_address`\" pulumi-lang-yaml=\"`destinationIpAddress`\" pulumi-lang-java=\"`destinationIpAddress`\"\u003e`destination_ip_address`\u003c/span\u003e\nof an existing firewall rule.\n"},"destinationPort":{"type":"string","description":"The destination port on which the firewall\nrule operates. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`destinationPort`\" pulumi-lang-dotnet=\"`DestinationPort`\" pulumi-lang-go=\"`destinationPort`\" pulumi-lang-python=\"`destination_port`\" pulumi-lang-yaml=\"`destinationPort`\" pulumi-lang-java=\"`destinationPort`\"\u003e`destination_port`\u003c/span\u003e of an existing\nfirewall rule. Require not \u003cspan pulumi-lang-nodejs=\"`any`\" pulumi-lang-dotnet=\"`Any`\" pulumi-lang-go=\"`any`\" pulumi-lang-python=\"`any`\" pulumi-lang-yaml=\"`any`\" pulumi-lang-java=\"`any`\"\u003e`any`\u003c/span\u003e or empty protocol.\n"},"enabled":{"type":"boolean","description":"Enabled status for the firewall rule (must be \"true\"\nor \"false\" if provided - defaults to \"true\"). Changing this updates the\n\u003cspan pulumi-lang-nodejs=\"`enabled`\" pulumi-lang-dotnet=\"`Enabled`\" pulumi-lang-go=\"`enabled`\" pulumi-lang-python=\"`enabled`\" pulumi-lang-yaml=\"`enabled`\" pulumi-lang-java=\"`enabled`\"\u003e`enabled`\u003c/span\u003e status of an existing firewall rule.\n"},"ipVersion":{"type":"integer","description":"IP version, either 4 or 6. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`ipVersion`\" pulumi-lang-dotnet=\"`IpVersion`\" pulumi-lang-go=\"`ipVersion`\" pulumi-lang-python=\"`ip_version`\" pulumi-lang-yaml=\"`ipVersion`\" pulumi-lang-java=\"`ipVersion`\"\u003e`ip_version`\u003c/span\u003e of an existing firewall rule. Default is \u003cspan pulumi-lang-nodejs=\"`4`\" pulumi-lang-dotnet=\"`4`\" pulumi-lang-go=\"`4`\" pulumi-lang-python=\"`4`\" pulumi-lang-yaml=\"`4`\" pulumi-lang-java=\"`4`\"\u003e`4`\u003c/span\u003e.\n"},"name":{"type":"string","description":"A unique name for the firewall rule. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e of an existing firewall rule.\n"},"projectId":{"type":"string","description":"This argument conflicts and is interchangeable\nwith \u003cspan pulumi-lang-nodejs=\"`tenantId`\" pulumi-lang-dotnet=\"`TenantId`\" pulumi-lang-go=\"`tenantId`\" pulumi-lang-python=\"`tenant_id`\" pulumi-lang-yaml=\"`tenantId`\" pulumi-lang-java=\"`tenantId`\"\u003e`tenant_id`\u003c/span\u003e. The owner of the firewall rule. Required if admin wants\nto create a firewall rule for another project. Changing this creates a new\nfirewall rule.\n"},"protocol":{"type":"string","description":"(Optional; Required if \u003cspan pulumi-lang-nodejs=\"`sourcePort`\" pulumi-lang-dotnet=\"`SourcePort`\" pulumi-lang-go=\"`sourcePort`\" pulumi-lang-python=\"`source_port`\" pulumi-lang-yaml=\"`sourcePort`\" pulumi-lang-java=\"`sourcePort`\"\u003e`source_port`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`destinationPort`\" pulumi-lang-dotnet=\"`DestinationPort`\" pulumi-lang-go=\"`destinationPort`\" pulumi-lang-python=\"`destination_port`\" pulumi-lang-yaml=\"`destinationPort`\" pulumi-lang-java=\"`destinationPort`\"\u003e`destination_port`\u003c/span\u003e is not\nempty) The protocol type on which the firewall rule operates.\nValid values are: \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\"\u003e`udp`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`icmp`\" pulumi-lang-dotnet=\"`Icmp`\" pulumi-lang-go=\"`icmp`\" pulumi-lang-python=\"`icmp`\" pulumi-lang-yaml=\"`icmp`\" pulumi-lang-java=\"`icmp`\"\u003e`icmp`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`any`\" pulumi-lang-dotnet=\"`Any`\" pulumi-lang-go=\"`any`\" pulumi-lang-python=\"`any`\" pulumi-lang-yaml=\"`any`\" pulumi-lang-java=\"`any`\"\u003e`any`\u003c/span\u003e. Changing this updates the\n\u003cspan pulumi-lang-nodejs=\"`protocol`\" pulumi-lang-dotnet=\"`Protocol`\" pulumi-lang-go=\"`protocol`\" pulumi-lang-python=\"`protocol`\" pulumi-lang-yaml=\"`protocol`\" pulumi-lang-java=\"`protocol`\"\u003e`protocol`\u003c/span\u003e of an existing firewall rule. Default is \u003cspan pulumi-lang-nodejs=\"`any`\" pulumi-lang-dotnet=\"`Any`\" pulumi-lang-go=\"`any`\" pulumi-lang-python=\"`any`\" pulumi-lang-yaml=\"`any`\" pulumi-lang-java=\"`any`\"\u003e`any`\u003c/span\u003e.\n"},"region":{"type":"string","description":"The region in which to obtain the v2 networking client.\nA networking client is needed to create a firewall rule. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nfirewall rule.\n"},"shared":{"type":"boolean","description":"Sharing status of the firewall rule (must be \"true\"\nor \"false\" if provided). If this is \"true\" the policy is visible to, and\ncan be used in, firewalls in other tenants. Changing this updates the\n\u003cspan pulumi-lang-nodejs=\"`shared`\" pulumi-lang-dotnet=\"`Shared`\" pulumi-lang-go=\"`shared`\" pulumi-lang-python=\"`shared`\" pulumi-lang-yaml=\"`shared`\" pulumi-lang-java=\"`shared`\"\u003e`shared`\u003c/span\u003e status of an existing firewall policy. On\n"},"sourceIpAddress":{"type":"string","description":"The source IP address on which the firewall\nrule operates. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`sourceIpAddress`\" pulumi-lang-dotnet=\"`SourceIpAddress`\" pulumi-lang-go=\"`sourceIpAddress`\" pulumi-lang-python=\"`source_ip_address`\" pulumi-lang-yaml=\"`sourceIpAddress`\" pulumi-lang-java=\"`sourceIpAddress`\"\u003e`source_ip_address`\u003c/span\u003e of an existing\nfirewall rule.\n"},"sourcePort":{"type":"string","description":"The source port on which the firewall\nrule operates. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`sourcePort`\" pulumi-lang-dotnet=\"`SourcePort`\" pulumi-lang-go=\"`sourcePort`\" pulumi-lang-python=\"`source_port`\" pulumi-lang-yaml=\"`sourcePort`\" pulumi-lang-java=\"`sourcePort`\"\u003e`source_port`\u003c/span\u003e of an existing\nfirewall rule. Require not \u003cspan pulumi-lang-nodejs=\"`any`\" pulumi-lang-dotnet=\"`Any`\" pulumi-lang-go=\"`any`\" pulumi-lang-python=\"`any`\" pulumi-lang-yaml=\"`any`\" pulumi-lang-java=\"`any`\"\u003e`any`\u003c/span\u003e or empty protocol.\n"},"tenantId":{"type":"string","description":"This argument conflicts and is interchangeable\nwith \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`project_id`\u003c/span\u003e. The owner of the firewall rule. Required if admin wants\nto create a firewall rule for another tenant. Changing this creates a new\nfirewall rule.\n"}},"required":["name","projectId","region","tenantId"],"inputProperties":{"action":{"type":"string","description":"Action to be taken (must be \"allow\", \"deny\" or \"reject\")\nwhen the firewall rule matches. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`action`\" pulumi-lang-dotnet=\"`Action`\" pulumi-lang-go=\"`action`\" pulumi-lang-python=\"`action`\" pulumi-lang-yaml=\"`action`\" pulumi-lang-java=\"`action`\"\u003e`action`\u003c/span\u003e of an\nexisting firewall rule. Default is \u003cspan pulumi-lang-nodejs=\"`deny`\" pulumi-lang-dotnet=\"`Deny`\" pulumi-lang-go=\"`deny`\" pulumi-lang-python=\"`deny`\" pulumi-lang-yaml=\"`deny`\" pulumi-lang-java=\"`deny`\"\u003e`deny`\u003c/span\u003e.\n"},"description":{"type":"string","description":"A description for the firewall rule. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\"\u003e`description`\u003c/span\u003e of an existing firewall rule.\n"},"destinationIpAddress":{"type":"string","description":"The destination IP address on which the\nfirewall rule operates. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`destinationIpAddress`\" pulumi-lang-dotnet=\"`DestinationIpAddress`\" pulumi-lang-go=\"`destinationIpAddress`\" pulumi-lang-python=\"`destination_ip_address`\" pulumi-lang-yaml=\"`destinationIpAddress`\" pulumi-lang-java=\"`destinationIpAddress`\"\u003e`destination_ip_address`\u003c/span\u003e\nof an existing firewall rule.\n"},"destinationPort":{"type":"string","description":"The destination port on which the firewall\nrule operates. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`destinationPort`\" pulumi-lang-dotnet=\"`DestinationPort`\" pulumi-lang-go=\"`destinationPort`\" pulumi-lang-python=\"`destination_port`\" pulumi-lang-yaml=\"`destinationPort`\" pulumi-lang-java=\"`destinationPort`\"\u003e`destination_port`\u003c/span\u003e of an existing\nfirewall rule. Require not \u003cspan pulumi-lang-nodejs=\"`any`\" pulumi-lang-dotnet=\"`Any`\" pulumi-lang-go=\"`any`\" pulumi-lang-python=\"`any`\" pulumi-lang-yaml=\"`any`\" pulumi-lang-java=\"`any`\"\u003e`any`\u003c/span\u003e or empty protocol.\n"},"enabled":{"type":"boolean","description":"Enabled status for the firewall rule (must be \"true\"\nor \"false\" if provided - defaults to \"true\"). Changing this updates the\n\u003cspan pulumi-lang-nodejs=\"`enabled`\" pulumi-lang-dotnet=\"`Enabled`\" pulumi-lang-go=\"`enabled`\" pulumi-lang-python=\"`enabled`\" pulumi-lang-yaml=\"`enabled`\" pulumi-lang-java=\"`enabled`\"\u003e`enabled`\u003c/span\u003e status of an existing firewall rule.\n"},"ipVersion":{"type":"integer","description":"IP version, either 4 or 6. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`ipVersion`\" pulumi-lang-dotnet=\"`IpVersion`\" pulumi-lang-go=\"`ipVersion`\" pulumi-lang-python=\"`ip_version`\" pulumi-lang-yaml=\"`ipVersion`\" pulumi-lang-java=\"`ipVersion`\"\u003e`ip_version`\u003c/span\u003e of an existing firewall rule. Default is \u003cspan pulumi-lang-nodejs=\"`4`\" pulumi-lang-dotnet=\"`4`\" pulumi-lang-go=\"`4`\" pulumi-lang-python=\"`4`\" pulumi-lang-yaml=\"`4`\" pulumi-lang-java=\"`4`\"\u003e`4`\u003c/span\u003e.\n"},"name":{"type":"string","description":"A unique name for the firewall rule. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e of an existing firewall rule.\n"},"projectId":{"type":"string","description":"This argument conflicts and is interchangeable\nwith \u003cspan pulumi-lang-nodejs=\"`tenantId`\" pulumi-lang-dotnet=\"`TenantId`\" pulumi-lang-go=\"`tenantId`\" pulumi-lang-python=\"`tenant_id`\" pulumi-lang-yaml=\"`tenantId`\" pulumi-lang-java=\"`tenantId`\"\u003e`tenant_id`\u003c/span\u003e. The owner of the firewall rule. Required if admin wants\nto create a firewall rule for another project. Changing this creates a new\nfirewall rule.\n","willReplaceOnChanges":true},"protocol":{"type":"string","description":"(Optional; Required if \u003cspan pulumi-lang-nodejs=\"`sourcePort`\" pulumi-lang-dotnet=\"`SourcePort`\" pulumi-lang-go=\"`sourcePort`\" pulumi-lang-python=\"`source_port`\" pulumi-lang-yaml=\"`sourcePort`\" pulumi-lang-java=\"`sourcePort`\"\u003e`source_port`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`destinationPort`\" pulumi-lang-dotnet=\"`DestinationPort`\" pulumi-lang-go=\"`destinationPort`\" pulumi-lang-python=\"`destination_port`\" pulumi-lang-yaml=\"`destinationPort`\" pulumi-lang-java=\"`destinationPort`\"\u003e`destination_port`\u003c/span\u003e is not\nempty) The protocol type on which the firewall rule operates.\nValid values are: \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\"\u003e`udp`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`icmp`\" pulumi-lang-dotnet=\"`Icmp`\" pulumi-lang-go=\"`icmp`\" pulumi-lang-python=\"`icmp`\" pulumi-lang-yaml=\"`icmp`\" pulumi-lang-java=\"`icmp`\"\u003e`icmp`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`any`\" pulumi-lang-dotnet=\"`Any`\" pulumi-lang-go=\"`any`\" pulumi-lang-python=\"`any`\" pulumi-lang-yaml=\"`any`\" pulumi-lang-java=\"`any`\"\u003e`any`\u003c/span\u003e. Changing this updates the\n\u003cspan pulumi-lang-nodejs=\"`protocol`\" pulumi-lang-dotnet=\"`Protocol`\" pulumi-lang-go=\"`protocol`\" pulumi-lang-python=\"`protocol`\" pulumi-lang-yaml=\"`protocol`\" pulumi-lang-java=\"`protocol`\"\u003e`protocol`\u003c/span\u003e of an existing firewall rule. Default is \u003cspan pulumi-lang-nodejs=\"`any`\" pulumi-lang-dotnet=\"`Any`\" pulumi-lang-go=\"`any`\" pulumi-lang-python=\"`any`\" pulumi-lang-yaml=\"`any`\" pulumi-lang-java=\"`any`\"\u003e`any`\u003c/span\u003e.\n"},"region":{"type":"string","description":"The region in which to obtain the v2 networking client.\nA networking client is needed to create a firewall rule. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nfirewall rule.\n","willReplaceOnChanges":true},"shared":{"type":"boolean","description":"Sharing status of the firewall rule (must be \"true\"\nor \"false\" if provided). If this is \"true\" the policy is visible to, and\ncan be used in, firewalls in other tenants. Changing this updates the\n\u003cspan pulumi-lang-nodejs=\"`shared`\" pulumi-lang-dotnet=\"`Shared`\" pulumi-lang-go=\"`shared`\" pulumi-lang-python=\"`shared`\" pulumi-lang-yaml=\"`shared`\" pulumi-lang-java=\"`shared`\"\u003e`shared`\u003c/span\u003e status of an existing firewall policy. On\n"},"sourceIpAddress":{"type":"string","description":"The source IP address on which the firewall\nrule operates. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`sourceIpAddress`\" pulumi-lang-dotnet=\"`SourceIpAddress`\" pulumi-lang-go=\"`sourceIpAddress`\" pulumi-lang-python=\"`source_ip_address`\" pulumi-lang-yaml=\"`sourceIpAddress`\" pulumi-lang-java=\"`sourceIpAddress`\"\u003e`source_ip_address`\u003c/span\u003e of an existing\nfirewall rule.\n"},"sourcePort":{"type":"string","description":"The source port on which the firewall\nrule operates. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`sourcePort`\" pulumi-lang-dotnet=\"`SourcePort`\" pulumi-lang-go=\"`sourcePort`\" pulumi-lang-python=\"`source_port`\" pulumi-lang-yaml=\"`sourcePort`\" pulumi-lang-java=\"`sourcePort`\"\u003e`source_port`\u003c/span\u003e of an existing\nfirewall rule. Require not \u003cspan pulumi-lang-nodejs=\"`any`\" pulumi-lang-dotnet=\"`Any`\" pulumi-lang-go=\"`any`\" pulumi-lang-python=\"`any`\" pulumi-lang-yaml=\"`any`\" pulumi-lang-java=\"`any`\"\u003e`any`\u003c/span\u003e or empty protocol.\n"},"tenantId":{"type":"string","description":"This argument conflicts and is interchangeable\nwith \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`project_id`\u003c/span\u003e. The owner of the firewall rule. Required if admin wants\nto create a firewall rule for another tenant. Changing this creates a new\nfirewall rule.\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering RuleV2 resources.\n","properties":{"action":{"type":"string","description":"Action to be taken (must be \"allow\", \"deny\" or \"reject\")\nwhen the firewall rule matches. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`action`\" pulumi-lang-dotnet=\"`Action`\" pulumi-lang-go=\"`action`\" pulumi-lang-python=\"`action`\" pulumi-lang-yaml=\"`action`\" pulumi-lang-java=\"`action`\"\u003e`action`\u003c/span\u003e of an\nexisting firewall rule. Default is \u003cspan pulumi-lang-nodejs=\"`deny`\" pulumi-lang-dotnet=\"`Deny`\" pulumi-lang-go=\"`deny`\" pulumi-lang-python=\"`deny`\" pulumi-lang-yaml=\"`deny`\" pulumi-lang-java=\"`deny`\"\u003e`deny`\u003c/span\u003e.\n"},"description":{"type":"string","description":"A description for the firewall rule. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\"\u003e`description`\u003c/span\u003e of an existing firewall rule.\n"},"destinationIpAddress":{"type":"string","description":"The destination IP address on which the\nfirewall rule operates. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`destinationIpAddress`\" pulumi-lang-dotnet=\"`DestinationIpAddress`\" pulumi-lang-go=\"`destinationIpAddress`\" pulumi-lang-python=\"`destination_ip_address`\" pulumi-lang-yaml=\"`destinationIpAddress`\" pulumi-lang-java=\"`destinationIpAddress`\"\u003e`destination_ip_address`\u003c/span\u003e\nof an existing firewall rule.\n"},"destinationPort":{"type":"string","description":"The destination port on which the firewall\nrule operates. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`destinationPort`\" pulumi-lang-dotnet=\"`DestinationPort`\" pulumi-lang-go=\"`destinationPort`\" pulumi-lang-python=\"`destination_port`\" pulumi-lang-yaml=\"`destinationPort`\" pulumi-lang-java=\"`destinationPort`\"\u003e`destination_port`\u003c/span\u003e of an existing\nfirewall rule. Require not \u003cspan pulumi-lang-nodejs=\"`any`\" pulumi-lang-dotnet=\"`Any`\" pulumi-lang-go=\"`any`\" pulumi-lang-python=\"`any`\" pulumi-lang-yaml=\"`any`\" pulumi-lang-java=\"`any`\"\u003e`any`\u003c/span\u003e or empty protocol.\n"},"enabled":{"type":"boolean","description":"Enabled status for the firewall rule (must be \"true\"\nor \"false\" if provided - defaults to \"true\"). Changing this updates the\n\u003cspan pulumi-lang-nodejs=\"`enabled`\" pulumi-lang-dotnet=\"`Enabled`\" pulumi-lang-go=\"`enabled`\" pulumi-lang-python=\"`enabled`\" pulumi-lang-yaml=\"`enabled`\" pulumi-lang-java=\"`enabled`\"\u003e`enabled`\u003c/span\u003e status of an existing firewall rule.\n"},"ipVersion":{"type":"integer","description":"IP version, either 4 or 6. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`ipVersion`\" pulumi-lang-dotnet=\"`IpVersion`\" pulumi-lang-go=\"`ipVersion`\" pulumi-lang-python=\"`ip_version`\" pulumi-lang-yaml=\"`ipVersion`\" pulumi-lang-java=\"`ipVersion`\"\u003e`ip_version`\u003c/span\u003e of an existing firewall rule. Default is \u003cspan pulumi-lang-nodejs=\"`4`\" pulumi-lang-dotnet=\"`4`\" pulumi-lang-go=\"`4`\" pulumi-lang-python=\"`4`\" pulumi-lang-yaml=\"`4`\" pulumi-lang-java=\"`4`\"\u003e`4`\u003c/span\u003e.\n"},"name":{"type":"string","description":"A unique name for the firewall rule. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e of an existing firewall rule.\n"},"projectId":{"type":"string","description":"This argument conflicts and is interchangeable\nwith \u003cspan pulumi-lang-nodejs=\"`tenantId`\" pulumi-lang-dotnet=\"`TenantId`\" pulumi-lang-go=\"`tenantId`\" pulumi-lang-python=\"`tenant_id`\" pulumi-lang-yaml=\"`tenantId`\" pulumi-lang-java=\"`tenantId`\"\u003e`tenant_id`\u003c/span\u003e. The owner of the firewall rule. Required if admin wants\nto create a firewall rule for another project. Changing this creates a new\nfirewall rule.\n","willReplaceOnChanges":true},"protocol":{"type":"string","description":"(Optional; Required if \u003cspan pulumi-lang-nodejs=\"`sourcePort`\" pulumi-lang-dotnet=\"`SourcePort`\" pulumi-lang-go=\"`sourcePort`\" pulumi-lang-python=\"`source_port`\" pulumi-lang-yaml=\"`sourcePort`\" pulumi-lang-java=\"`sourcePort`\"\u003e`source_port`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`destinationPort`\" pulumi-lang-dotnet=\"`DestinationPort`\" pulumi-lang-go=\"`destinationPort`\" pulumi-lang-python=\"`destination_port`\" pulumi-lang-yaml=\"`destinationPort`\" pulumi-lang-java=\"`destinationPort`\"\u003e`destination_port`\u003c/span\u003e is not\nempty) The protocol type on which the firewall rule operates.\nValid values are: \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\"\u003e`udp`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`icmp`\" pulumi-lang-dotnet=\"`Icmp`\" pulumi-lang-go=\"`icmp`\" pulumi-lang-python=\"`icmp`\" pulumi-lang-yaml=\"`icmp`\" pulumi-lang-java=\"`icmp`\"\u003e`icmp`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`any`\" pulumi-lang-dotnet=\"`Any`\" pulumi-lang-go=\"`any`\" pulumi-lang-python=\"`any`\" pulumi-lang-yaml=\"`any`\" pulumi-lang-java=\"`any`\"\u003e`any`\u003c/span\u003e. Changing this updates the\n\u003cspan pulumi-lang-nodejs=\"`protocol`\" pulumi-lang-dotnet=\"`Protocol`\" pulumi-lang-go=\"`protocol`\" pulumi-lang-python=\"`protocol`\" pulumi-lang-yaml=\"`protocol`\" pulumi-lang-java=\"`protocol`\"\u003e`protocol`\u003c/span\u003e of an existing firewall rule. Default is \u003cspan pulumi-lang-nodejs=\"`any`\" pulumi-lang-dotnet=\"`Any`\" pulumi-lang-go=\"`any`\" pulumi-lang-python=\"`any`\" pulumi-lang-yaml=\"`any`\" pulumi-lang-java=\"`any`\"\u003e`any`\u003c/span\u003e.\n"},"region":{"type":"string","description":"The region in which to obtain the v2 networking client.\nA networking client is needed to create a firewall rule. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nfirewall rule.\n","willReplaceOnChanges":true},"shared":{"type":"boolean","description":"Sharing status of the firewall rule (must be \"true\"\nor \"false\" if provided). If this is \"true\" the policy is visible to, and\ncan be used in, firewalls in other tenants. Changing this updates the\n\u003cspan pulumi-lang-nodejs=\"`shared`\" pulumi-lang-dotnet=\"`Shared`\" pulumi-lang-go=\"`shared`\" pulumi-lang-python=\"`shared`\" pulumi-lang-yaml=\"`shared`\" pulumi-lang-java=\"`shared`\"\u003e`shared`\u003c/span\u003e status of an existing firewall policy. On\n"},"sourceIpAddress":{"type":"string","description":"The source IP address on which the firewall\nrule operates. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`sourceIpAddress`\" pulumi-lang-dotnet=\"`SourceIpAddress`\" pulumi-lang-go=\"`sourceIpAddress`\" pulumi-lang-python=\"`source_ip_address`\" pulumi-lang-yaml=\"`sourceIpAddress`\" pulumi-lang-java=\"`sourceIpAddress`\"\u003e`source_ip_address`\u003c/span\u003e of an existing\nfirewall rule.\n"},"sourcePort":{"type":"string","description":"The source port on which the firewall\nrule operates. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`sourcePort`\" pulumi-lang-dotnet=\"`SourcePort`\" pulumi-lang-go=\"`sourcePort`\" pulumi-lang-python=\"`source_port`\" pulumi-lang-yaml=\"`sourcePort`\" pulumi-lang-java=\"`sourcePort`\"\u003e`source_port`\u003c/span\u003e of an existing\nfirewall rule. Require not \u003cspan pulumi-lang-nodejs=\"`any`\" pulumi-lang-dotnet=\"`Any`\" pulumi-lang-go=\"`any`\" pulumi-lang-python=\"`any`\" pulumi-lang-yaml=\"`any`\" pulumi-lang-java=\"`any`\"\u003e`any`\u003c/span\u003e or empty protocol.\n"},"tenantId":{"type":"string","description":"This argument conflicts and is interchangeable\nwith \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`project_id`\u003c/span\u003e. The owner of the firewall rule. Required if admin wants\nto create a firewall rule for another tenant. Changing this creates a new\nfirewall rule.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:identity/applicationCredential:ApplicationCredential":{"description":"Manages a V3 Application Credential resource within OpenStack Keystone.\n\n\u003e **Note:** All arguments including the application credential name and secret\nwill be stored in the raw state as plain-text. Read more about sensitive data\nin state.\n\n\u003e **Note:** An Application Credential is created within the authenticated user\nproject scope and is not visible by an admin or other accounts.\nThe Application Credential visibility is similar to\n\u003cspan pulumi-lang-nodejs=\"`openstack.compute.Keypair`\" pulumi-lang-dotnet=\"`openstack.compute.Keypair`\" pulumi-lang-go=\"`compute.Keypair`\" pulumi-lang-python=\"`compute.Keypair`\" pulumi-lang-yaml=\"`openstack.compute.Keypair`\" pulumi-lang-java=\"`openstack.compute.Keypair`\"\u003e`openstack.compute.Keypair`\u003c/span\u003e.\n\n## Example Usage\n\n### Predefined secret\n\nApplication credential below will have only one \u003cspan pulumi-lang-nodejs=\"`swiftoperator`\" pulumi-lang-dotnet=\"`Swiftoperator`\" pulumi-lang-go=\"`swiftoperator`\" pulumi-lang-python=\"`swiftoperator`\" pulumi-lang-yaml=\"`swiftoperator`\" pulumi-lang-java=\"`swiftoperator`\"\u003e`swiftoperator`\u003c/span\u003e role.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst swift = new openstack.identity.ApplicationCredential(\"swift\", {\n    name: \"swift\",\n    description: \"Swift technical application credential\",\n    secret: \"supersecret\",\n    roles: [\"swiftoperator\"],\n    expiresAt: \"2019-02-13T12:12:12Z\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nswift = openstack.identity.ApplicationCredential(\"swift\",\n    name=\"swift\",\n    description=\"Swift technical application credential\",\n    secret=\"supersecret\",\n    roles=[\"swiftoperator\"],\n    expires_at=\"2019-02-13T12:12:12Z\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var swift = new OpenStack.Identity.ApplicationCredential(\"swift\", new()\n    {\n        Name = \"swift\",\n        Description = \"Swift technical application credential\",\n        Secret = \"supersecret\",\n        Roles = new[]\n        {\n            \"swiftoperator\",\n        },\n        ExpiresAt = \"2019-02-13T12:12:12Z\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/identity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := identity.NewApplicationCredential(ctx, \"swift\", \u0026identity.ApplicationCredentialArgs{\n\t\t\tName:        pulumi.String(\"swift\"),\n\t\t\tDescription: pulumi.String(\"Swift technical application credential\"),\n\t\t\tSecret:      pulumi.String(\"supersecret\"),\n\t\t\tRoles: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"swiftoperator\"),\n\t\t\t},\n\t\t\tExpiresAt: pulumi.String(\"2019-02-13T12:12:12Z\"),\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.openstack.identity.ApplicationCredential;\nimport com.pulumi.openstack.identity.ApplicationCredentialArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 swift = new ApplicationCredential(\"swift\", ApplicationCredentialArgs.builder()\n            .name(\"swift\")\n            .description(\"Swift technical application credential\")\n            .secret(\"supersecret\")\n            .roles(\"swiftoperator\")\n            .expiresAt(\"2019-02-13T12:12:12Z\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  swift:\n    type: openstack:identity:ApplicationCredential\n    properties:\n      name: swift\n      description: Swift technical application credential\n      secret: supersecret\n      roles:\n        - swiftoperator\n      expiresAt: 2019-02-13T12:12:12Z\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Unrestricted with autogenerated secret and unlimited TTL\n\nApplication credential below will inherit all the current user's roles.\n\n!\u003e **WARNING:** Restrictions on these Identity operations are deliberately\nimposed as a safeguard to prevent a compromised application credential from\nregenerating itself. Disabling this restriction poses an inherent added risk.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst unrestricted = new openstack.identity.ApplicationCredential(\"unrestricted\", {\n    name: \"unrestricted\",\n    description: \"Unrestricted application credential\",\n    unrestricted: true,\n});\nexport const applicationCredentialSecret = unrestricted.secret;\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nunrestricted = openstack.identity.ApplicationCredential(\"unrestricted\",\n    name=\"unrestricted\",\n    description=\"Unrestricted application credential\",\n    unrestricted=True)\npulumi.export(\"applicationCredentialSecret\", unrestricted.secret)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var unrestricted = new OpenStack.Identity.ApplicationCredential(\"unrestricted\", new()\n    {\n        Name = \"unrestricted\",\n        Description = \"Unrestricted application credential\",\n        Unrestricted = true,\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"applicationCredentialSecret\"] = unrestricted.Secret,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/identity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tunrestricted, err := identity.NewApplicationCredential(ctx, \"unrestricted\", \u0026identity.ApplicationCredentialArgs{\n\t\t\tName:         pulumi.String(\"unrestricted\"),\n\t\t\tDescription:  pulumi.String(\"Unrestricted application credential\"),\n\t\t\tUnrestricted: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"applicationCredentialSecret\", unrestricted.Secret)\n\t\treturn nil\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.openstack.identity.ApplicationCredential;\nimport com.pulumi.openstack.identity.ApplicationCredentialArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 unrestricted = new ApplicationCredential(\"unrestricted\", ApplicationCredentialArgs.builder()\n            .name(\"unrestricted\")\n            .description(\"Unrestricted application credential\")\n            .unrestricted(true)\n            .build());\n\n        ctx.export(\"applicationCredentialSecret\", unrestricted.secret());\n    }\n}\n```\n```yaml\nresources:\n  unrestricted:\n    type: openstack:identity:ApplicationCredential\n    properties:\n      name: unrestricted\n      description: Unrestricted application credential\n      unrestricted: true\noutputs:\n  applicationCredentialSecret: ${unrestricted.secret}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Application credential with access rules\n\n\u003e **Note:** Application Credential access rules are supported only in Keystone\nstarting from [Train](https://releases.openstack.org/train/highlights.html#keystone-identity-service) release.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst monitoring = new openstack.identity.ApplicationCredential(\"monitoring\", {\n    name: \"monitoring\",\n    expiresAt: \"2019-02-13T12:12:12Z\",\n    accessRules: [\n        {\n            path: \"/v2.0/metrics\",\n            service: \"monitoring\",\n            method: \"GET\",\n        },\n        {\n            path: \"/v2.0/metrics\",\n            service: \"monitoring\",\n            method: \"PUT\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nmonitoring = openstack.identity.ApplicationCredential(\"monitoring\",\n    name=\"monitoring\",\n    expires_at=\"2019-02-13T12:12:12Z\",\n    access_rules=[\n        {\n            \"path\": \"/v2.0/metrics\",\n            \"service\": \"monitoring\",\n            \"method\": \"GET\",\n        },\n        {\n            \"path\": \"/v2.0/metrics\",\n            \"service\": \"monitoring\",\n            \"method\": \"PUT\",\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var monitoring = new OpenStack.Identity.ApplicationCredential(\"monitoring\", new()\n    {\n        Name = \"monitoring\",\n        ExpiresAt = \"2019-02-13T12:12:12Z\",\n        AccessRules = new[]\n        {\n            new OpenStack.Identity.Inputs.ApplicationCredentialAccessRuleArgs\n            {\n                Path = \"/v2.0/metrics\",\n                Service = \"monitoring\",\n                Method = \"GET\",\n            },\n            new OpenStack.Identity.Inputs.ApplicationCredentialAccessRuleArgs\n            {\n                Path = \"/v2.0/metrics\",\n                Service = \"monitoring\",\n                Method = \"PUT\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/identity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := identity.NewApplicationCredential(ctx, \"monitoring\", \u0026identity.ApplicationCredentialArgs{\n\t\t\tName:      pulumi.String(\"monitoring\"),\n\t\t\tExpiresAt: pulumi.String(\"2019-02-13T12:12:12Z\"),\n\t\t\tAccessRules: identity.ApplicationCredentialAccessRuleArray{\n\t\t\t\t\u0026identity.ApplicationCredentialAccessRuleArgs{\n\t\t\t\t\tPath:    pulumi.String(\"/v2.0/metrics\"),\n\t\t\t\t\tService: pulumi.String(\"monitoring\"),\n\t\t\t\t\tMethod:  pulumi.String(\"GET\"),\n\t\t\t\t},\n\t\t\t\t\u0026identity.ApplicationCredentialAccessRuleArgs{\n\t\t\t\t\tPath:    pulumi.String(\"/v2.0/metrics\"),\n\t\t\t\t\tService: pulumi.String(\"monitoring\"),\n\t\t\t\t\tMethod:  pulumi.String(\"PUT\"),\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.openstack.identity.ApplicationCredential;\nimport com.pulumi.openstack.identity.ApplicationCredentialArgs;\nimport com.pulumi.openstack.identity.inputs.ApplicationCredentialAccessRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 monitoring = new ApplicationCredential(\"monitoring\", ApplicationCredentialArgs.builder()\n            .name(\"monitoring\")\n            .expiresAt(\"2019-02-13T12:12:12Z\")\n            .accessRules(            \n                ApplicationCredentialAccessRuleArgs.builder()\n                    .path(\"/v2.0/metrics\")\n                    .service(\"monitoring\")\n                    .method(\"GET\")\n                    .build(),\n                ApplicationCredentialAccessRuleArgs.builder()\n                    .path(\"/v2.0/metrics\")\n                    .service(\"monitoring\")\n                    .method(\"PUT\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  monitoring:\n    type: openstack:identity:ApplicationCredential\n    properties:\n      name: monitoring\n      expiresAt: 2019-02-13T12:12:12Z\n      accessRules:\n        - path: /v2.0/metrics\n          service: monitoring\n          method: GET\n        - path: /v2.0/metrics\n          service: monitoring\n          method: PUT\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nApplication Credentials can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:identity/applicationCredential:ApplicationCredential application_credential_1 c17304b7-0953-4738-abb0-67005882b0a0\n```\n","properties":{"accessRules":{"type":"array","items":{"$ref":"#/types/openstack:identity/ApplicationCredentialAccessRule:ApplicationCredentialAccessRule"},"description":"A collection of one or more access rules, which\nthis application credential allows to follow. The structure is described\nbelow. Changing this creates a new application credential.\n"},"description":{"type":"string","description":"A description of the application credential.\nChanging this creates a new application credential.\n"},"expiresAt":{"type":"string","description":"The expiration time of the application credential\nin the RFC3339 timestamp format (e.g. `2019-03-09T12:58:49Z`). If omitted,\nan application credential will never expire. Changing this creates a new\napplication credential.\n"},"name":{"type":"string","description":"A name of the application credential. Changing this\ncreates a new application credential.\n"},"projectId":{"type":"string","description":"The ID of the project the application credential was created\nfor and that authentication requests using this application credential will\nbe scoped to.\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new application credential.\n"},"roles":{"type":"array","items":{"type":"string"},"description":"A collection of one or more role names, which this\napplication credential has to be associated with its project. If omitted,\nall the current user's roles within the scoped project will be inherited by\na new application credential. Changing this creates a new application\ncredential.\n"},"secret":{"type":"string","description":"The secret for the application credential. If omitted,\nit will be generated by the server. Changing this creates a new application\ncredential.\n","secret":true},"unrestricted":{"type":"boolean","description":"A flag indicating whether the application\ncredential may be used for creation or destruction of other application\ncredentials or trusts. Changing this creates a new application credential.\n"}},"required":["name","projectId","region","roles","secret"],"inputProperties":{"accessRules":{"type":"array","items":{"$ref":"#/types/openstack:identity/ApplicationCredentialAccessRule:ApplicationCredentialAccessRule"},"description":"A collection of one or more access rules, which\nthis application credential allows to follow. The structure is described\nbelow. Changing this creates a new application credential.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"A description of the application credential.\nChanging this creates a new application credential.\n","willReplaceOnChanges":true},"expiresAt":{"type":"string","description":"The expiration time of the application credential\nin the RFC3339 timestamp format (e.g. `2019-03-09T12:58:49Z`). If omitted,\nan application credential will never expire. Changing this creates a new\napplication credential.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"A name of the application credential. Changing this\ncreates a new application credential.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new application credential.\n","willReplaceOnChanges":true},"roles":{"type":"array","items":{"type":"string"},"description":"A collection of one or more role names, which this\napplication credential has to be associated with its project. If omitted,\nall the current user's roles within the scoped project will be inherited by\na new application credential. Changing this creates a new application\ncredential.\n","willReplaceOnChanges":true},"secret":{"type":"string","description":"The secret for the application credential. If omitted,\nit will be generated by the server. Changing this creates a new application\ncredential.\n","secret":true,"willReplaceOnChanges":true},"unrestricted":{"type":"boolean","description":"A flag indicating whether the application\ncredential may be used for creation or destruction of other application\ncredentials or trusts. Changing this creates a new application credential.\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering ApplicationCredential resources.\n","properties":{"accessRules":{"type":"array","items":{"$ref":"#/types/openstack:identity/ApplicationCredentialAccessRule:ApplicationCredentialAccessRule"},"description":"A collection of one or more access rules, which\nthis application credential allows to follow. The structure is described\nbelow. Changing this creates a new application credential.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"A description of the application credential.\nChanging this creates a new application credential.\n","willReplaceOnChanges":true},"expiresAt":{"type":"string","description":"The expiration time of the application credential\nin the RFC3339 timestamp format (e.g. `2019-03-09T12:58:49Z`). If omitted,\nan application credential will never expire. Changing this creates a new\napplication credential.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"A name of the application credential. Changing this\ncreates a new application credential.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"The ID of the project the application credential was created\nfor and that authentication requests using this application credential will\nbe scoped to.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new application credential.\n","willReplaceOnChanges":true},"roles":{"type":"array","items":{"type":"string"},"description":"A collection of one or more role names, which this\napplication credential has to be associated with its project. If omitted,\nall the current user's roles within the scoped project will be inherited by\na new application credential. Changing this creates a new application\ncredential.\n","willReplaceOnChanges":true},"secret":{"type":"string","description":"The secret for the application credential. If omitted,\nit will be generated by the server. Changing this creates a new application\ncredential.\n","secret":true,"willReplaceOnChanges":true},"unrestricted":{"type":"boolean","description":"A flag indicating whether the application\ncredential may be used for creation or destruction of other application\ncredentials or trusts. Changing this creates a new application credential.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:identity/ec2CredentialV3:Ec2CredentialV3":{"description":"Manages a V3 EC2 Credential resource within OpenStack Keystone.\nEC2 credentials in OpenStack are used to access S3 compatible Swift/RadosGW\nendpoints or to authenticate against Keystone.\n\n\u003e **Note:** All arguments including the EC2 credential access key and secret\nwill be stored in the raw state as plain-text. Read more about sensitive data\nin state.\n\n## Example Usage\n\n### EC2 credential in current project scope\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst ec2Key1 = new openstack.identity.Ec2CredentialV3(\"ec2_key1\", {});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nec2_key1 = openstack.identity.Ec2CredentialV3(\"ec2_key1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ec2Key1 = new OpenStack.Identity.Ec2CredentialV3(\"ec2_key1\");\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/identity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := identity.NewEc2CredentialV3(ctx, \"ec2_key1\", 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.openstack.identity.Ec2CredentialV3;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 ec2Key1 = new Ec2CredentialV3(\"ec2Key1\");\n\n    }\n}\n```\n```yaml\nresources:\n  ec2Key1:\n    type: openstack:identity:Ec2CredentialV3\n    name: ec2_key1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### EC2 credential in pre-defined project scope\n\nThis allows administrative users to create EC2 credentials for a scope different\nfrom the current auth scope.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst ec2Key1 = new openstack.identity.Ec2CredentialV3(\"ec2_key1\", {projectId: \"f7ac731cc11f40efbc03a9f9e1d1d21f\"});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nec2_key1 = openstack.identity.Ec2CredentialV3(\"ec2_key1\", project_id=\"f7ac731cc11f40efbc03a9f9e1d1d21f\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ec2Key1 = new OpenStack.Identity.Ec2CredentialV3(\"ec2_key1\", new()\n    {\n        ProjectId = \"f7ac731cc11f40efbc03a9f9e1d1d21f\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/identity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := identity.NewEc2CredentialV3(ctx, \"ec2_key1\", \u0026identity.Ec2CredentialV3Args{\n\t\t\tProjectId: pulumi.String(\"f7ac731cc11f40efbc03a9f9e1d1d21f\"),\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.openstack.identity.Ec2CredentialV3;\nimport com.pulumi.openstack.identity.Ec2CredentialV3Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 ec2Key1 = new Ec2CredentialV3(\"ec2Key1\", Ec2CredentialV3Args.builder()\n            .projectId(\"f7ac731cc11f40efbc03a9f9e1d1d21f\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ec2Key1:\n    type: openstack:identity:Ec2CredentialV3\n    name: ec2_key1\n    properties:\n      projectId: f7ac731cc11f40efbc03a9f9e1d1d21f\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEC2 Credentials can be imported using the `access`, e.g.\n\n```sh\n$ pulumi import openstack:identity/ec2CredentialV3:Ec2CredentialV3 ec2_cred_1 2d0ac4a2f81b4b0f9513ee49e780647d\n```\n","properties":{"access":{"type":"string","description":"contains an EC2 credential access UUID\n"},"projectId":{"type":"string","description":"The ID of the project the EC2 credential is created\nfor and that authentication requests using this EC2 credential will\nbe scoped to. Only administrative users can specify a project ID different\nfrom the current auth scope.\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new EC2 credential.\n"},"secret":{"type":"string","description":"contains an EC2 credential secret UUID\n","secret":true},"trustId":{"type":"string","description":"contains an EC2 credential trust ID scope\n"},"userId":{"type":"string","description":"The ID of the user the EC2 credential is created for.\nOnly administrative users can specify a user ID different from the current\nauth scope.\n"}},"required":["access","projectId","region","secret","trustId","userId"],"inputProperties":{"projectId":{"type":"string","description":"The ID of the project the EC2 credential is created\nfor and that authentication requests using this EC2 credential will\nbe scoped to. Only administrative users can specify a project ID different\nfrom the current auth scope.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new EC2 credential.\n","willReplaceOnChanges":true},"userId":{"type":"string","description":"The ID of the user the EC2 credential is created for.\nOnly administrative users can specify a user ID different from the current\nauth scope.\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering Ec2CredentialV3 resources.\n","properties":{"access":{"type":"string","description":"contains an EC2 credential access UUID\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"The ID of the project the EC2 credential is created\nfor and that authentication requests using this EC2 credential will\nbe scoped to. Only administrative users can specify a project ID different\nfrom the current auth scope.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new EC2 credential.\n","willReplaceOnChanges":true},"secret":{"type":"string","description":"contains an EC2 credential secret UUID\n","secret":true,"willReplaceOnChanges":true},"trustId":{"type":"string","description":"contains an EC2 credential trust ID scope\n","willReplaceOnChanges":true},"userId":{"type":"string","description":"The ID of the user the EC2 credential is created for.\nOnly administrative users can specify a user ID different from the current\nauth scope.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:identity/endpointV3:EndpointV3":{"description":"Manages a V3 Endpoint resource within OpenStack Keystone.\n\n\u003e **Note:** This usually requires admin privileges.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst service1 = new openstack.identity.ServiceV3(\"service_1\", {\n    name: \"my-service\",\n    type: \"my-service-type\",\n});\nconst endpoint1 = new openstack.identity.EndpointV3(\"endpoint_1\", {\n    name: \"my-endpoint\",\n    serviceId: service1.id,\n    endpointRegion: service1.region,\n    url: \"http://my-endpoint\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nservice1 = openstack.identity.ServiceV3(\"service_1\",\n    name=\"my-service\",\n    type=\"my-service-type\")\nendpoint1 = openstack.identity.EndpointV3(\"endpoint_1\",\n    name=\"my-endpoint\",\n    service_id=service1.id,\n    endpoint_region=service1.region,\n    url=\"http://my-endpoint\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var service1 = new OpenStack.Identity.ServiceV3(\"service_1\", new()\n    {\n        Name = \"my-service\",\n        Type = \"my-service-type\",\n    });\n\n    var endpoint1 = new OpenStack.Identity.EndpointV3(\"endpoint_1\", new()\n    {\n        Name = \"my-endpoint\",\n        ServiceId = service1.Id,\n        EndpointRegion = service1.Region,\n        Url = \"http://my-endpoint\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/identity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tservice1, err := identity.NewServiceV3(ctx, \"service_1\", \u0026identity.ServiceV3Args{\n\t\t\tName: pulumi.String(\"my-service\"),\n\t\t\tType: pulumi.String(\"my-service-type\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = identity.NewEndpointV3(ctx, \"endpoint_1\", \u0026identity.EndpointV3Args{\n\t\t\tName:           pulumi.String(\"my-endpoint\"),\n\t\t\tServiceId:      service1.ID(),\n\t\t\tEndpointRegion: service1.Region,\n\t\t\tUrl:            pulumi.String(\"http://my-endpoint\"),\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.openstack.identity.ServiceV3;\nimport com.pulumi.openstack.identity.ServiceV3Args;\nimport com.pulumi.openstack.identity.EndpointV3;\nimport com.pulumi.openstack.identity.EndpointV3Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 service1 = new ServiceV3(\"service1\", ServiceV3Args.builder()\n            .name(\"my-service\")\n            .type(\"my-service-type\")\n            .build());\n\n        var endpoint1 = new EndpointV3(\"endpoint1\", EndpointV3Args.builder()\n            .name(\"my-endpoint\")\n            .serviceId(service1.id())\n            .endpointRegion(service1.region())\n            .url(\"http://my-endpoint\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  service1:\n    type: openstack:identity:ServiceV3\n    name: service_1\n    properties:\n      name: my-service\n      type: my-service-type\n  endpoint1:\n    type: openstack:identity:EndpointV3\n    name: endpoint_1\n    properties:\n      name: my-endpoint\n      serviceId: ${service1.id}\n      endpointRegion: ${service1.region}\n      url: http://my-endpoint\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEndpoints can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:identity/endpointV3:EndpointV3 endpoint_1 5392472b-106a-4845-90c6-7c8445f18770\n```\n","properties":{"endpointRegion":{"type":"string","description":"The endpoint region. The \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e and\n\u003cspan pulumi-lang-nodejs=\"`endpointRegion`\" pulumi-lang-dotnet=\"`EndpointRegion`\" pulumi-lang-go=\"`endpointRegion`\" pulumi-lang-python=\"`endpoint_region`\" pulumi-lang-yaml=\"`endpointRegion`\" pulumi-lang-java=\"`endpointRegion`\"\u003e`endpoint_region`\u003c/span\u003e can be different.\n"},"interface":{"type":"string","description":"The endpoint interface. Valid values are \u003cspan pulumi-lang-nodejs=\"`public`\" pulumi-lang-dotnet=\"`Public`\" pulumi-lang-go=\"`public`\" pulumi-lang-python=\"`public`\" pulumi-lang-yaml=\"`public`\" pulumi-lang-java=\"`public`\"\u003e`public`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`internal`\" pulumi-lang-dotnet=\"`Internal`\" pulumi-lang-go=\"`internal`\" pulumi-lang-python=\"`internal`\" pulumi-lang-yaml=\"`internal`\" pulumi-lang-java=\"`internal`\"\u003e`internal`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`admin`\" pulumi-lang-dotnet=\"`Admin`\" pulumi-lang-go=\"`admin`\" pulumi-lang-python=\"`admin`\" pulumi-lang-yaml=\"`admin`\" pulumi-lang-java=\"`admin`\"\u003e`admin`\u003c/span\u003e. Default value is \u003cspan pulumi-lang-nodejs=\"`public`\" pulumi-lang-dotnet=\"`Public`\" pulumi-lang-go=\"`public`\" pulumi-lang-python=\"`public`\" pulumi-lang-yaml=\"`public`\" pulumi-lang-java=\"`public`\"\u003e`public`\u003c/span\u003e\n"},"name":{"type":"string","description":"The endpoint name.\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"},"serviceId":{"type":"string","description":"The endpoint service ID.\n"},"serviceName":{"type":"string","description":"The service name of the endpoint.\n"},"serviceType":{"type":"string","description":"The service type of the endpoint.\n"},"url":{"type":"string","description":"The endpoint url.\n"}},"required":["endpointRegion","name","region","serviceId","serviceName","serviceType","url"],"inputProperties":{"endpointRegion":{"type":"string","description":"The endpoint region. The \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e and\n\u003cspan pulumi-lang-nodejs=\"`endpointRegion`\" pulumi-lang-dotnet=\"`EndpointRegion`\" pulumi-lang-go=\"`endpointRegion`\" pulumi-lang-python=\"`endpoint_region`\" pulumi-lang-yaml=\"`endpointRegion`\" pulumi-lang-java=\"`endpointRegion`\"\u003e`endpoint_region`\u003c/span\u003e can be different.\n"},"interface":{"type":"string","description":"The endpoint interface. Valid values are \u003cspan pulumi-lang-nodejs=\"`public`\" pulumi-lang-dotnet=\"`Public`\" pulumi-lang-go=\"`public`\" pulumi-lang-python=\"`public`\" pulumi-lang-yaml=\"`public`\" pulumi-lang-java=\"`public`\"\u003e`public`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`internal`\" pulumi-lang-dotnet=\"`Internal`\" pulumi-lang-go=\"`internal`\" pulumi-lang-python=\"`internal`\" pulumi-lang-yaml=\"`internal`\" pulumi-lang-java=\"`internal`\"\u003e`internal`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`admin`\" pulumi-lang-dotnet=\"`Admin`\" pulumi-lang-go=\"`admin`\" pulumi-lang-python=\"`admin`\" pulumi-lang-yaml=\"`admin`\" pulumi-lang-java=\"`admin`\"\u003e`admin`\u003c/span\u003e. Default value is \u003cspan pulumi-lang-nodejs=\"`public`\" pulumi-lang-dotnet=\"`Public`\" pulumi-lang-go=\"`public`\" pulumi-lang-python=\"`public`\" pulumi-lang-yaml=\"`public`\" pulumi-lang-java=\"`public`\"\u003e`public`\u003c/span\u003e\n"},"name":{"type":"string","description":"The endpoint name.\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n","willReplaceOnChanges":true},"serviceId":{"type":"string","description":"The endpoint service ID.\n"},"url":{"type":"string","description":"The endpoint url.\n"}},"requiredInputs":["endpointRegion","serviceId","url"],"stateInputs":{"description":"Input properties used for looking up and filtering EndpointV3 resources.\n","properties":{"endpointRegion":{"type":"string","description":"The endpoint region. The \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e and\n\u003cspan pulumi-lang-nodejs=\"`endpointRegion`\" pulumi-lang-dotnet=\"`EndpointRegion`\" pulumi-lang-go=\"`endpointRegion`\" pulumi-lang-python=\"`endpoint_region`\" pulumi-lang-yaml=\"`endpointRegion`\" pulumi-lang-java=\"`endpointRegion`\"\u003e`endpoint_region`\u003c/span\u003e can be different.\n"},"interface":{"type":"string","description":"The endpoint interface. Valid values are \u003cspan pulumi-lang-nodejs=\"`public`\" pulumi-lang-dotnet=\"`Public`\" pulumi-lang-go=\"`public`\" pulumi-lang-python=\"`public`\" pulumi-lang-yaml=\"`public`\" pulumi-lang-java=\"`public`\"\u003e`public`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`internal`\" pulumi-lang-dotnet=\"`Internal`\" pulumi-lang-go=\"`internal`\" pulumi-lang-python=\"`internal`\" pulumi-lang-yaml=\"`internal`\" pulumi-lang-java=\"`internal`\"\u003e`internal`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`admin`\" pulumi-lang-dotnet=\"`Admin`\" pulumi-lang-go=\"`admin`\" pulumi-lang-python=\"`admin`\" pulumi-lang-yaml=\"`admin`\" pulumi-lang-java=\"`admin`\"\u003e`admin`\u003c/span\u003e. Default value is \u003cspan pulumi-lang-nodejs=\"`public`\" pulumi-lang-dotnet=\"`Public`\" pulumi-lang-go=\"`public`\" pulumi-lang-python=\"`public`\" pulumi-lang-yaml=\"`public`\" pulumi-lang-java=\"`public`\"\u003e`public`\u003c/span\u003e\n"},"name":{"type":"string","description":"The endpoint name.\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n","willReplaceOnChanges":true},"serviceId":{"type":"string","description":"The endpoint service ID.\n"},"serviceName":{"type":"string","description":"The service name of the endpoint.\n"},"serviceType":{"type":"string","description":"The service type of the endpoint.\n"},"url":{"type":"string","description":"The endpoint url.\n"}},"type":"object"}},"openstack:identity/groupV3:GroupV3":{"description":"Manages a V3 group resource within OpenStack Keystone.\n\n\u003e **Note:** You _must_ have admin privileges in your OpenStack cloud to use\nthis resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst group1 = new openstack.identity.GroupV3(\"group_1\", {\n    name: \"group_1\",\n    description: \"group 1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\ngroup1 = openstack.identity.GroupV3(\"group_1\",\n    name=\"group_1\",\n    description=\"group 1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var group1 = new OpenStack.Identity.GroupV3(\"group_1\", new()\n    {\n        Name = \"group_1\",\n        Description = \"group 1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/identity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := identity.NewGroupV3(ctx, \"group_1\", \u0026identity.GroupV3Args{\n\t\t\tName:        pulumi.String(\"group_1\"),\n\t\t\tDescription: pulumi.String(\"group 1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openstack.identity.GroupV3;\nimport com.pulumi.openstack.identity.GroupV3Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 group1 = new GroupV3(\"group1\", GroupV3Args.builder()\n            .name(\"group_1\")\n            .description(\"group 1\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  group1:\n    type: openstack:identity:GroupV3\n    name: group_1\n    properties:\n      name: group_1\n      description: group 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\ngroups can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:identity/groupV3:GroupV3 group_1 89c60255-9bd6-460c-822a-e2b959ede9d2\n```\n","properties":{"description":{"type":"string","description":"A description of the group.\n"},"domainId":{"type":"string","description":"The domain the group belongs to.\n"},"name":{"type":"string","description":"The name of the group.\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new group.\n"}},"required":["domainId","name","region"],"inputProperties":{"description":{"type":"string","description":"A description of the group.\n"},"domainId":{"type":"string","description":"The domain the group belongs to.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"The name of the group.\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new group.\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering GroupV3 resources.\n","properties":{"description":{"type":"string","description":"A description of the group.\n"},"domainId":{"type":"string","description":"The domain the group belongs to.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"The name of the group.\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new group.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:identity/inheritRoleAssignment:InheritRoleAssignment":{"description":"Manages a V3 Inherit Role assignment within OpenStack Keystone. This uses the\nOpenstack keystone `OS-INHERIT` api to created inherit roles within domains\nand parent projects for users and groups.\n\n\u003e **Note:** You _must_ have admin privileges in your OpenStack cloud to use\nthis resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst user1 = new openstack.identity.User(\"user_1\", {\n    name: \"user_1\",\n    domainId: \"default\",\n});\nconst role1 = new openstack.identity.Role(\"role_1\", {\n    name: \"role_1\",\n    domainId: \"default\",\n});\nconst roleAssignment1 = new openstack.identity.InheritRoleAssignment(\"role_assignment_1\", {\n    userId: user1.id,\n    domainId: \"default\",\n    roleId: role1.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nuser1 = openstack.identity.User(\"user_1\",\n    name=\"user_1\",\n    domain_id=\"default\")\nrole1 = openstack.identity.Role(\"role_1\",\n    name=\"role_1\",\n    domain_id=\"default\")\nrole_assignment1 = openstack.identity.InheritRoleAssignment(\"role_assignment_1\",\n    user_id=user1.id,\n    domain_id=\"default\",\n    role_id=role1.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var user1 = new OpenStack.Identity.User(\"user_1\", new()\n    {\n        Name = \"user_1\",\n        DomainId = \"default\",\n    });\n\n    var role1 = new OpenStack.Identity.Role(\"role_1\", new()\n    {\n        Name = \"role_1\",\n        DomainId = \"default\",\n    });\n\n    var roleAssignment1 = new OpenStack.Identity.InheritRoleAssignment(\"role_assignment_1\", new()\n    {\n        UserId = user1.Id,\n        DomainId = \"default\",\n        RoleId = role1.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/identity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tuser1, err := identity.NewUser(ctx, \"user_1\", \u0026identity.UserArgs{\n\t\t\tName:     pulumi.String(\"user_1\"),\n\t\t\tDomainId: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trole1, err := identity.NewRole(ctx, \"role_1\", \u0026identity.RoleArgs{\n\t\t\tName:     pulumi.String(\"role_1\"),\n\t\t\tDomainId: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = identity.NewInheritRoleAssignment(ctx, \"role_assignment_1\", \u0026identity.InheritRoleAssignmentArgs{\n\t\t\tUserId:   user1.ID(),\n\t\t\tDomainId: pulumi.String(\"default\"),\n\t\t\tRoleId:   role1.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.openstack.identity.User;\nimport com.pulumi.openstack.identity.UserArgs;\nimport com.pulumi.openstack.identity.Role;\nimport com.pulumi.openstack.identity.RoleArgs;\nimport com.pulumi.openstack.identity.InheritRoleAssignment;\nimport com.pulumi.openstack.identity.InheritRoleAssignmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 user1 = new User(\"user1\", UserArgs.builder()\n            .name(\"user_1\")\n            .domainId(\"default\")\n            .build());\n\n        var role1 = new Role(\"role1\", RoleArgs.builder()\n            .name(\"role_1\")\n            .domainId(\"default\")\n            .build());\n\n        var roleAssignment1 = new InheritRoleAssignment(\"roleAssignment1\", InheritRoleAssignmentArgs.builder()\n            .userId(user1.id())\n            .domainId(\"default\")\n            .roleId(role1.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  user1:\n    type: openstack:identity:User\n    name: user_1\n    properties:\n      name: user_1\n      domainId: default\n  role1:\n    type: openstack:identity:Role\n    name: role_1\n    properties:\n      name: role_1\n      domainId: default\n  roleAssignment1:\n    type: openstack:identity:InheritRoleAssignment\n    name: role_assignment_1\n    properties:\n      userId: ${user1.id}\n      domainId: default\n      roleId: ${role1.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInherit role assignments can be imported using a constructed id. The id should\nhave the form of `domainID/projectID/groupID/userID/roleID`. When something is\nnot used then leave blank.\n\nFor example this will import the inherit role assignment for:\nprojectID: 014395cd-89fc-4c9b-96b7-13d1ee79dad2,\nuserID: 4142e64b-1b35-44a0-9b1e-5affc7af1106,\nroleID: ea257959-eeb1-4c10-8d33-26f0409a755d\n( domainID and groupID are left blank)\n\n```sh\n$ pulumi import openstack:identity/inheritRoleAssignment:InheritRoleAssignment role_assignment_1 /014395cd-89fc-4c9b-96b7-13d1ee79dad2//4142e64b-1b35-44a0-9b1e-5affc7af1106/ea257959-eeb1-4c10-8d33-26f0409a755d\n```\n","properties":{"domainId":{"type":"string","description":"The domain to assign the role in.\n"},"groupId":{"type":"string","description":"The group to assign the role to.\n"},"projectId":{"type":"string","description":"The project to assign the role in.\nThe project should be able to containt child projects.\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new inherit role assignment.\n"},"roleId":{"type":"string","description":"The role to assign.\n"},"userId":{"type":"string","description":"The user to assign the role to.\n"}},"required":["region","roleId"],"inputProperties":{"domainId":{"type":"string","description":"The domain to assign the role in.\n","willReplaceOnChanges":true},"groupId":{"type":"string","description":"The group to assign the role to.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"The project to assign the role in.\nThe project should be able to containt child projects.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new inherit role assignment.\n","willReplaceOnChanges":true},"roleId":{"type":"string","description":"The role to assign.\n","willReplaceOnChanges":true},"userId":{"type":"string","description":"The user to assign the role to.\n","willReplaceOnChanges":true}},"requiredInputs":["roleId"],"stateInputs":{"description":"Input properties used for looking up and filtering InheritRoleAssignment resources.\n","properties":{"domainId":{"type":"string","description":"The domain to assign the role in.\n","willReplaceOnChanges":true},"groupId":{"type":"string","description":"The group to assign the role to.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"The project to assign the role in.\nThe project should be able to containt child projects.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new inherit role assignment.\n","willReplaceOnChanges":true},"roleId":{"type":"string","description":"The role to assign.\n","willReplaceOnChanges":true},"userId":{"type":"string","description":"The user to assign the role to.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:identity/limitV3:LimitV3":{"description":"Manages a V3 Limit resource within OpenStack Keystone.\n\n\u003e **Note:** You _must_ have admin privileges in your OpenStack cloud to use\nthis resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst glance = openstack.identity.getService({\n    name: \"glance\",\n});\nconst project1 = new openstack.identity.Project(\"project_1\", {name: \"project_1\"});\nconst limit1 = new openstack.identity.LimitV3(\"limit_1\", {\n    projectId: project1.id,\n    serviceId: glance.then(glance =\u003e glance.id),\n    resourceName: \"image_count_total\",\n    resourceLimit: 10,\n    description: \"foo\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nglance = openstack.identity.get_service(name=\"glance\")\nproject1 = openstack.identity.Project(\"project_1\", name=\"project_1\")\nlimit1 = openstack.identity.LimitV3(\"limit_1\",\n    project_id=project1.id,\n    service_id=glance.id,\n    resource_name_=\"image_count_total\",\n    resource_limit=10,\n    description=\"foo\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var glance = OpenStack.Identity.GetService.Invoke(new()\n    {\n        Name = \"glance\",\n    });\n\n    var project1 = new OpenStack.Identity.Project(\"project_1\", new()\n    {\n        Name = \"project_1\",\n    });\n\n    var limit1 = new OpenStack.Identity.LimitV3(\"limit_1\", new()\n    {\n        ProjectId = project1.Id,\n        ServiceId = glance.Apply(getServiceResult =\u003e getServiceResult.Id),\n        ResourceName = \"image_count_total\",\n        ResourceLimit = 10,\n        Description = \"foo\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/identity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tglance, err := identity.GetService(ctx, \u0026identity.GetServiceArgs{\n\t\t\tName: pulumi.StringRef(\"glance\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject1, err := identity.NewProject(ctx, \"project_1\", \u0026identity.ProjectArgs{\n\t\t\tName: pulumi.String(\"project_1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = identity.NewLimitV3(ctx, \"limit_1\", \u0026identity.LimitV3Args{\n\t\t\tProjectId:     project1.ID(),\n\t\t\tServiceId:     pulumi.String(glance.Id),\n\t\t\tResourceName:  pulumi.String(\"image_count_total\"),\n\t\t\tResourceLimit: pulumi.Int(10),\n\t\t\tDescription:   pulumi.String(\"foo\"),\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.openstack.identity.IdentityFunctions;\nimport com.pulumi.openstack.identity.inputs.GetServiceArgs;\nimport com.pulumi.openstack.identity.Project;\nimport com.pulumi.openstack.identity.ProjectArgs;\nimport com.pulumi.openstack.identity.LimitV3;\nimport com.pulumi.openstack.identity.LimitV3Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 glance = IdentityFunctions.getService(GetServiceArgs.builder()\n            .name(\"glance\")\n            .build());\n\n        var project1 = new Project(\"project1\", ProjectArgs.builder()\n            .name(\"project_1\")\n            .build());\n\n        var limit1 = new LimitV3(\"limit1\", LimitV3Args.builder()\n            .projectId(project1.id())\n            .serviceId(glance.id())\n            .resourceName(\"image_count_total\")\n            .resourceLimit(10)\n            .description(\"foo\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  project1:\n    type: openstack:identity:Project\n    name: project_1\n    properties:\n      name: project_1\n  limit1:\n    type: openstack:identity:LimitV3\n    name: limit_1\n    properties:\n      projectId: ${project1.id}\n      serviceId: ${glance.id}\n      resourceName: image_count_total\n      resourceLimit: 10\n      description: foo\nvariables:\n  glance:\n    fn::invoke:\n      function: openstack:identity:getService\n      arguments:\n        name: glance\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nLimits can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:identity/limitV3:LimitV3 limit_1 89c60255-9bd6-460c-822a-e2b959ede9d2\n```\n","properties":{"description":{"type":"string","description":"Description of the limit.\n"},"domainId":{"type":"string","description":"The domain the limit applies to. Changing this\ncreates a new Limit.\n"},"projectId":{"type":"string","description":"The project the limit applies to. Changing this\ncreates a new Limit.\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new Limit.\n"},"resourceLimit":{"type":"integer","description":"Integer for the actual limit.\n"},"resourceName":{"type":"string","description":"The resource that the limit applies to. Changing\nthis creates a new Limit.\n"},"serviceId":{"type":"string","description":"The service the limit applies to. Changing this\ncreates a new Limit.\n"}},"required":["domainId","projectId","region","resourceLimit","resourceName","serviceId"],"inputProperties":{"description":{"type":"string","description":"Description of the limit.\n"},"domainId":{"type":"string","description":"The domain the limit applies to. Changing this\ncreates a new Limit.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"The project the limit applies to. Changing this\ncreates a new Limit.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new Limit.\n","willReplaceOnChanges":true},"resourceLimit":{"type":"integer","description":"Integer for the actual limit.\n"},"resourceName":{"type":"string","description":"The resource that the limit applies to. Changing\nthis creates a new Limit.\n","willReplaceOnChanges":true},"serviceId":{"type":"string","description":"The service the limit applies to. Changing this\ncreates a new Limit.\n","willReplaceOnChanges":true}},"requiredInputs":["resourceLimit","resourceName","serviceId"],"stateInputs":{"description":"Input properties used for looking up and filtering LimitV3 resources.\n","properties":{"description":{"type":"string","description":"Description of the limit.\n"},"domainId":{"type":"string","description":"The domain the limit applies to. Changing this\ncreates a new Limit.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"The project the limit applies to. Changing this\ncreates a new Limit.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new Limit.\n","willReplaceOnChanges":true},"resourceLimit":{"type":"integer","description":"Integer for the actual limit.\n"},"resourceName":{"type":"string","description":"The resource that the limit applies to. Changing\nthis creates a new Limit.\n","willReplaceOnChanges":true},"serviceId":{"type":"string","description":"The service the limit applies to. Changing this\ncreates a new Limit.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:identity/project:Project":{"description":"Manages a V3 Project resource within OpenStack Keystone.\n\n\u003e **Note:** You _must_ have admin privileges in your OpenStack cloud to use\nthis resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst project1 = new openstack.identity.Project(\"project_1\", {\n    name: \"project_1\",\n    description: \"A project\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nproject1 = openstack.identity.Project(\"project_1\",\n    name=\"project_1\",\n    description=\"A project\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var project1 = new OpenStack.Identity.Project(\"project_1\", new()\n    {\n        Name = \"project_1\",\n        Description = \"A project\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/identity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := identity.NewProject(ctx, \"project_1\", \u0026identity.ProjectArgs{\n\t\t\tName:        pulumi.String(\"project_1\"),\n\t\t\tDescription: pulumi.String(\"A project\"),\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.openstack.identity.Project;\nimport com.pulumi.openstack.identity.ProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 project1 = new Project(\"project1\", ProjectArgs.builder()\n            .name(\"project_1\")\n            .description(\"A project\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  project1:\n    type: openstack:identity:Project\n    name: project_1\n    properties:\n      name: project_1\n      description: A project\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nProjects can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:identity/project:Project project_1 89c60255-9bd6-460c-822a-e2b959ede9d2\n```\n","properties":{"description":{"type":"string","description":"A description of the project.\n"},"domainId":{"type":"string","description":"The domain this project belongs to.\n"},"enabled":{"type":"boolean","description":"Whether the project is enabled or disabled. Valid\nvalues are \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. Default is \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"},"isDomain":{"type":"boolean","description":"Whether this project is a domain. Valid values\nare \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. Changing this creates a new\nproject/domain.\n"},"name":{"type":"string","description":"The name of the project.\n"},"parentId":{"type":"string","description":"The parent of this project. Changing this creates\na new project.\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new project.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags for the project. Changing this updates the existing\nproject.\n"}},"required":["domainId","name","parentId","region"],"inputProperties":{"description":{"type":"string","description":"A description of the project.\n"},"domainId":{"type":"string","description":"The domain this project belongs to.\n","willReplaceOnChanges":true},"enabled":{"type":"boolean","description":"Whether the project is enabled or disabled. Valid\nvalues are \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. Default is \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"},"isDomain":{"type":"boolean","description":"Whether this project is a domain. Valid values\nare \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. Changing this creates a new\nproject/domain.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"The name of the project.\n"},"parentId":{"type":"string","description":"The parent of this project. Changing this creates\na new project.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new project.\n","willReplaceOnChanges":true},"tags":{"type":"array","items":{"type":"string"},"description":"Tags for the project. Changing this updates the existing\nproject.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering Project resources.\n","properties":{"description":{"type":"string","description":"A description of the project.\n"},"domainId":{"type":"string","description":"The domain this project belongs to.\n","willReplaceOnChanges":true},"enabled":{"type":"boolean","description":"Whether the project is enabled or disabled. Valid\nvalues are \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. Default is \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"},"isDomain":{"type":"boolean","description":"Whether this project is a domain. Valid values\nare \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. Changing this creates a new\nproject/domain.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"The name of the project.\n"},"parentId":{"type":"string","description":"The parent of this project. Changing this creates\na new project.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new project.\n","willReplaceOnChanges":true},"tags":{"type":"array","items":{"type":"string"},"description":"Tags for the project. Changing this updates the existing\nproject.\n"}},"type":"object"}},"openstack:identity/registeredLimitV3:RegisteredLimitV3":{"description":"Manages a V3 Registered Limit resource within OpenStack Keystone.\n\n\u003e **Note:** You _must_ have admin privileges in your OpenStack cloud to use\nthis resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst glance = openstack.identity.getService({\n    name: \"glance\",\n});\nconst limit1 = new openstack.identity.RegisteredLimitV3(\"limit_1\", {\n    serviceId: glance.then(glance =\u003e glance.id),\n    resourceName: \"image_count_total\",\n    defaultLimit: 10,\n    description: \"foo\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nglance = openstack.identity.get_service(name=\"glance\")\nlimit1 = openstack.identity.RegisteredLimitV3(\"limit_1\",\n    service_id=glance.id,\n    resource_name_=\"image_count_total\",\n    default_limit=10,\n    description=\"foo\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var glance = OpenStack.Identity.GetService.Invoke(new()\n    {\n        Name = \"glance\",\n    });\n\n    var limit1 = new OpenStack.Identity.RegisteredLimitV3(\"limit_1\", new()\n    {\n        ServiceId = glance.Apply(getServiceResult =\u003e getServiceResult.Id),\n        ResourceName = \"image_count_total\",\n        DefaultLimit = 10,\n        Description = \"foo\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/identity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tglance, err := identity.GetService(ctx, \u0026identity.GetServiceArgs{\n\t\t\tName: pulumi.StringRef(\"glance\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = identity.NewRegisteredLimitV3(ctx, \"limit_1\", \u0026identity.RegisteredLimitV3Args{\n\t\t\tServiceId:    pulumi.String(glance.Id),\n\t\t\tResourceName: pulumi.String(\"image_count_total\"),\n\t\t\tDefaultLimit: pulumi.Int(10),\n\t\t\tDescription:  pulumi.String(\"foo\"),\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.openstack.identity.IdentityFunctions;\nimport com.pulumi.openstack.identity.inputs.GetServiceArgs;\nimport com.pulumi.openstack.identity.RegisteredLimitV3;\nimport com.pulumi.openstack.identity.RegisteredLimitV3Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 glance = IdentityFunctions.getService(GetServiceArgs.builder()\n            .name(\"glance\")\n            .build());\n\n        var limit1 = new RegisteredLimitV3(\"limit1\", RegisteredLimitV3Args.builder()\n            .serviceId(glance.id())\n            .resourceName(\"image_count_total\")\n            .defaultLimit(10)\n            .description(\"foo\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  limit1:\n    type: openstack:identity:RegisteredLimitV3\n    name: limit_1\n    properties:\n      serviceId: ${glance.id}\n      resourceName: image_count_total\n      defaultLimit: 10\n      description: foo\nvariables:\n  glance:\n    fn::invoke:\n      function: openstack:identity:getService\n      arguments:\n        name: glance\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegistered Limits can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:identity/registeredLimitV3:RegisteredLimitV3 limit_1 89c60255-9bd6-460c-822a-e2b959ede9d2\n```\n","properties":{"defaultLimit":{"type":"integer","description":"Integer for the actual limit.\n"},"description":{"type":"string","description":"Description of the limit\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new registered limit.\n"},"resourceName":{"type":"string","description":"The resource that the limit applies to. On\nupdates, either service_id,\u003cspan pulumi-lang-nodejs=\" resourceName \" pulumi-lang-dotnet=\" ResourceName \" pulumi-lang-go=\" resourceName \" pulumi-lang-python=\" resource_name \" pulumi-lang-yaml=\" resourceName \" pulumi-lang-java=\" resourceName \"\u003e resource_name \u003c/span\u003eor\u003cspan pulumi-lang-nodejs=\" regionId \" pulumi-lang-dotnet=\" RegionId \" pulumi-lang-go=\" regionId \" pulumi-lang-python=\" region_id \" pulumi-lang-yaml=\" regionId \" pulumi-lang-java=\" regionId \"\u003e region_id \u003c/span\u003emust be different than\nexisting value otherwise it will raise 409.\n"},"serviceId":{"type":"string","description":"The service the limit applies to. On updates,\neither service_id,\u003cspan pulumi-lang-nodejs=\" resourceName \" pulumi-lang-dotnet=\" ResourceName \" pulumi-lang-go=\" resourceName \" pulumi-lang-python=\" resource_name \" pulumi-lang-yaml=\" resourceName \" pulumi-lang-java=\" resourceName \"\u003e resource_name \u003c/span\u003eor\u003cspan pulumi-lang-nodejs=\" regionId \" pulumi-lang-dotnet=\" RegionId \" pulumi-lang-go=\" regionId \" pulumi-lang-python=\" region_id \" pulumi-lang-yaml=\" regionId \" pulumi-lang-java=\" regionId \"\u003e region_id \u003c/span\u003emust be different than existing\nvalue otherwise it will raise 409.\n"}},"required":["defaultLimit","region","resourceName","serviceId"],"inputProperties":{"defaultLimit":{"type":"integer","description":"Integer for the actual limit.\n"},"description":{"type":"string","description":"Description of the limit\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new registered limit.\n","willReplaceOnChanges":true},"resourceName":{"type":"string","description":"The resource that the limit applies to. On\nupdates, either service_id,\u003cspan pulumi-lang-nodejs=\" resourceName \" pulumi-lang-dotnet=\" ResourceName \" pulumi-lang-go=\" resourceName \" pulumi-lang-python=\" resource_name \" pulumi-lang-yaml=\" resourceName \" pulumi-lang-java=\" resourceName \"\u003e resource_name \u003c/span\u003eor\u003cspan pulumi-lang-nodejs=\" regionId \" pulumi-lang-dotnet=\" RegionId \" pulumi-lang-go=\" regionId \" pulumi-lang-python=\" region_id \" pulumi-lang-yaml=\" regionId \" pulumi-lang-java=\" regionId \"\u003e region_id \u003c/span\u003emust be different than\nexisting value otherwise it will raise 409.\n"},"serviceId":{"type":"string","description":"The service the limit applies to. On updates,\neither service_id,\u003cspan pulumi-lang-nodejs=\" resourceName \" pulumi-lang-dotnet=\" ResourceName \" pulumi-lang-go=\" resourceName \" pulumi-lang-python=\" resource_name \" pulumi-lang-yaml=\" resourceName \" pulumi-lang-java=\" resourceName \"\u003e resource_name \u003c/span\u003eor\u003cspan pulumi-lang-nodejs=\" regionId \" pulumi-lang-dotnet=\" RegionId \" pulumi-lang-go=\" regionId \" pulumi-lang-python=\" region_id \" pulumi-lang-yaml=\" regionId \" pulumi-lang-java=\" regionId \"\u003e region_id \u003c/span\u003emust be different than existing\nvalue otherwise it will raise 409.\n"}},"requiredInputs":["defaultLimit","resourceName","serviceId"],"stateInputs":{"description":"Input properties used for looking up and filtering RegisteredLimitV3 resources.\n","properties":{"defaultLimit":{"type":"integer","description":"Integer for the actual limit.\n"},"description":{"type":"string","description":"Description of the limit\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new registered limit.\n","willReplaceOnChanges":true},"resourceName":{"type":"string","description":"The resource that the limit applies to. On\nupdates, either service_id,\u003cspan pulumi-lang-nodejs=\" resourceName \" pulumi-lang-dotnet=\" ResourceName \" pulumi-lang-go=\" resourceName \" pulumi-lang-python=\" resource_name \" pulumi-lang-yaml=\" resourceName \" pulumi-lang-java=\" resourceName \"\u003e resource_name \u003c/span\u003eor\u003cspan pulumi-lang-nodejs=\" regionId \" pulumi-lang-dotnet=\" RegionId \" pulumi-lang-go=\" regionId \" pulumi-lang-python=\" region_id \" pulumi-lang-yaml=\" regionId \" pulumi-lang-java=\" regionId \"\u003e region_id \u003c/span\u003emust be different than\nexisting value otherwise it will raise 409.\n"},"serviceId":{"type":"string","description":"The service the limit applies to. On updates,\neither service_id,\u003cspan pulumi-lang-nodejs=\" resourceName \" pulumi-lang-dotnet=\" ResourceName \" pulumi-lang-go=\" resourceName \" pulumi-lang-python=\" resource_name \" pulumi-lang-yaml=\" resourceName \" pulumi-lang-java=\" resourceName \"\u003e resource_name \u003c/span\u003eor\u003cspan pulumi-lang-nodejs=\" regionId \" pulumi-lang-dotnet=\" RegionId \" pulumi-lang-go=\" regionId \" pulumi-lang-python=\" region_id \" pulumi-lang-yaml=\" regionId \" pulumi-lang-java=\" regionId \"\u003e region_id \u003c/span\u003emust be different than existing\nvalue otherwise it will raise 409.\n"}},"type":"object"}},"openstack:identity/role:Role":{"description":"Manages a V3 Role resource within OpenStack Keystone.\n\n\u003e **Note:** You _must_ have admin privileges in your OpenStack cloud to use\nthis resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst role1 = new openstack.identity.Role(\"role_1\", {name: \"role_1\"});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nrole1 = openstack.identity.Role(\"role_1\", name=\"role_1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var role1 = new OpenStack.Identity.Role(\"role_1\", new()\n    {\n        Name = \"role_1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/identity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := identity.NewRole(ctx, \"role_1\", \u0026identity.RoleArgs{\n\t\t\tName: pulumi.String(\"role_1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openstack.identity.Role;\nimport com.pulumi.openstack.identity.RoleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var role1 = new Role(\"role1\", RoleArgs.builder()\n            .name(\"role_1\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  role1:\n    type: openstack:identity:Role\n    name: role_1\n    properties:\n      name: role_1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRoles can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:identity/role:Role role_1 89c60255-9bd6-460c-822a-e2b959ede9d2\n```\n","properties":{"domainId":{"type":"string","description":"The domain the role belongs to.\n"},"name":{"type":"string","description":"The name of the role.\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new Role.\n"}},"required":["domainId","name","region"],"inputProperties":{"domainId":{"type":"string","description":"The domain the role belongs to.\n"},"name":{"type":"string","description":"The name of the role.\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new Role.\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering Role resources.\n","properties":{"domainId":{"type":"string","description":"The domain the role belongs to.\n"},"name":{"type":"string","description":"The name of the role.\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new Role.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:identity/roleAssignment:RoleAssignment":{"description":"Manages a V3 Role assignment within OpenStack Keystone.\n\n\u003e **Note:** You _must_ have admin privileges in your OpenStack cloud to use\nthis resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst project1 = new openstack.identity.Project(\"project_1\", {name: \"project_1\"});\nconst user1 = new openstack.identity.User(\"user_1\", {\n    name: \"user_1\",\n    defaultProjectId: project1.id,\n});\nconst role1 = new openstack.identity.Role(\"role_1\", {name: \"role_1\"});\nconst roleAssignment1 = new openstack.identity.RoleAssignment(\"role_assignment_1\", {\n    userId: user1.id,\n    projectId: project1.id,\n    roleId: role1.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nproject1 = openstack.identity.Project(\"project_1\", name=\"project_1\")\nuser1 = openstack.identity.User(\"user_1\",\n    name=\"user_1\",\n    default_project_id=project1.id)\nrole1 = openstack.identity.Role(\"role_1\", name=\"role_1\")\nrole_assignment1 = openstack.identity.RoleAssignment(\"role_assignment_1\",\n    user_id=user1.id,\n    project_id=project1.id,\n    role_id=role1.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var project1 = new OpenStack.Identity.Project(\"project_1\", new()\n    {\n        Name = \"project_1\",\n    });\n\n    var user1 = new OpenStack.Identity.User(\"user_1\", new()\n    {\n        Name = \"user_1\",\n        DefaultProjectId = project1.Id,\n    });\n\n    var role1 = new OpenStack.Identity.Role(\"role_1\", new()\n    {\n        Name = \"role_1\",\n    });\n\n    var roleAssignment1 = new OpenStack.Identity.RoleAssignment(\"role_assignment_1\", new()\n    {\n        UserId = user1.Id,\n        ProjectId = project1.Id,\n        RoleId = role1.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/identity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject1, err := identity.NewProject(ctx, \"project_1\", \u0026identity.ProjectArgs{\n\t\t\tName: pulumi.String(\"project_1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser1, err := identity.NewUser(ctx, \"user_1\", \u0026identity.UserArgs{\n\t\t\tName:             pulumi.String(\"user_1\"),\n\t\t\tDefaultProjectId: project1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trole1, err := identity.NewRole(ctx, \"role_1\", \u0026identity.RoleArgs{\n\t\t\tName: pulumi.String(\"role_1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = identity.NewRoleAssignment(ctx, \"role_assignment_1\", \u0026identity.RoleAssignmentArgs{\n\t\t\tUserId:    user1.ID(),\n\t\t\tProjectId: project1.ID(),\n\t\t\tRoleId:    role1.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.openstack.identity.Project;\nimport com.pulumi.openstack.identity.ProjectArgs;\nimport com.pulumi.openstack.identity.User;\nimport com.pulumi.openstack.identity.UserArgs;\nimport com.pulumi.openstack.identity.Role;\nimport com.pulumi.openstack.identity.RoleArgs;\nimport com.pulumi.openstack.identity.RoleAssignment;\nimport com.pulumi.openstack.identity.RoleAssignmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 project1 = new Project(\"project1\", ProjectArgs.builder()\n            .name(\"project_1\")\n            .build());\n\n        var user1 = new User(\"user1\", UserArgs.builder()\n            .name(\"user_1\")\n            .defaultProjectId(project1.id())\n            .build());\n\n        var role1 = new Role(\"role1\", RoleArgs.builder()\n            .name(\"role_1\")\n            .build());\n\n        var roleAssignment1 = new RoleAssignment(\"roleAssignment1\", RoleAssignmentArgs.builder()\n            .userId(user1.id())\n            .projectId(project1.id())\n            .roleId(role1.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  project1:\n    type: openstack:identity:Project\n    name: project_1\n    properties:\n      name: project_1\n  user1:\n    type: openstack:identity:User\n    name: user_1\n    properties:\n      name: user_1\n      defaultProjectId: ${project1.id}\n  role1:\n    type: openstack:identity:Role\n    name: role_1\n    properties:\n      name: role_1\n  roleAssignment1:\n    type: openstack:identity:RoleAssignment\n    name: role_assignment_1\n    properties:\n      userId: ${user1.id}\n      projectId: ${project1.id}\n      roleId: ${role1.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRole assignments can be imported using a constructed id. The id should have the form of\n`domainID/projectID/groupID/userID/roleID`. When something is not used then leave blank.\n\nFor example this will import the role assignment for:\nprojectID: 014395cd-89fc-4c9b-96b7-13d1ee79dad2,\nuserID: 4142e64b-1b35-44a0-9b1e-5affc7af1106,\nroleID: ea257959-eeb1-4c10-8d33-26f0409a755d\n( domainID and groupID are left blank)\n\n```sh\n$ pulumi import openstack:identity/roleAssignment:RoleAssignment role_assignment_1 /014395cd-89fc-4c9b-96b7-13d1ee79dad2//4142e64b-1b35-44a0-9b1e-5affc7af1106/ea257959-eeb1-4c10-8d33-26f0409a755d\n```\n","properties":{"domainId":{"type":"string","description":"The domain to assign the role in.\n"},"groupId":{"type":"string","description":"The group to assign the role to.\n"},"projectId":{"type":"string","description":"The project to assign the role in.\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new role assignment.\n"},"roleId":{"type":"string","description":"The role to assign.\n"},"userId":{"type":"string","description":"The user to assign the role to.\n"}},"required":["region","roleId"],"inputProperties":{"domainId":{"type":"string","description":"The domain to assign the role in.\n","willReplaceOnChanges":true},"groupId":{"type":"string","description":"The group to assign the role to.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"The project to assign the role in.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new role assignment.\n","willReplaceOnChanges":true},"roleId":{"type":"string","description":"The role to assign.\n","willReplaceOnChanges":true},"userId":{"type":"string","description":"The user to assign the role to.\n","willReplaceOnChanges":true}},"requiredInputs":["roleId"],"stateInputs":{"description":"Input properties used for looking up and filtering RoleAssignment resources.\n","properties":{"domainId":{"type":"string","description":"The domain to assign the role in.\n","willReplaceOnChanges":true},"groupId":{"type":"string","description":"The group to assign the role to.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"The project to assign the role in.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new role assignment.\n","willReplaceOnChanges":true},"roleId":{"type":"string","description":"The role to assign.\n","willReplaceOnChanges":true},"userId":{"type":"string","description":"The user to assign the role to.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:identity/serviceV3:ServiceV3":{"description":"Manages a V3 Service resource within OpenStack Keystone.\n\n\u003e **Note:** This usually requires admin privileges.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst service1 = new openstack.identity.ServiceV3(\"service_1\", {\n    name: \"custom\",\n    type: \"custom\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nservice1 = openstack.identity.ServiceV3(\"service_1\",\n    name=\"custom\",\n    type=\"custom\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var service1 = new OpenStack.Identity.ServiceV3(\"service_1\", new()\n    {\n        Name = \"custom\",\n        Type = \"custom\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/identity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := identity.NewServiceV3(ctx, \"service_1\", \u0026identity.ServiceV3Args{\n\t\t\tName: pulumi.String(\"custom\"),\n\t\t\tType: pulumi.String(\"custom\"),\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.openstack.identity.ServiceV3;\nimport com.pulumi.openstack.identity.ServiceV3Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 service1 = new ServiceV3(\"service1\", ServiceV3Args.builder()\n            .name(\"custom\")\n            .type(\"custom\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  service1:\n    type: openstack:identity:ServiceV3\n    name: service_1\n    properties:\n      name: custom\n      type: custom\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServices can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:identity/serviceV3:ServiceV3 service_1 6688e967-158a-496f-a224-cae3414e6b61\n```\n","properties":{"description":{"type":"string","description":"The service description.\n"},"enabled":{"type":"boolean","description":"The service status. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"},"name":{"type":"string","description":"The service name.\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"},"type":{"type":"string","description":"The service type.\n"}},"required":["name","region","type"],"inputProperties":{"description":{"type":"string","description":"The service description.\n"},"enabled":{"type":"boolean","description":"The service status. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"},"name":{"type":"string","description":"The service name.\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n","willReplaceOnChanges":true},"type":{"type":"string","description":"The service type.\n"}},"requiredInputs":["type"],"stateInputs":{"description":"Input properties used for looking up and filtering ServiceV3 resources.\n","properties":{"description":{"type":"string","description":"The service description.\n"},"enabled":{"type":"boolean","description":"The service status. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"},"name":{"type":"string","description":"The service name.\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n","willReplaceOnChanges":true},"type":{"type":"string","description":"The service type.\n"}},"type":"object"}},"openstack:identity/user:User":{"description":"Manages a V3 User resource within OpenStack Keystone.\n\n\u003e **Note:** All arguments including the user password will be stored in the\nraw state as plain-text. Read more about sensitive data in\nstate.\n\n\u003e **Note:** You _must_ have admin privileges in your OpenStack cloud to use\nthis resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst project1 = new openstack.identity.Project(\"project_1\", {name: \"project_1\"});\nconst user1 = new openstack.identity.User(\"user_1\", {\n    defaultProjectId: project1.id,\n    name: \"user_1\",\n    description: \"A user\",\n    password: \"password123\",\n    ignoreChangePasswordUponFirstUse: true,\n    multiFactorAuthEnabled: true,\n    multiFactorAuthRules: [\n        {\n            rules: [\n                \"password\",\n                \"totp\",\n            ],\n        },\n        {\n            rules: [\"password\"],\n        },\n    ],\n    extra: {\n        email: \"user_1@foobar.com\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nproject1 = openstack.identity.Project(\"project_1\", name=\"project_1\")\nuser1 = openstack.identity.User(\"user_1\",\n    default_project_id=project1.id,\n    name=\"user_1\",\n    description=\"A user\",\n    password=\"password123\",\n    ignore_change_password_upon_first_use=True,\n    multi_factor_auth_enabled=True,\n    multi_factor_auth_rules=[\n        {\n            \"rules\": [\n                \"password\",\n                \"totp\",\n            ],\n        },\n        {\n            \"rules\": [\"password\"],\n        },\n    ],\n    extra={\n        \"email\": \"user_1@foobar.com\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var project1 = new OpenStack.Identity.Project(\"project_1\", new()\n    {\n        Name = \"project_1\",\n    });\n\n    var user1 = new OpenStack.Identity.User(\"user_1\", new()\n    {\n        DefaultProjectId = project1.Id,\n        Name = \"user_1\",\n        Description = \"A user\",\n        Password = \"password123\",\n        IgnoreChangePasswordUponFirstUse = true,\n        MultiFactorAuthEnabled = true,\n        MultiFactorAuthRules = new[]\n        {\n            new OpenStack.Identity.Inputs.UserMultiFactorAuthRuleArgs\n            {\n                Rules = new[]\n                {\n                    \"password\",\n                    \"totp\",\n                },\n            },\n            new OpenStack.Identity.Inputs.UserMultiFactorAuthRuleArgs\n            {\n                Rules = new[]\n                {\n                    \"password\",\n                },\n            },\n        },\n        Extra = \n        {\n            { \"email\", \"user_1@foobar.com\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/identity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject1, err := identity.NewProject(ctx, \"project_1\", \u0026identity.ProjectArgs{\n\t\t\tName: pulumi.String(\"project_1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = identity.NewUser(ctx, \"user_1\", \u0026identity.UserArgs{\n\t\t\tDefaultProjectId:                 project1.ID(),\n\t\t\tName:                             pulumi.String(\"user_1\"),\n\t\t\tDescription:                      pulumi.String(\"A user\"),\n\t\t\tPassword:                         pulumi.String(\"password123\"),\n\t\t\tIgnoreChangePasswordUponFirstUse: pulumi.Bool(true),\n\t\t\tMultiFactorAuthEnabled:           pulumi.Bool(true),\n\t\t\tMultiFactorAuthRules: identity.UserMultiFactorAuthRuleArray{\n\t\t\t\t\u0026identity.UserMultiFactorAuthRuleArgs{\n\t\t\t\t\tRules: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"password\"),\n\t\t\t\t\t\tpulumi.String(\"totp\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026identity.UserMultiFactorAuthRuleArgs{\n\t\t\t\t\tRules: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"password\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tExtra: pulumi.StringMap{\n\t\t\t\t\"email\": pulumi.String(\"user_1@foobar.com\"),\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.openstack.identity.Project;\nimport com.pulumi.openstack.identity.ProjectArgs;\nimport com.pulumi.openstack.identity.User;\nimport com.pulumi.openstack.identity.UserArgs;\nimport com.pulumi.openstack.identity.inputs.UserMultiFactorAuthRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 project1 = new Project(\"project1\", ProjectArgs.builder()\n            .name(\"project_1\")\n            .build());\n\n        var user1 = new User(\"user1\", UserArgs.builder()\n            .defaultProjectId(project1.id())\n            .name(\"user_1\")\n            .description(\"A user\")\n            .password(\"password123\")\n            .ignoreChangePasswordUponFirstUse(true)\n            .multiFactorAuthEnabled(true)\n            .multiFactorAuthRules(            \n                UserMultiFactorAuthRuleArgs.builder()\n                    .rules(                    \n                        \"password\",\n                        \"totp\")\n                    .build(),\n                UserMultiFactorAuthRuleArgs.builder()\n                    .rules(\"password\")\n                    .build())\n            .extra(Map.of(\"email\", \"user_1@foobar.com\"))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  project1:\n    type: openstack:identity:Project\n    name: project_1\n    properties:\n      name: project_1\n  user1:\n    type: openstack:identity:User\n    name: user_1\n    properties:\n      defaultProjectId: ${project1.id}\n      name: user_1\n      description: A user\n      password: password123\n      ignoreChangePasswordUponFirstUse: true\n      multiFactorAuthEnabled: true\n      multiFactorAuthRules:\n        - rules:\n            - password\n            - totp\n        - rules:\n            - password\n      extra:\n        email: user_1@foobar.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsers can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:identity/user:User user_1 89c60255-9bd6-460c-822a-e2b959ede9d2\n```\n","properties":{"defaultProjectId":{"type":"string","description":"The default project this user belongs to.\n"},"description":{"type":"string","description":"A description of the user.\n"},"domainId":{"type":"string","description":"The domain this user belongs to.\n"},"enabled":{"type":"boolean","description":"Whether the user is enabled or disabled. Valid\nvalues are \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"extra":{"type":"object","additionalProperties":{"type":"string"},"description":"Free-form key/value pairs of extra information.\n"},"ignoreChangePasswordUponFirstUse":{"type":"boolean","description":"User will not have to\nchange their password upon first use. Valid values are \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"ignoreLockoutFailureAttempts":{"type":"boolean","description":"User will not have a failure\nlockout placed on their account. Valid values are \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"ignorePasswordExpiry":{"type":"boolean","description":"User's password will not expire.\nValid values are \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"multiFactorAuthEnabled":{"type":"boolean","description":"Whether to enable multi-factor\nauthentication. Valid values are \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"multiFactorAuthRules":{"type":"array","items":{"$ref":"#/types/openstack:identity/UserMultiFactorAuthRule:UserMultiFactorAuthRule"},"description":"A multi-factor authentication rule.\nThe structure is documented below. Please see the\n[Ocata release notes](https://docs.openstack.org/releasenotes/keystone/ocata.html)\nfor more information on how to use mulit-factor rules.\n"},"name":{"type":"string","description":"The name of the user.\n"},"password":{"type":"string","description":"The password for the user.\n","secret":true},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new User.\n"}},"required":["defaultProjectId","domainId","name","region"],"inputProperties":{"defaultProjectId":{"type":"string","description":"The default project this user belongs to.\n"},"description":{"type":"string","description":"A description of the user.\n"},"domainId":{"type":"string","description":"The domain this user belongs to.\n"},"enabled":{"type":"boolean","description":"Whether the user is enabled or disabled. Valid\nvalues are \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"extra":{"type":"object","additionalProperties":{"type":"string"},"description":"Free-form key/value pairs of extra information.\n"},"ignoreChangePasswordUponFirstUse":{"type":"boolean","description":"User will not have to\nchange their password upon first use. Valid values are \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"ignoreLockoutFailureAttempts":{"type":"boolean","description":"User will not have a failure\nlockout placed on their account. Valid values are \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"ignorePasswordExpiry":{"type":"boolean","description":"User's password will not expire.\nValid values are \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"multiFactorAuthEnabled":{"type":"boolean","description":"Whether to enable multi-factor\nauthentication. Valid values are \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"multiFactorAuthRules":{"type":"array","items":{"$ref":"#/types/openstack:identity/UserMultiFactorAuthRule:UserMultiFactorAuthRule"},"description":"A multi-factor authentication rule.\nThe structure is documented below. Please see the\n[Ocata release notes](https://docs.openstack.org/releasenotes/keystone/ocata.html)\nfor more information on how to use mulit-factor rules.\n"},"name":{"type":"string","description":"The name of the user.\n"},"password":{"type":"string","description":"The password for the user.\n","secret":true},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new User.\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering User resources.\n","properties":{"defaultProjectId":{"type":"string","description":"The default project this user belongs to.\n"},"description":{"type":"string","description":"A description of the user.\n"},"domainId":{"type":"string","description":"The domain this user belongs to.\n"},"enabled":{"type":"boolean","description":"Whether the user is enabled or disabled. Valid\nvalues are \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"extra":{"type":"object","additionalProperties":{"type":"string"},"description":"Free-form key/value pairs of extra information.\n"},"ignoreChangePasswordUponFirstUse":{"type":"boolean","description":"User will not have to\nchange their password upon first use. Valid values are \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"ignoreLockoutFailureAttempts":{"type":"boolean","description":"User will not have a failure\nlockout placed on their account. Valid values are \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"ignorePasswordExpiry":{"type":"boolean","description":"User's password will not expire.\nValid values are \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"multiFactorAuthEnabled":{"type":"boolean","description":"Whether to enable multi-factor\nauthentication. Valid values are \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"multiFactorAuthRules":{"type":"array","items":{"$ref":"#/types/openstack:identity/UserMultiFactorAuthRule:UserMultiFactorAuthRule"},"description":"A multi-factor authentication rule.\nThe structure is documented below. Please see the\n[Ocata release notes](https://docs.openstack.org/releasenotes/keystone/ocata.html)\nfor more information on how to use mulit-factor rules.\n"},"name":{"type":"string","description":"The name of the user.\n"},"password":{"type":"string","description":"The password for the user.\n","secret":true},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new User.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:identity/userMembershipV3:UserMembershipV3":{"description":"Manages a user membership to group V3 resource within OpenStack.\n\n\u003e **Note:** You _must_ have admin privileges in your OpenStack cloud to use\nthis resource.\n\n---\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst project1 = new openstack.identity.Project(\"project_1\", {name: \"project_1\"});\nconst user1 = new openstack.identity.User(\"user_1\", {\n    name: \"user_1\",\n    defaultProjectId: project1.id,\n});\nconst group1 = new openstack.identity.GroupV3(\"group_1\", {\n    name: \"group_1\",\n    description: \"group 1\",\n});\nconst role1 = new openstack.identity.Role(\"role_1\", {name: \"role_1\"});\nconst userMembership1 = new openstack.identity.UserMembershipV3(\"user_membership_1\", {\n    userId: user1.id,\n    groupId: group1.id,\n});\nconst roleAssignment1 = new openstack.identity.RoleAssignment(\"role_assignment_1\", {\n    groupId: group1.id,\n    projectId: project1.id,\n    roleId: role1.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nproject1 = openstack.identity.Project(\"project_1\", name=\"project_1\")\nuser1 = openstack.identity.User(\"user_1\",\n    name=\"user_1\",\n    default_project_id=project1.id)\ngroup1 = openstack.identity.GroupV3(\"group_1\",\n    name=\"group_1\",\n    description=\"group 1\")\nrole1 = openstack.identity.Role(\"role_1\", name=\"role_1\")\nuser_membership1 = openstack.identity.UserMembershipV3(\"user_membership_1\",\n    user_id=user1.id,\n    group_id=group1.id)\nrole_assignment1 = openstack.identity.RoleAssignment(\"role_assignment_1\",\n    group_id=group1.id,\n    project_id=project1.id,\n    role_id=role1.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var project1 = new OpenStack.Identity.Project(\"project_1\", new()\n    {\n        Name = \"project_1\",\n    });\n\n    var user1 = new OpenStack.Identity.User(\"user_1\", new()\n    {\n        Name = \"user_1\",\n        DefaultProjectId = project1.Id,\n    });\n\n    var group1 = new OpenStack.Identity.GroupV3(\"group_1\", new()\n    {\n        Name = \"group_1\",\n        Description = \"group 1\",\n    });\n\n    var role1 = new OpenStack.Identity.Role(\"role_1\", new()\n    {\n        Name = \"role_1\",\n    });\n\n    var userMembership1 = new OpenStack.Identity.UserMembershipV3(\"user_membership_1\", new()\n    {\n        UserId = user1.Id,\n        GroupId = group1.Id,\n    });\n\n    var roleAssignment1 = new OpenStack.Identity.RoleAssignment(\"role_assignment_1\", new()\n    {\n        GroupId = group1.Id,\n        ProjectId = project1.Id,\n        RoleId = role1.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/identity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject1, err := identity.NewProject(ctx, \"project_1\", \u0026identity.ProjectArgs{\n\t\t\tName: pulumi.String(\"project_1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser1, err := identity.NewUser(ctx, \"user_1\", \u0026identity.UserArgs{\n\t\t\tName:             pulumi.String(\"user_1\"),\n\t\t\tDefaultProjectId: project1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgroup1, err := identity.NewGroupV3(ctx, \"group_1\", \u0026identity.GroupV3Args{\n\t\t\tName:        pulumi.String(\"group_1\"),\n\t\t\tDescription: pulumi.String(\"group 1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trole1, err := identity.NewRole(ctx, \"role_1\", \u0026identity.RoleArgs{\n\t\t\tName: pulumi.String(\"role_1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = identity.NewUserMembershipV3(ctx, \"user_membership_1\", \u0026identity.UserMembershipV3Args{\n\t\t\tUserId:  user1.ID(),\n\t\t\tGroupId: group1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = identity.NewRoleAssignment(ctx, \"role_assignment_1\", \u0026identity.RoleAssignmentArgs{\n\t\t\tGroupId:   group1.ID(),\n\t\t\tProjectId: project1.ID(),\n\t\t\tRoleId:    role1.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.openstack.identity.Project;\nimport com.pulumi.openstack.identity.ProjectArgs;\nimport com.pulumi.openstack.identity.User;\nimport com.pulumi.openstack.identity.UserArgs;\nimport com.pulumi.openstack.identity.GroupV3;\nimport com.pulumi.openstack.identity.GroupV3Args;\nimport com.pulumi.openstack.identity.Role;\nimport com.pulumi.openstack.identity.RoleArgs;\nimport com.pulumi.openstack.identity.UserMembershipV3;\nimport com.pulumi.openstack.identity.UserMembershipV3Args;\nimport com.pulumi.openstack.identity.RoleAssignment;\nimport com.pulumi.openstack.identity.RoleAssignmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 project1 = new Project(\"project1\", ProjectArgs.builder()\n            .name(\"project_1\")\n            .build());\n\n        var user1 = new User(\"user1\", UserArgs.builder()\n            .name(\"user_1\")\n            .defaultProjectId(project1.id())\n            .build());\n\n        var group1 = new GroupV3(\"group1\", GroupV3Args.builder()\n            .name(\"group_1\")\n            .description(\"group 1\")\n            .build());\n\n        var role1 = new Role(\"role1\", RoleArgs.builder()\n            .name(\"role_1\")\n            .build());\n\n        var userMembership1 = new UserMembershipV3(\"userMembership1\", UserMembershipV3Args.builder()\n            .userId(user1.id())\n            .groupId(group1.id())\n            .build());\n\n        var roleAssignment1 = new RoleAssignment(\"roleAssignment1\", RoleAssignmentArgs.builder()\n            .groupId(group1.id())\n            .projectId(project1.id())\n            .roleId(role1.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  project1:\n    type: openstack:identity:Project\n    name: project_1\n    properties:\n      name: project_1\n  user1:\n    type: openstack:identity:User\n    name: user_1\n    properties:\n      name: user_1\n      defaultProjectId: ${project1.id}\n  group1:\n    type: openstack:identity:GroupV3\n    name: group_1\n    properties:\n      name: group_1\n      description: group 1\n  role1:\n    type: openstack:identity:Role\n    name: role_1\n    properties:\n      name: role_1\n  userMembership1:\n    type: openstack:identity:UserMembershipV3\n    name: user_membership_1\n    properties:\n      userId: ${user1.id}\n      groupId: ${group1.id}\n  roleAssignment1:\n    type: openstack:identity:RoleAssignment\n    name: role_assignment_1\n    properties:\n      groupId: ${group1.id}\n      projectId: ${project1.id}\n      roleId: ${role1.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource can be imported by specifying all two arguments, separated\nby a forward slash:\n\n```sh\n$ pulumi import openstack:identity/userMembershipV3:UserMembershipV3 user_membership_1 user_id/group_id\n```\n","properties":{"groupId":{"type":"string","description":"The UUID of group to which the user will be added.\nChanging this creates a new user membership.\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Identity client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\nChanging this creates a new user membership.\n"},"userId":{"type":"string","description":"The UUID of user to use. Changing this creates a new user membership.\n"}},"required":["groupId","region","userId"],"inputProperties":{"groupId":{"type":"string","description":"The UUID of group to which the user will be added.\nChanging this creates a new user membership.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V3 Identity client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\nChanging this creates a new user membership.\n","willReplaceOnChanges":true},"userId":{"type":"string","description":"The UUID of user to use. Changing this creates a new user membership.\n","willReplaceOnChanges":true}},"requiredInputs":["groupId","userId"],"stateInputs":{"description":"Input properties used for looking up and filtering UserMembershipV3 resources.\n","properties":{"groupId":{"type":"string","description":"The UUID of group to which the user will be added.\nChanging this creates a new user membership.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V3 Identity client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\nChanging this creates a new user membership.\n","willReplaceOnChanges":true},"userId":{"type":"string","description":"The UUID of user to use. Changing this creates a new user membership.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:images/image:Image":{"description":"Manages a V2 Image resource within OpenStack Glance.\n\n\u003e **Note:** All arguments including the source image URL password will be\nstored in the raw state as plain-text. Read more about sensitive data in\nstate.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst rancheros = new openstack.images.Image(\"rancheros\", {\n    name: \"RancherOS\",\n    imageSourceUrl: \"https://releases.rancher.com/os/latest/rancheros-openstack.img\",\n    containerFormat: \"bare\",\n    diskFormat: \"qcow2\",\n    properties: {\n        key: \"value\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nrancheros = openstack.images.Image(\"rancheros\",\n    name=\"RancherOS\",\n    image_source_url=\"https://releases.rancher.com/os/latest/rancheros-openstack.img\",\n    container_format=\"bare\",\n    disk_format=\"qcow2\",\n    properties={\n        \"key\": \"value\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var rancheros = new OpenStack.Images.Image(\"rancheros\", new()\n    {\n        Name = \"RancherOS\",\n        ImageSourceUrl = \"https://releases.rancher.com/os/latest/rancheros-openstack.img\",\n        ContainerFormat = \"bare\",\n        DiskFormat = \"qcow2\",\n        Properties = \n        {\n            { \"key\", \"value\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/images\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := images.NewImage(ctx, \"rancheros\", \u0026images.ImageArgs{\n\t\t\tName:            pulumi.String(\"RancherOS\"),\n\t\t\tImageSourceUrl:  pulumi.String(\"https://releases.rancher.com/os/latest/rancheros-openstack.img\"),\n\t\t\tContainerFormat: pulumi.String(\"bare\"),\n\t\t\tDiskFormat:      pulumi.String(\"qcow2\"),\n\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\"key\": pulumi.String(\"value\"),\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.openstack.images.Image;\nimport com.pulumi.openstack.images.ImageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var rancheros = new Image(\"rancheros\", ImageArgs.builder()\n            .name(\"RancherOS\")\n            .imageSourceUrl(\"https://releases.rancher.com/os/latest/rancheros-openstack.img\")\n            .containerFormat(\"bare\")\n            .diskFormat(\"qcow2\")\n            .properties(Map.of(\"key\", \"value\"))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  rancheros:\n    type: openstack:images:Image\n    properties:\n      name: RancherOS\n      imageSourceUrl: https://releases.rancher.com/os/latest/rancheros-openstack.img\n      containerFormat: bare\n      diskFormat: qcow2\n      properties:\n        key: value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Notes\n\n### Properties\n\nThis resource supports the ability to add properties to a resource during\ncreation as well as add, update, and delete properties during an update of this\nresource.\n\nNewer versions of OpenStack are adding some read-only properties to each image.\nThese properties start with the prefix `os_`. If these properties are detected,\nthis resource will automatically reconcile these with the user-provided\nproperties.\n\nIn addition, the \u003cspan pulumi-lang-nodejs=\"`directUrl`\" pulumi-lang-dotnet=\"`DirectUrl`\" pulumi-lang-go=\"`directUrl`\" pulumi-lang-python=\"`direct_url`\" pulumi-lang-yaml=\"`directUrl`\" pulumi-lang-java=\"`directUrl`\"\u003e`direct_url`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`stores`\" pulumi-lang-dotnet=\"`Stores`\" pulumi-lang-go=\"`stores`\" pulumi-lang-python=\"`stores`\" pulumi-lang-yaml=\"`stores`\" pulumi-lang-java=\"`stores`\"\u003e`stores`\u003c/span\u003e properties are also automatically reconciled if the\nImage Service set it.\n\n## Import\n\nImages can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:images/image:Image rancheros 89c60255-9bd6-460c-822a-e2b959ede9d2\n```\n","properties":{"checksum":{"type":"string","description":"The checksum of the data associated with the image.\n"},"containerFormat":{"type":"string","description":"The container format. Must be one of \"bare\",\n\"ovf\", \"aki\", \"ari\", \"ami\", \"ova\", \"docker\", \"compressed\".\n"},"createdAt":{"type":"string","description":"The date the image was created.\n"},"decompress":{"type":"boolean","description":"If true, this provider will decompress downloaded\nimage before uploading it to OpenStack. Decompression algorithm is chosen by\nchecking \"Content-Type\" or `Content-Disposition` header to detect the\nfilename extension. Supported algorithms are: gzip, bzip2, xz and zst.\nDefaults to false. Changing this creates a new Image.\n"},"diskFormat":{"type":"string","description":"The disk format. Must be one of \"raw\", \"vhd\",\n\"vhdx\", \"vmdk\", \"vdi\", \"iso\", \"ploop\", \"qcow2\", \"aki\", \"ari\", \"ami\"\n"},"file":{"type":"string","description":"the trailing path after the glance\nendpoint that represent the location of the image\nor the path to retrieve it.\n"},"hidden":{"type":"boolean","description":"If true, image will be hidden from public list.\nDefaults to false.\n"},"imageCachePath":{"type":"string"},"imageId":{"type":"string","description":"Unique ID (valid UUID) of image to create. Changing\nthis creates a new image.\n"},"imageSourcePassword":{"type":"string","description":"The password of basic auth to download\n\u003cspan pulumi-lang-nodejs=\"`imageSourceUrl`\" pulumi-lang-dotnet=\"`ImageSourceUrl`\" pulumi-lang-go=\"`imageSourceUrl`\" pulumi-lang-python=\"`image_source_url`\" pulumi-lang-yaml=\"`imageSourceUrl`\" pulumi-lang-java=\"`imageSourceUrl`\"\u003e`image_source_url`\u003c/span\u003e.\n","secret":true},"imageSourceUrl":{"type":"string","description":"This is the url of the raw image. If\n\u003cspan pulumi-lang-nodejs=\"`webDownload`\" pulumi-lang-dotnet=\"`WebDownload`\" pulumi-lang-go=\"`webDownload`\" pulumi-lang-python=\"`web_download`\" pulumi-lang-yaml=\"`webDownload`\" pulumi-lang-java=\"`webDownload`\"\u003e`web_download`\u003c/span\u003e is not used, then the image will be downloaded in the\n\u003cspan pulumi-lang-nodejs=\"`imageCachePath`\" pulumi-lang-dotnet=\"`ImageCachePath`\" pulumi-lang-go=\"`imageCachePath`\" pulumi-lang-python=\"`image_cache_path`\" pulumi-lang-yaml=\"`imageCachePath`\" pulumi-lang-java=\"`imageCachePath`\"\u003e`image_cache_path`\u003c/span\u003e before being uploaded to Glance. Conflicts with\n\u003cspan pulumi-lang-nodejs=\"`localFilePath`\" pulumi-lang-dotnet=\"`LocalFilePath`\" pulumi-lang-go=\"`localFilePath`\" pulumi-lang-python=\"`local_file_path`\" pulumi-lang-yaml=\"`localFilePath`\" pulumi-lang-java=\"`localFilePath`\"\u003e`local_file_path`\u003c/span\u003e.\n"},"imageSourceUsername":{"type":"string","description":"The username of basic auth to download\n\u003cspan pulumi-lang-nodejs=\"`imageSourceUrl`\" pulumi-lang-dotnet=\"`ImageSourceUrl`\" pulumi-lang-go=\"`imageSourceUrl`\" pulumi-lang-python=\"`image_source_url`\" pulumi-lang-yaml=\"`imageSourceUrl`\" pulumi-lang-java=\"`imageSourceUrl`\"\u003e`image_source_url`\u003c/span\u003e.\n"},"localFilePath":{"type":"string","description":"This is the filepath of the raw image file\nthat will be uploaded to Glance. Conflicts with \u003cspan pulumi-lang-nodejs=\"`imageSourceUrl`\" pulumi-lang-dotnet=\"`ImageSourceUrl`\" pulumi-lang-go=\"`imageSourceUrl`\" pulumi-lang-python=\"`image_source_url`\" pulumi-lang-yaml=\"`imageSourceUrl`\" pulumi-lang-java=\"`imageSourceUrl`\"\u003e`image_source_url`\u003c/span\u003e and\n\u003cspan pulumi-lang-nodejs=\"`webDownload`\" pulumi-lang-dotnet=\"`WebDownload`\" pulumi-lang-go=\"`webDownload`\" pulumi-lang-python=\"`web_download`\" pulumi-lang-yaml=\"`webDownload`\" pulumi-lang-java=\"`webDownload`\"\u003e`web_download`\u003c/span\u003e.\n"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"The metadata associated with the image.\nImage metadata allow for meaningfully define the image properties\nand tags. See https://docs.openstack.org/glance/latest/user/metadefs-concepts.html.\n"},"minDiskGb":{"type":"integer","description":"Amount of disk space (in GB) required to boot\nimage. Defaults to 0.\n"},"minRamMb":{"type":"integer","description":"Amount of ram (in MB) required to boot image.\nDefauts to 0.\n"},"name":{"type":"string","description":"The name of the image.\n"},"owner":{"type":"string","description":"The id of the openstack user who owns the image.\n"},"properties":{"type":"object","additionalProperties":{"type":"string"},"description":"A map of key/value pairs to set freeform\ninformation about an image. See the \"Notes\" section for further information\nabout properties.\n"},"protected":{"type":"boolean","description":"If true, image will not be deletable. Defaults to\nfalse.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Glance client. A\nGlance client is needed to create an Image that can be used with a compute\ninstance. If omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing\nthis creates a new Image.\n"},"schema":{"type":"string","description":"The path to the JSON-schema that represent\nthe image or image\n"},"sizeBytes":{"type":"integer","description":"The size in bytes of the data associated with the image.\n"},"status":{"type":"string","description":"The status of the image. It can be \"queued\", \"active\"\nor \"saving\".\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags of the image. It must be a list of strings. At\nthis time, it is not possible to delete all tags of an image.\n"},"updatedAt":{"type":"string","description":"The date the image was last updated.\n"},"verifyChecksum":{"type":"boolean","description":"If false, the checksum will not be verified\nonce the image is finished uploading. Conflicts with \u003cspan pulumi-lang-nodejs=\"`webDownload`\" pulumi-lang-dotnet=\"`WebDownload`\" pulumi-lang-go=\"`webDownload`\" pulumi-lang-python=\"`web_download`\" pulumi-lang-yaml=\"`webDownload`\" pulumi-lang-java=\"`webDownload`\"\u003e`web_download`\u003c/span\u003e. Defaults\nto true when not using \u003cspan pulumi-lang-nodejs=\"`webDownload`\" pulumi-lang-dotnet=\"`WebDownload`\" pulumi-lang-go=\"`webDownload`\" pulumi-lang-python=\"`web_download`\" pulumi-lang-yaml=\"`webDownload`\" pulumi-lang-java=\"`webDownload`\"\u003e`web_download`\u003c/span\u003e.\n"},"visibility":{"type":"string","description":"The visibility of the image. Must be one of\n\"public\", \"private\", \"community\", or \"shared\". The ability to set the\nvisibility depends upon the configuration of the OpenStack cloud.\n"},"webDownload":{"type":"boolean","description":"If true, the \"web-download\" import method will be\nused to let Openstack download the image directly from the remote source.\nConflicts with \u003cspan pulumi-lang-nodejs=\"`localFilePath`\" pulumi-lang-dotnet=\"`LocalFilePath`\" pulumi-lang-go=\"`localFilePath`\" pulumi-lang-python=\"`local_file_path`\" pulumi-lang-yaml=\"`localFilePath`\" pulumi-lang-java=\"`localFilePath`\"\u003e`local_file_path`\u003c/span\u003e. Defaults to false.\n"}},"required":["checksum","containerFormat","createdAt","diskFormat","file","imageId","metadata","name","owner","properties","region","schema","sizeBytes","status","updatedAt"],"inputProperties":{"containerFormat":{"type":"string","description":"The container format. Must be one of \"bare\",\n\"ovf\", \"aki\", \"ari\", \"ami\", \"ova\", \"docker\", \"compressed\".\n","willReplaceOnChanges":true},"decompress":{"type":"boolean","description":"If true, this provider will decompress downloaded\nimage before uploading it to OpenStack. Decompression algorithm is chosen by\nchecking \"Content-Type\" or `Content-Disposition` header to detect the\nfilename extension. Supported algorithms are: gzip, bzip2, xz and zst.\nDefaults to false. Changing this creates a new Image.\n","willReplaceOnChanges":true},"diskFormat":{"type":"string","description":"The disk format. Must be one of \"raw\", \"vhd\",\n\"vhdx\", \"vmdk\", \"vdi\", \"iso\", \"ploop\", \"qcow2\", \"aki\", \"ari\", \"ami\"\n","willReplaceOnChanges":true},"hidden":{"type":"boolean","description":"If true, image will be hidden from public list.\nDefaults to false.\n"},"imageCachePath":{"type":"string"},"imageId":{"type":"string","description":"Unique ID (valid UUID) of image to create. Changing\nthis creates a new image.\n","willReplaceOnChanges":true},"imageSourcePassword":{"type":"string","description":"The password of basic auth to download\n\u003cspan pulumi-lang-nodejs=\"`imageSourceUrl`\" pulumi-lang-dotnet=\"`ImageSourceUrl`\" pulumi-lang-go=\"`imageSourceUrl`\" pulumi-lang-python=\"`image_source_url`\" pulumi-lang-yaml=\"`imageSourceUrl`\" pulumi-lang-java=\"`imageSourceUrl`\"\u003e`image_source_url`\u003c/span\u003e.\n","secret":true},"imageSourceUrl":{"type":"string","description":"This is the url of the raw image. If\n\u003cspan pulumi-lang-nodejs=\"`webDownload`\" pulumi-lang-dotnet=\"`WebDownload`\" pulumi-lang-go=\"`webDownload`\" pulumi-lang-python=\"`web_download`\" pulumi-lang-yaml=\"`webDownload`\" pulumi-lang-java=\"`webDownload`\"\u003e`web_download`\u003c/span\u003e is not used, then the image will be downloaded in the\n\u003cspan pulumi-lang-nodejs=\"`imageCachePath`\" pulumi-lang-dotnet=\"`ImageCachePath`\" pulumi-lang-go=\"`imageCachePath`\" pulumi-lang-python=\"`image_cache_path`\" pulumi-lang-yaml=\"`imageCachePath`\" pulumi-lang-java=\"`imageCachePath`\"\u003e`image_cache_path`\u003c/span\u003e before being uploaded to Glance. Conflicts with\n\u003cspan pulumi-lang-nodejs=\"`localFilePath`\" pulumi-lang-dotnet=\"`LocalFilePath`\" pulumi-lang-go=\"`localFilePath`\" pulumi-lang-python=\"`local_file_path`\" pulumi-lang-yaml=\"`localFilePath`\" pulumi-lang-java=\"`localFilePath`\"\u003e`local_file_path`\u003c/span\u003e.\n","willReplaceOnChanges":true},"imageSourceUsername":{"type":"string","description":"The username of basic auth to download\n\u003cspan pulumi-lang-nodejs=\"`imageSourceUrl`\" pulumi-lang-dotnet=\"`ImageSourceUrl`\" pulumi-lang-go=\"`imageSourceUrl`\" pulumi-lang-python=\"`image_source_url`\" pulumi-lang-yaml=\"`imageSourceUrl`\" pulumi-lang-java=\"`imageSourceUrl`\"\u003e`image_source_url`\u003c/span\u003e.\n"},"localFilePath":{"type":"string","description":"This is the filepath of the raw image file\nthat will be uploaded to Glance. Conflicts with \u003cspan pulumi-lang-nodejs=\"`imageSourceUrl`\" pulumi-lang-dotnet=\"`ImageSourceUrl`\" pulumi-lang-go=\"`imageSourceUrl`\" pulumi-lang-python=\"`image_source_url`\" pulumi-lang-yaml=\"`imageSourceUrl`\" pulumi-lang-java=\"`imageSourceUrl`\"\u003e`image_source_url`\u003c/span\u003e and\n\u003cspan pulumi-lang-nodejs=\"`webDownload`\" pulumi-lang-dotnet=\"`WebDownload`\" pulumi-lang-go=\"`webDownload`\" pulumi-lang-python=\"`web_download`\" pulumi-lang-yaml=\"`webDownload`\" pulumi-lang-java=\"`webDownload`\"\u003e`web_download`\u003c/span\u003e.\n","willReplaceOnChanges":true},"minDiskGb":{"type":"integer","description":"Amount of disk space (in GB) required to boot\nimage. Defaults to 0.\n"},"minRamMb":{"type":"integer","description":"Amount of ram (in MB) required to boot image.\nDefauts to 0.\n"},"name":{"type":"string","description":"The name of the image.\n"},"properties":{"type":"object","additionalProperties":{"type":"string"},"description":"A map of key/value pairs to set freeform\ninformation about an image. See the \"Notes\" section for further information\nabout properties.\n"},"protected":{"type":"boolean","description":"If true, image will not be deletable. Defaults to\nfalse.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Glance client. A\nGlance client is needed to create an Image that can be used with a compute\ninstance. If omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing\nthis creates a new Image.\n","willReplaceOnChanges":true},"tags":{"type":"array","items":{"type":"string"},"description":"The tags of the image. It must be a list of strings. At\nthis time, it is not possible to delete all tags of an image.\n"},"verifyChecksum":{"type":"boolean","description":"If false, the checksum will not be verified\nonce the image is finished uploading. Conflicts with \u003cspan pulumi-lang-nodejs=\"`webDownload`\" pulumi-lang-dotnet=\"`WebDownload`\" pulumi-lang-go=\"`webDownload`\" pulumi-lang-python=\"`web_download`\" pulumi-lang-yaml=\"`webDownload`\" pulumi-lang-java=\"`webDownload`\"\u003e`web_download`\u003c/span\u003e. Defaults\nto true when not using \u003cspan pulumi-lang-nodejs=\"`webDownload`\" pulumi-lang-dotnet=\"`WebDownload`\" pulumi-lang-go=\"`webDownload`\" pulumi-lang-python=\"`web_download`\" pulumi-lang-yaml=\"`webDownload`\" pulumi-lang-java=\"`webDownload`\"\u003e`web_download`\u003c/span\u003e.\n"},"visibility":{"type":"string","description":"The visibility of the image. Must be one of\n\"public\", \"private\", \"community\", or \"shared\". The ability to set the\nvisibility depends upon the configuration of the OpenStack cloud.\n"},"webDownload":{"type":"boolean","description":"If true, the \"web-download\" import method will be\nused to let Openstack download the image directly from the remote source.\nConflicts with \u003cspan pulumi-lang-nodejs=\"`localFilePath`\" pulumi-lang-dotnet=\"`LocalFilePath`\" pulumi-lang-go=\"`localFilePath`\" pulumi-lang-python=\"`local_file_path`\" pulumi-lang-yaml=\"`localFilePath`\" pulumi-lang-java=\"`localFilePath`\"\u003e`local_file_path`\u003c/span\u003e. Defaults to false.\n"}},"requiredInputs":["containerFormat","diskFormat"],"stateInputs":{"description":"Input properties used for looking up and filtering Image resources.\n","properties":{"checksum":{"type":"string","description":"The checksum of the data associated with the image.\n"},"containerFormat":{"type":"string","description":"The container format. Must be one of \"bare\",\n\"ovf\", \"aki\", \"ari\", \"ami\", \"ova\", \"docker\", \"compressed\".\n","willReplaceOnChanges":true},"createdAt":{"type":"string","description":"The date the image was created.\n"},"decompress":{"type":"boolean","description":"If true, this provider will decompress downloaded\nimage before uploading it to OpenStack. Decompression algorithm is chosen by\nchecking \"Content-Type\" or `Content-Disposition` header to detect the\nfilename extension. Supported algorithms are: gzip, bzip2, xz and zst.\nDefaults to false. Changing this creates a new Image.\n","willReplaceOnChanges":true},"diskFormat":{"type":"string","description":"The disk format. Must be one of \"raw\", \"vhd\",\n\"vhdx\", \"vmdk\", \"vdi\", \"iso\", \"ploop\", \"qcow2\", \"aki\", \"ari\", \"ami\"\n","willReplaceOnChanges":true},"file":{"type":"string","description":"the trailing path after the glance\nendpoint that represent the location of the image\nor the path to retrieve it.\n"},"hidden":{"type":"boolean","description":"If true, image will be hidden from public list.\nDefaults to false.\n"},"imageCachePath":{"type":"string"},"imageId":{"type":"string","description":"Unique ID (valid UUID) of image to create. Changing\nthis creates a new image.\n","willReplaceOnChanges":true},"imageSourcePassword":{"type":"string","description":"The password of basic auth to download\n\u003cspan pulumi-lang-nodejs=\"`imageSourceUrl`\" pulumi-lang-dotnet=\"`ImageSourceUrl`\" pulumi-lang-go=\"`imageSourceUrl`\" pulumi-lang-python=\"`image_source_url`\" pulumi-lang-yaml=\"`imageSourceUrl`\" pulumi-lang-java=\"`imageSourceUrl`\"\u003e`image_source_url`\u003c/span\u003e.\n","secret":true},"imageSourceUrl":{"type":"string","description":"This is the url of the raw image. If\n\u003cspan pulumi-lang-nodejs=\"`webDownload`\" pulumi-lang-dotnet=\"`WebDownload`\" pulumi-lang-go=\"`webDownload`\" pulumi-lang-python=\"`web_download`\" pulumi-lang-yaml=\"`webDownload`\" pulumi-lang-java=\"`webDownload`\"\u003e`web_download`\u003c/span\u003e is not used, then the image will be downloaded in the\n\u003cspan pulumi-lang-nodejs=\"`imageCachePath`\" pulumi-lang-dotnet=\"`ImageCachePath`\" pulumi-lang-go=\"`imageCachePath`\" pulumi-lang-python=\"`image_cache_path`\" pulumi-lang-yaml=\"`imageCachePath`\" pulumi-lang-java=\"`imageCachePath`\"\u003e`image_cache_path`\u003c/span\u003e before being uploaded to Glance. Conflicts with\n\u003cspan pulumi-lang-nodejs=\"`localFilePath`\" pulumi-lang-dotnet=\"`LocalFilePath`\" pulumi-lang-go=\"`localFilePath`\" pulumi-lang-python=\"`local_file_path`\" pulumi-lang-yaml=\"`localFilePath`\" pulumi-lang-java=\"`localFilePath`\"\u003e`local_file_path`\u003c/span\u003e.\n","willReplaceOnChanges":true},"imageSourceUsername":{"type":"string","description":"The username of basic auth to download\n\u003cspan pulumi-lang-nodejs=\"`imageSourceUrl`\" pulumi-lang-dotnet=\"`ImageSourceUrl`\" pulumi-lang-go=\"`imageSourceUrl`\" pulumi-lang-python=\"`image_source_url`\" pulumi-lang-yaml=\"`imageSourceUrl`\" pulumi-lang-java=\"`imageSourceUrl`\"\u003e`image_source_url`\u003c/span\u003e.\n"},"localFilePath":{"type":"string","description":"This is the filepath of the raw image file\nthat will be uploaded to Glance. Conflicts with \u003cspan pulumi-lang-nodejs=\"`imageSourceUrl`\" pulumi-lang-dotnet=\"`ImageSourceUrl`\" pulumi-lang-go=\"`imageSourceUrl`\" pulumi-lang-python=\"`image_source_url`\" pulumi-lang-yaml=\"`imageSourceUrl`\" pulumi-lang-java=\"`imageSourceUrl`\"\u003e`image_source_url`\u003c/span\u003e and\n\u003cspan pulumi-lang-nodejs=\"`webDownload`\" pulumi-lang-dotnet=\"`WebDownload`\" pulumi-lang-go=\"`webDownload`\" pulumi-lang-python=\"`web_download`\" pulumi-lang-yaml=\"`webDownload`\" pulumi-lang-java=\"`webDownload`\"\u003e`web_download`\u003c/span\u003e.\n","willReplaceOnChanges":true},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"The metadata associated with the image.\nImage metadata allow for meaningfully define the image properties\nand tags. See https://docs.openstack.org/glance/latest/user/metadefs-concepts.html.\n"},"minDiskGb":{"type":"integer","description":"Amount of disk space (in GB) required to boot\nimage. Defaults to 0.\n"},"minRamMb":{"type":"integer","description":"Amount of ram (in MB) required to boot image.\nDefauts to 0.\n"},"name":{"type":"string","description":"The name of the image.\n"},"owner":{"type":"string","description":"The id of the openstack user who owns the image.\n"},"properties":{"type":"object","additionalProperties":{"type":"string"},"description":"A map of key/value pairs to set freeform\ninformation about an image. See the \"Notes\" section for further information\nabout properties.\n"},"protected":{"type":"boolean","description":"If true, image will not be deletable. Defaults to\nfalse.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Glance client. A\nGlance client is needed to create an Image that can be used with a compute\ninstance. If omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing\nthis creates a new Image.\n","willReplaceOnChanges":true},"schema":{"type":"string","description":"The path to the JSON-schema that represent\nthe image or image\n"},"sizeBytes":{"type":"integer","description":"The size in bytes of the data associated with the image.\n"},"status":{"type":"string","description":"The status of the image. It can be \"queued\", \"active\"\nor \"saving\".\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags of the image. It must be a list of strings. At\nthis time, it is not possible to delete all tags of an image.\n"},"updatedAt":{"type":"string","description":"The date the image was last updated.\n"},"verifyChecksum":{"type":"boolean","description":"If false, the checksum will not be verified\nonce the image is finished uploading. Conflicts with \u003cspan pulumi-lang-nodejs=\"`webDownload`\" pulumi-lang-dotnet=\"`WebDownload`\" pulumi-lang-go=\"`webDownload`\" pulumi-lang-python=\"`web_download`\" pulumi-lang-yaml=\"`webDownload`\" pulumi-lang-java=\"`webDownload`\"\u003e`web_download`\u003c/span\u003e. Defaults\nto true when not using \u003cspan pulumi-lang-nodejs=\"`webDownload`\" pulumi-lang-dotnet=\"`WebDownload`\" pulumi-lang-go=\"`webDownload`\" pulumi-lang-python=\"`web_download`\" pulumi-lang-yaml=\"`webDownload`\" pulumi-lang-java=\"`webDownload`\"\u003e`web_download`\u003c/span\u003e.\n"},"visibility":{"type":"string","description":"The visibility of the image. Must be one of\n\"public\", \"private\", \"community\", or \"shared\". The ability to set the\nvisibility depends upon the configuration of the OpenStack cloud.\n"},"webDownload":{"type":"boolean","description":"If true, the \"web-download\" import method will be\nused to let Openstack download the image directly from the remote source.\nConflicts with \u003cspan pulumi-lang-nodejs=\"`localFilePath`\" pulumi-lang-dotnet=\"`LocalFilePath`\" pulumi-lang-go=\"`localFilePath`\" pulumi-lang-python=\"`local_file_path`\" pulumi-lang-yaml=\"`localFilePath`\" pulumi-lang-java=\"`localFilePath`\"\u003e`local_file_path`\u003c/span\u003e. Defaults to false.\n"}},"type":"object"}},"openstack:images/imageAccess:ImageAccess":{"description":"Manages members for the shared OpenStack Glance V2 Image within the source\nproject, which owns the Image.\n\n## Example Usage\n\n### Unprivileged user\n\nCreate a shared image and propose a membership to the\n\u003cspan pulumi-lang-nodejs=\"`bed6b6cbb86a4e2d8dc2735c2f1000e4`\" pulumi-lang-dotnet=\"`Bed6b6cbb86a4e2d8dc2735c2f1000e4`\" pulumi-lang-go=\"`bed6b6cbb86a4e2d8dc2735c2f1000e4`\" pulumi-lang-python=\"`bed6b6cbb86a4e2d8dc2735c2f1000e4`\" pulumi-lang-yaml=\"`bed6b6cbb86a4e2d8dc2735c2f1000e4`\" pulumi-lang-java=\"`bed6b6cbb86a4e2d8dc2735c2f1000e4`\"\u003e`bed6b6cbb86a4e2d8dc2735c2f1000e4`\u003c/span\u003e project ID.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst rancheros = new openstack.images.Image(\"rancheros\", {\n    name: \"RancherOS\",\n    imageSourceUrl: \"https://releases.rancher.com/os/latest/rancheros-openstack.img\",\n    containerFormat: \"bare\",\n    diskFormat: \"qcow2\",\n    visibility: \"shared\",\n    properties: {\n        key: \"value\",\n    },\n});\nconst rancherosMember = new openstack.images.ImageAccess(\"rancheros_member\", {\n    imageId: rancheros.id,\n    memberId: \"bed6b6cbb86a4e2d8dc2735c2f1000e4\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nrancheros = openstack.images.Image(\"rancheros\",\n    name=\"RancherOS\",\n    image_source_url=\"https://releases.rancher.com/os/latest/rancheros-openstack.img\",\n    container_format=\"bare\",\n    disk_format=\"qcow2\",\n    visibility=\"shared\",\n    properties={\n        \"key\": \"value\",\n    })\nrancheros_member = openstack.images.ImageAccess(\"rancheros_member\",\n    image_id=rancheros.id,\n    member_id=\"bed6b6cbb86a4e2d8dc2735c2f1000e4\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var rancheros = new OpenStack.Images.Image(\"rancheros\", new()\n    {\n        Name = \"RancherOS\",\n        ImageSourceUrl = \"https://releases.rancher.com/os/latest/rancheros-openstack.img\",\n        ContainerFormat = \"bare\",\n        DiskFormat = \"qcow2\",\n        Visibility = \"shared\",\n        Properties = \n        {\n            { \"key\", \"value\" },\n        },\n    });\n\n    var rancherosMember = new OpenStack.Images.ImageAccess(\"rancheros_member\", new()\n    {\n        ImageId = rancheros.Id,\n        MemberId = \"bed6b6cbb86a4e2d8dc2735c2f1000e4\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/images\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\trancheros, err := images.NewImage(ctx, \"rancheros\", \u0026images.ImageArgs{\n\t\t\tName:            pulumi.String(\"RancherOS\"),\n\t\t\tImageSourceUrl:  pulumi.String(\"https://releases.rancher.com/os/latest/rancheros-openstack.img\"),\n\t\t\tContainerFormat: pulumi.String(\"bare\"),\n\t\t\tDiskFormat:      pulumi.String(\"qcow2\"),\n\t\t\tVisibility:      pulumi.String(\"shared\"),\n\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\"key\": pulumi.String(\"value\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = images.NewImageAccess(ctx, \"rancheros_member\", \u0026images.ImageAccessArgs{\n\t\t\tImageId:  rancheros.ID(),\n\t\t\tMemberId: pulumi.String(\"bed6b6cbb86a4e2d8dc2735c2f1000e4\"),\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.openstack.images.Image;\nimport com.pulumi.openstack.images.ImageArgs;\nimport com.pulumi.openstack.images.ImageAccess;\nimport com.pulumi.openstack.images.ImageAccessArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 rancheros = new Image(\"rancheros\", ImageArgs.builder()\n            .name(\"RancherOS\")\n            .imageSourceUrl(\"https://releases.rancher.com/os/latest/rancheros-openstack.img\")\n            .containerFormat(\"bare\")\n            .diskFormat(\"qcow2\")\n            .visibility(\"shared\")\n            .properties(Map.of(\"key\", \"value\"))\n            .build());\n\n        var rancherosMember = new ImageAccess(\"rancherosMember\", ImageAccessArgs.builder()\n            .imageId(rancheros.id())\n            .memberId(\"bed6b6cbb86a4e2d8dc2735c2f1000e4\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  rancheros:\n    type: openstack:images:Image\n    properties:\n      name: RancherOS\n      imageSourceUrl: https://releases.rancher.com/os/latest/rancheros-openstack.img\n      containerFormat: bare\n      diskFormat: qcow2\n      visibility: shared\n      properties:\n        key: value\n  rancherosMember:\n    type: openstack:images:ImageAccess\n    name: rancheros_member\n    properties:\n      imageId: ${rancheros.id}\n      memberId: bed6b6cbb86a4e2d8dc2735c2f1000e4\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Privileged user\n\nCreate a shared image and set a membership to the\n\u003cspan pulumi-lang-nodejs=\"`bed6b6cbb86a4e2d8dc2735c2f1000e4`\" pulumi-lang-dotnet=\"`Bed6b6cbb86a4e2d8dc2735c2f1000e4`\" pulumi-lang-go=\"`bed6b6cbb86a4e2d8dc2735c2f1000e4`\" pulumi-lang-python=\"`bed6b6cbb86a4e2d8dc2735c2f1000e4`\" pulumi-lang-yaml=\"`bed6b6cbb86a4e2d8dc2735c2f1000e4`\" pulumi-lang-java=\"`bed6b6cbb86a4e2d8dc2735c2f1000e4`\"\u003e`bed6b6cbb86a4e2d8dc2735c2f1000e4`\u003c/span\u003e project ID.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst rancheros = new openstack.images.Image(\"rancheros\", {\n    name: \"RancherOS\",\n    imageSourceUrl: \"https://releases.rancher.com/os/latest/rancheros-openstack.img\",\n    containerFormat: \"bare\",\n    diskFormat: \"qcow2\",\n    visibility: \"shared\",\n    properties: {\n        key: \"value\",\n    },\n});\nconst rancherosMember = new openstack.images.ImageAccess(\"rancheros_member\", {\n    imageId: rancheros.id,\n    memberId: \"bed6b6cbb86a4e2d8dc2735c2f1000e4\",\n    status: \"accepted\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nrancheros = openstack.images.Image(\"rancheros\",\n    name=\"RancherOS\",\n    image_source_url=\"https://releases.rancher.com/os/latest/rancheros-openstack.img\",\n    container_format=\"bare\",\n    disk_format=\"qcow2\",\n    visibility=\"shared\",\n    properties={\n        \"key\": \"value\",\n    })\nrancheros_member = openstack.images.ImageAccess(\"rancheros_member\",\n    image_id=rancheros.id,\n    member_id=\"bed6b6cbb86a4e2d8dc2735c2f1000e4\",\n    status=\"accepted\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var rancheros = new OpenStack.Images.Image(\"rancheros\", new()\n    {\n        Name = \"RancherOS\",\n        ImageSourceUrl = \"https://releases.rancher.com/os/latest/rancheros-openstack.img\",\n        ContainerFormat = \"bare\",\n        DiskFormat = \"qcow2\",\n        Visibility = \"shared\",\n        Properties = \n        {\n            { \"key\", \"value\" },\n        },\n    });\n\n    var rancherosMember = new OpenStack.Images.ImageAccess(\"rancheros_member\", new()\n    {\n        ImageId = rancheros.Id,\n        MemberId = \"bed6b6cbb86a4e2d8dc2735c2f1000e4\",\n        Status = \"accepted\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/images\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\trancheros, err := images.NewImage(ctx, \"rancheros\", \u0026images.ImageArgs{\n\t\t\tName:            pulumi.String(\"RancherOS\"),\n\t\t\tImageSourceUrl:  pulumi.String(\"https://releases.rancher.com/os/latest/rancheros-openstack.img\"),\n\t\t\tContainerFormat: pulumi.String(\"bare\"),\n\t\t\tDiskFormat:      pulumi.String(\"qcow2\"),\n\t\t\tVisibility:      pulumi.String(\"shared\"),\n\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\"key\": pulumi.String(\"value\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = images.NewImageAccess(ctx, \"rancheros_member\", \u0026images.ImageAccessArgs{\n\t\t\tImageId:  rancheros.ID(),\n\t\t\tMemberId: pulumi.String(\"bed6b6cbb86a4e2d8dc2735c2f1000e4\"),\n\t\t\tStatus:   pulumi.String(\"accepted\"),\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.openstack.images.Image;\nimport com.pulumi.openstack.images.ImageArgs;\nimport com.pulumi.openstack.images.ImageAccess;\nimport com.pulumi.openstack.images.ImageAccessArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 rancheros = new Image(\"rancheros\", ImageArgs.builder()\n            .name(\"RancherOS\")\n            .imageSourceUrl(\"https://releases.rancher.com/os/latest/rancheros-openstack.img\")\n            .containerFormat(\"bare\")\n            .diskFormat(\"qcow2\")\n            .visibility(\"shared\")\n            .properties(Map.of(\"key\", \"value\"))\n            .build());\n\n        var rancherosMember = new ImageAccess(\"rancherosMember\", ImageAccessArgs.builder()\n            .imageId(rancheros.id())\n            .memberId(\"bed6b6cbb86a4e2d8dc2735c2f1000e4\")\n            .status(\"accepted\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  rancheros:\n    type: openstack:images:Image\n    properties:\n      name: RancherOS\n      imageSourceUrl: https://releases.rancher.com/os/latest/rancheros-openstack.img\n      containerFormat: bare\n      diskFormat: qcow2\n      visibility: shared\n      properties:\n        key: value\n  rancherosMember:\n    type: openstack:images:ImageAccess\n    name: rancheros_member\n    properties:\n      imageId: ${rancheros.id}\n      memberId: bed6b6cbb86a4e2d8dc2735c2f1000e4\n      status: accepted\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nImage access can be imported using the `image_id` and the `member_id`,\n\nseparated by a slash, e.g.\n\n```sh\n$ pulumi import openstack:images/imageAccess:ImageAccess openstack_images_image_access_v2 89c60255-9bd6-460c-822a-e2b959ede9d2/bed6b6cbb86a4e2d8dc2735c2f1000e4\n```\n\n","properties":{"createdAt":{"type":"string","description":"The date the image access was created.\n"},"imageId":{"type":"string","description":"The image ID.\n"},"memberId":{"type":"string","description":"The member ID, e.g. the target project ID.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Glance client.\nA Glance client is needed to manage Image members. If omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e\nargument of the provider is used. Changing this creates a new resource.\n"},"schema":{"type":"string","description":"The member schema.\n"},"status":{"type":"string","description":"The member proposal status. Optional if admin wants to\nforce the member proposal acceptance. Can either be \u003cspan pulumi-lang-nodejs=\"`accepted`\" pulumi-lang-dotnet=\"`Accepted`\" pulumi-lang-go=\"`accepted`\" pulumi-lang-python=\"`accepted`\" pulumi-lang-yaml=\"`accepted`\" pulumi-lang-java=\"`accepted`\"\u003e`accepted`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`rejected`\" pulumi-lang-dotnet=\"`Rejected`\" pulumi-lang-go=\"`rejected`\" pulumi-lang-python=\"`rejected`\" pulumi-lang-yaml=\"`rejected`\" pulumi-lang-java=\"`rejected`\"\u003e`rejected`\u003c/span\u003e or\n\u003cspan pulumi-lang-nodejs=\"`pending`\" pulumi-lang-dotnet=\"`Pending`\" pulumi-lang-go=\"`pending`\" pulumi-lang-python=\"`pending`\" pulumi-lang-yaml=\"`pending`\" pulumi-lang-java=\"`pending`\"\u003e`pending`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`pending`\" pulumi-lang-dotnet=\"`Pending`\" pulumi-lang-go=\"`pending`\" pulumi-lang-python=\"`pending`\" pulumi-lang-yaml=\"`pending`\" pulumi-lang-java=\"`pending`\"\u003e`pending`\u003c/span\u003e. Foridden for non-admin users.\n"},"updatedAt":{"type":"string","description":"The date the image access was last updated.\n"}},"required":["createdAt","imageId","memberId","region","schema","status","updatedAt"],"inputProperties":{"imageId":{"type":"string","description":"The image ID.\n","willReplaceOnChanges":true},"memberId":{"type":"string","description":"The member ID, e.g. the target project ID.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Glance client.\nA Glance client is needed to manage Image members. If omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e\nargument of the provider is used. Changing this creates a new resource.\n","willReplaceOnChanges":true},"status":{"type":"string","description":"The member proposal status. Optional if admin wants to\nforce the member proposal acceptance. Can either be \u003cspan pulumi-lang-nodejs=\"`accepted`\" pulumi-lang-dotnet=\"`Accepted`\" pulumi-lang-go=\"`accepted`\" pulumi-lang-python=\"`accepted`\" pulumi-lang-yaml=\"`accepted`\" pulumi-lang-java=\"`accepted`\"\u003e`accepted`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`rejected`\" pulumi-lang-dotnet=\"`Rejected`\" pulumi-lang-go=\"`rejected`\" pulumi-lang-python=\"`rejected`\" pulumi-lang-yaml=\"`rejected`\" pulumi-lang-java=\"`rejected`\"\u003e`rejected`\u003c/span\u003e or\n\u003cspan pulumi-lang-nodejs=\"`pending`\" pulumi-lang-dotnet=\"`Pending`\" pulumi-lang-go=\"`pending`\" pulumi-lang-python=\"`pending`\" pulumi-lang-yaml=\"`pending`\" pulumi-lang-java=\"`pending`\"\u003e`pending`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`pending`\" pulumi-lang-dotnet=\"`Pending`\" pulumi-lang-go=\"`pending`\" pulumi-lang-python=\"`pending`\" pulumi-lang-yaml=\"`pending`\" pulumi-lang-java=\"`pending`\"\u003e`pending`\u003c/span\u003e. Foridden for non-admin users.\n"}},"requiredInputs":["imageId","memberId"],"stateInputs":{"description":"Input properties used for looking up and filtering ImageAccess resources.\n","properties":{"createdAt":{"type":"string","description":"The date the image access was created.\n"},"imageId":{"type":"string","description":"The image ID.\n","willReplaceOnChanges":true},"memberId":{"type":"string","description":"The member ID, e.g. the target project ID.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Glance client.\nA Glance client is needed to manage Image members. If omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e\nargument of the provider is used. Changing this creates a new resource.\n","willReplaceOnChanges":true},"schema":{"type":"string","description":"The member schema.\n"},"status":{"type":"string","description":"The member proposal status. Optional if admin wants to\nforce the member proposal acceptance. Can either be \u003cspan pulumi-lang-nodejs=\"`accepted`\" pulumi-lang-dotnet=\"`Accepted`\" pulumi-lang-go=\"`accepted`\" pulumi-lang-python=\"`accepted`\" pulumi-lang-yaml=\"`accepted`\" pulumi-lang-java=\"`accepted`\"\u003e`accepted`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`rejected`\" pulumi-lang-dotnet=\"`Rejected`\" pulumi-lang-go=\"`rejected`\" pulumi-lang-python=\"`rejected`\" pulumi-lang-yaml=\"`rejected`\" pulumi-lang-java=\"`rejected`\"\u003e`rejected`\u003c/span\u003e or\n\u003cspan pulumi-lang-nodejs=\"`pending`\" pulumi-lang-dotnet=\"`Pending`\" pulumi-lang-go=\"`pending`\" pulumi-lang-python=\"`pending`\" pulumi-lang-yaml=\"`pending`\" pulumi-lang-java=\"`pending`\"\u003e`pending`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`pending`\" pulumi-lang-dotnet=\"`Pending`\" pulumi-lang-go=\"`pending`\" pulumi-lang-python=\"`pending`\" pulumi-lang-yaml=\"`pending`\" pulumi-lang-java=\"`pending`\"\u003e`pending`\u003c/span\u003e. Foridden for non-admin users.\n"},"updatedAt":{"type":"string","description":"The date the image access was last updated.\n"}},"type":"object"}},"openstack:images/imageAccessAccept:ImageAccessAccept":{"description":"Manages memberships status for the shared OpenStack Glance V2 Image within the\ndestination project, which has a member proposal.\n\n## Example Usage\n\nAccept a shared image membershipship proposal within the current project.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst rancheros = openstack.images.getImage({\n    name: \"RancherOS\",\n    visibility: \"shared\",\n    memberStatus: \"all\",\n});\nconst rancherosMember = new openstack.images.ImageAccessAccept(\"rancheros_member\", {\n    imageId: rancheros.then(rancheros =\u003e rancheros.id),\n    status: \"accepted\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nrancheros = openstack.images.get_image(name=\"RancherOS\",\n    visibility=\"shared\",\n    member_status=\"all\")\nrancheros_member = openstack.images.ImageAccessAccept(\"rancheros_member\",\n    image_id=rancheros.id,\n    status=\"accepted\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var rancheros = OpenStack.Images.GetImage.Invoke(new()\n    {\n        Name = \"RancherOS\",\n        Visibility = \"shared\",\n        MemberStatus = \"all\",\n    });\n\n    var rancherosMember = new OpenStack.Images.ImageAccessAccept(\"rancheros_member\", new()\n    {\n        ImageId = rancheros.Apply(getImageResult =\u003e getImageResult.Id),\n        Status = \"accepted\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/images\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\trancheros, err := images.LookupImage(ctx, \u0026images.LookupImageArgs{\n\t\t\tName:         pulumi.StringRef(\"RancherOS\"),\n\t\t\tVisibility:   pulumi.StringRef(\"shared\"),\n\t\t\tMemberStatus: pulumi.StringRef(\"all\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = images.NewImageAccessAccept(ctx, \"rancheros_member\", \u0026images.ImageAccessAcceptArgs{\n\t\t\tImageId: pulumi.String(rancheros.Id),\n\t\t\tStatus:  pulumi.String(\"accepted\"),\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.openstack.images.ImagesFunctions;\nimport com.pulumi.openstack.images.inputs.GetImageArgs;\nimport com.pulumi.openstack.images.ImageAccessAccept;\nimport com.pulumi.openstack.images.ImageAccessAcceptArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 rancheros = ImagesFunctions.getImage(GetImageArgs.builder()\n            .name(\"RancherOS\")\n            .visibility(\"shared\")\n            .memberStatus(\"all\")\n            .build());\n\n        var rancherosMember = new ImageAccessAccept(\"rancherosMember\", ImageAccessAcceptArgs.builder()\n            .imageId(rancheros.id())\n            .status(\"accepted\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  rancherosMember:\n    type: openstack:images:ImageAccessAccept\n    name: rancheros_member\n    properties:\n      imageId: ${rancheros.id}\n      status: accepted\nvariables:\n  rancheros:\n    fn::invoke:\n      function: openstack:images:getImage\n      arguments:\n        name: RancherOS\n        visibility: shared\n        memberStatus: all\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nImage access acceptance status can be imported using the `image_id`, e.g.\n\n```sh\n$ pulumi import openstack:images/imageAccessAccept:ImageAccessAccept openstack_images_image_access_accept_v2 89c60255-9bd6-460c-822a-e2b959ede9d2\n```\n\n","properties":{"createdAt":{"type":"string","description":"The date the image membership was created.\n"},"imageId":{"type":"string","description":"The proposed image ID.\n"},"memberId":{"type":"string","description":"The member ID, e.g. the target project ID. Optional\nfor admin accounts. Defaults to the current scope project ID.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Glance client.\nA Glance client is needed to manage Image memberships. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nmembership.\n"},"schema":{"type":"string","description":"The membership schema.\n"},"status":{"type":"string","description":"The membership proposal status. Can either be\n\u003cspan pulumi-lang-nodejs=\"`accepted`\" pulumi-lang-dotnet=\"`Accepted`\" pulumi-lang-go=\"`accepted`\" pulumi-lang-python=\"`accepted`\" pulumi-lang-yaml=\"`accepted`\" pulumi-lang-java=\"`accepted`\"\u003e`accepted`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`rejected`\" pulumi-lang-dotnet=\"`Rejected`\" pulumi-lang-go=\"`rejected`\" pulumi-lang-python=\"`rejected`\" pulumi-lang-yaml=\"`rejected`\" pulumi-lang-java=\"`rejected`\"\u003e`rejected`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`pending`\" pulumi-lang-dotnet=\"`Pending`\" pulumi-lang-go=\"`pending`\" pulumi-lang-python=\"`pending`\" pulumi-lang-yaml=\"`pending`\" pulumi-lang-java=\"`pending`\"\u003e`pending`\u003c/span\u003e.\n"},"updatedAt":{"type":"string","description":"The date the image membership was last updated.\n"}},"required":["createdAt","imageId","memberId","region","schema","status","updatedAt"],"inputProperties":{"imageId":{"type":"string","description":"The proposed image ID.\n","willReplaceOnChanges":true},"memberId":{"type":"string","description":"The member ID, e.g. the target project ID. Optional\nfor admin accounts. Defaults to the current scope project ID.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Glance client.\nA Glance client is needed to manage Image memberships. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nmembership.\n","willReplaceOnChanges":true},"status":{"type":"string","description":"The membership proposal status. Can either be\n\u003cspan pulumi-lang-nodejs=\"`accepted`\" pulumi-lang-dotnet=\"`Accepted`\" pulumi-lang-go=\"`accepted`\" pulumi-lang-python=\"`accepted`\" pulumi-lang-yaml=\"`accepted`\" pulumi-lang-java=\"`accepted`\"\u003e`accepted`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`rejected`\" pulumi-lang-dotnet=\"`Rejected`\" pulumi-lang-go=\"`rejected`\" pulumi-lang-python=\"`rejected`\" pulumi-lang-yaml=\"`rejected`\" pulumi-lang-java=\"`rejected`\"\u003e`rejected`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`pending`\" pulumi-lang-dotnet=\"`Pending`\" pulumi-lang-go=\"`pending`\" pulumi-lang-python=\"`pending`\" pulumi-lang-yaml=\"`pending`\" pulumi-lang-java=\"`pending`\"\u003e`pending`\u003c/span\u003e.\n"}},"requiredInputs":["imageId","status"],"stateInputs":{"description":"Input properties used for looking up and filtering ImageAccessAccept resources.\n","properties":{"createdAt":{"type":"string","description":"The date the image membership was created.\n"},"imageId":{"type":"string","description":"The proposed image ID.\n","willReplaceOnChanges":true},"memberId":{"type":"string","description":"The member ID, e.g. the target project ID. Optional\nfor admin accounts. Defaults to the current scope project ID.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Glance client.\nA Glance client is needed to manage Image memberships. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nmembership.\n","willReplaceOnChanges":true},"schema":{"type":"string","description":"The membership schema.\n"},"status":{"type":"string","description":"The membership proposal status. Can either be\n\u003cspan pulumi-lang-nodejs=\"`accepted`\" pulumi-lang-dotnet=\"`Accepted`\" pulumi-lang-go=\"`accepted`\" pulumi-lang-python=\"`accepted`\" pulumi-lang-yaml=\"`accepted`\" pulumi-lang-java=\"`accepted`\"\u003e`accepted`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`rejected`\" pulumi-lang-dotnet=\"`Rejected`\" pulumi-lang-go=\"`rejected`\" pulumi-lang-python=\"`rejected`\" pulumi-lang-yaml=\"`rejected`\" pulumi-lang-java=\"`rejected`\"\u003e`rejected`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`pending`\" pulumi-lang-dotnet=\"`Pending`\" pulumi-lang-go=\"`pending`\" pulumi-lang-python=\"`pending`\" pulumi-lang-yaml=\"`pending`\" pulumi-lang-java=\"`pending`\"\u003e`pending`\u003c/span\u003e.\n"},"updatedAt":{"type":"string","description":"The date the image membership was last updated.\n"}},"type":"object"}},"openstack:index/bgpvpnNetworkAssociateV2:BgpvpnNetworkAssociateV2":{"description":"Manages a V2 BGP VPN network association resource within OpenStack.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst association1 = new openstack.bgpvpn.NetworkAssociateV2(\"association_1\", {\n    bgpvpnId: \"e7189337-5684-46ee-bcb1-44f1a57066c9\",\n    networkId: \"de83d56c-4d2f-44f7-ac24-af393252204f\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nassociation1 = openstack.bgpvpn.NetworkAssociateV2(\"association_1\",\n    bgpvpn_id=\"e7189337-5684-46ee-bcb1-44f1a57066c9\",\n    network_id=\"de83d56c-4d2f-44f7-ac24-af393252204f\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var association1 = new OpenStack.BGPVPN.NetworkAssociateV2(\"association_1\", new()\n    {\n        BgpvpnId = \"e7189337-5684-46ee-bcb1-44f1a57066c9\",\n        NetworkId = \"de83d56c-4d2f-44f7-ac24-af393252204f\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/bgpvpn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bgpvpn.NewNetworkAssociateV2(ctx, \"association_1\", \u0026bgpvpn.NetworkAssociateV2Args{\n\t\t\tBgpvpnId:  pulumi.String(\"e7189337-5684-46ee-bcb1-44f1a57066c9\"),\n\t\t\tNetworkId: pulumi.String(\"de83d56c-4d2f-44f7-ac24-af393252204f\"),\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.openstack.bgpvpn.NetworkAssociateV2;\nimport com.pulumi.openstack.bgpvpn.NetworkAssociateV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 association1 = new NetworkAssociateV2(\"association1\", NetworkAssociateV2Args.builder()\n            .bgpvpnId(\"e7189337-5684-46ee-bcb1-44f1a57066c9\")\n            .networkId(\"de83d56c-4d2f-44f7-ac24-af393252204f\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  association1:\n    type: openstack:bgpvpn:NetworkAssociateV2\n    name: association_1\n    properties:\n      bgpvpnId: e7189337-5684-46ee-bcb1-44f1a57066c9\n      networkId: de83d56c-4d2f-44f7-ac24-af393252204f\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBGP VPN network associations can be imported using the BGP VPN ID and BGP VPN\n\nnetwork association ID separated by a slash, e.g.:\n\nhcl\n\n```sh\n$ pulumi import openstack:index/bgpvpnNetworkAssociateV2:BgpvpnNetworkAssociateV2 association_1 2145aaa9-edaa-44fb-9815-e47a96677a72/67bb952a-f9d1-4fc8-ae84-082253a879d4\n```\n\n","properties":{"bgpvpnId":{"type":"string","description":"The ID of the BGP VPN to which the network will be\nassociated. Changing this creates a new BGP VPN network association\n"},"networkId":{"type":"string","description":"The ID of the network to be associated with the BGP\nVPN. Changing this creates a new BGP VPN network association.\n"},"projectId":{"type":"string","description":"The ID of the project that owns the BGP VPN network\nassociation. Only administrative and users with \u003cspan pulumi-lang-nodejs=\"`advsvc`\" pulumi-lang-dotnet=\"`Advsvc`\" pulumi-lang-go=\"`advsvc`\" pulumi-lang-python=\"`advsvc`\" pulumi-lang-yaml=\"`advsvc`\" pulumi-lang-java=\"`advsvc`\"\u003e`advsvc`\u003c/span\u003e role can specify a\nproject ID other than their own. Changing this creates a new BGP VPN network\nassociation.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a BGP VPN network association. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new BGP VPN network association.\n"}},"required":["bgpvpnId","networkId","projectId","region"],"inputProperties":{"bgpvpnId":{"type":"string","description":"The ID of the BGP VPN to which the network will be\nassociated. Changing this creates a new BGP VPN network association\n","willReplaceOnChanges":true},"networkId":{"type":"string","description":"The ID of the network to be associated with the BGP\nVPN. Changing this creates a new BGP VPN network association.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"The ID of the project that owns the BGP VPN network\nassociation. Only administrative and users with \u003cspan pulumi-lang-nodejs=\"`advsvc`\" pulumi-lang-dotnet=\"`Advsvc`\" pulumi-lang-go=\"`advsvc`\" pulumi-lang-python=\"`advsvc`\" pulumi-lang-yaml=\"`advsvc`\" pulumi-lang-java=\"`advsvc`\"\u003e`advsvc`\u003c/span\u003e role can specify a\nproject ID other than their own. Changing this creates a new BGP VPN network\nassociation.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a BGP VPN network association. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new BGP VPN network association.\n","willReplaceOnChanges":true}},"requiredInputs":["bgpvpnId","networkId"],"stateInputs":{"description":"Input properties used for looking up and filtering BgpvpnNetworkAssociateV2 resources.\n","properties":{"bgpvpnId":{"type":"string","description":"The ID of the BGP VPN to which the network will be\nassociated. Changing this creates a new BGP VPN network association\n","willReplaceOnChanges":true},"networkId":{"type":"string","description":"The ID of the network to be associated with the BGP\nVPN. Changing this creates a new BGP VPN network association.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"The ID of the project that owns the BGP VPN network\nassociation. Only administrative and users with \u003cspan pulumi-lang-nodejs=\"`advsvc`\" pulumi-lang-dotnet=\"`Advsvc`\" pulumi-lang-go=\"`advsvc`\" pulumi-lang-python=\"`advsvc`\" pulumi-lang-yaml=\"`advsvc`\" pulumi-lang-java=\"`advsvc`\"\u003e`advsvc`\u003c/span\u003e role can specify a\nproject ID other than their own. Changing this creates a new BGP VPN network\nassociation.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a BGP VPN network association. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new BGP VPN network association.\n","willReplaceOnChanges":true}},"type":"object"},"deprecationMessage":"openstack.index/bgpvpnnetworkassociatev2.BgpvpnNetworkAssociateV2 has been deprecated in favor of openstack.bgpvpn/networkassociatev2.NetworkAssociateV2"},"openstack:index/bgpvpnPortAssociateV2:BgpvpnPortAssociateV2":{"description":"Manages a V2 BGP VPN port association resource within OpenStack.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst association1 = new openstack.bgpvpn.PortAssociateV2(\"association_1\", {\n    bgpvpnId: \"19382ec5-8098-47d9-a9c6-6270c91103f4\",\n    portId: \"b83a95b8-c2c8-4eac-9a9e-ddc85bd1266f\",\n    routes: [\n        {\n            type: \"prefix\",\n            prefix: \"192.168.170.1/32\",\n        },\n        {\n            type: \"bgpvpn\",\n            bgpvpnId: \"35af1cc6-3d0f-4c5d-86f8-8cdb508d3f0c\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nassociation1 = openstack.bgpvpn.PortAssociateV2(\"association_1\",\n    bgpvpn_id=\"19382ec5-8098-47d9-a9c6-6270c91103f4\",\n    port_id=\"b83a95b8-c2c8-4eac-9a9e-ddc85bd1266f\",\n    routes=[\n        {\n            \"type\": \"prefix\",\n            \"prefix\": \"192.168.170.1/32\",\n        },\n        {\n            \"type\": \"bgpvpn\",\n            \"bgpvpn_id\": \"35af1cc6-3d0f-4c5d-86f8-8cdb508d3f0c\",\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var association1 = new OpenStack.BGPVPN.PortAssociateV2(\"association_1\", new()\n    {\n        BgpvpnId = \"19382ec5-8098-47d9-a9c6-6270c91103f4\",\n        PortId = \"b83a95b8-c2c8-4eac-9a9e-ddc85bd1266f\",\n        Routes = new[]\n        {\n            new OpenStack.BGPVPN.Inputs.PortAssociateV2RouteArgs\n            {\n                Type = \"prefix\",\n                Prefix = \"192.168.170.1/32\",\n            },\n            new OpenStack.BGPVPN.Inputs.PortAssociateV2RouteArgs\n            {\n                Type = \"bgpvpn\",\n                BgpvpnId = \"35af1cc6-3d0f-4c5d-86f8-8cdb508d3f0c\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/bgpvpn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bgpvpn.NewPortAssociateV2(ctx, \"association_1\", \u0026bgpvpn.PortAssociateV2Args{\n\t\t\tBgpvpnId: pulumi.String(\"19382ec5-8098-47d9-a9c6-6270c91103f4\"),\n\t\t\tPortId:   pulumi.String(\"b83a95b8-c2c8-4eac-9a9e-ddc85bd1266f\"),\n\t\t\tRoutes: bgpvpn.PortAssociateV2RouteArray{\n\t\t\t\t\u0026bgpvpn.PortAssociateV2RouteArgs{\n\t\t\t\t\tType:   pulumi.String(\"prefix\"),\n\t\t\t\t\tPrefix: pulumi.String(\"192.168.170.1/32\"),\n\t\t\t\t},\n\t\t\t\t\u0026bgpvpn.PortAssociateV2RouteArgs{\n\t\t\t\t\tType:     pulumi.String(\"bgpvpn\"),\n\t\t\t\t\tBgpvpnId: pulumi.String(\"35af1cc6-3d0f-4c5d-86f8-8cdb508d3f0c\"),\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.openstack.bgpvpn.PortAssociateV2;\nimport com.pulumi.openstack.bgpvpn.PortAssociateV2Args;\nimport com.pulumi.openstack.bgpvpn.inputs.PortAssociateV2RouteArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 association1 = new PortAssociateV2(\"association1\", PortAssociateV2Args.builder()\n            .bgpvpnId(\"19382ec5-8098-47d9-a9c6-6270c91103f4\")\n            .portId(\"b83a95b8-c2c8-4eac-9a9e-ddc85bd1266f\")\n            .routes(            \n                PortAssociateV2RouteArgs.builder()\n                    .type(\"prefix\")\n                    .prefix(\"192.168.170.1/32\")\n                    .build(),\n                PortAssociateV2RouteArgs.builder()\n                    .type(\"bgpvpn\")\n                    .bgpvpnId(\"35af1cc6-3d0f-4c5d-86f8-8cdb508d3f0c\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  association1:\n    type: openstack:bgpvpn:PortAssociateV2\n    name: association_1\n    properties:\n      bgpvpnId: 19382ec5-8098-47d9-a9c6-6270c91103f4\n      portId: b83a95b8-c2c8-4eac-9a9e-ddc85bd1266f\n      routes:\n        - type: prefix\n          prefix: 192.168.170.1/32\n        - type: bgpvpn\n          bgpvpnId: 35af1cc6-3d0f-4c5d-86f8-8cdb508d3f0c\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBGP VPN port associations can be imported using the BGP VPN ID and BGP VPN port\n\nassociation ID separated by a slash, e.g.:\n\nhcl\n\n```sh\n$ pulumi import openstack:index/bgpvpnPortAssociateV2:BgpvpnPortAssociateV2 association_1 5bb44ecf-f8fe-4d75-8fc5-313f96ee2696/8f8fc660-3f28-414e-896a-0c7c51162fcf\n```\n\n","properties":{"advertiseFixedIps":{"type":"boolean","description":"A boolean flag indicating whether fixed\nIPs should be advertised. Defaults to true.\n"},"bgpvpnId":{"type":"string","description":"The ID of the BGP VPN to which the port will be\nassociated. Changing this creates a new BGP VPN port association.\n"},"portId":{"type":"string","description":"The ID of the port to be associated with the BGP VPN.\nChanging this creates a new BGP VPN port association.\n"},"projectId":{"type":"string","description":"The ID of the project that owns the port\nassociation. Only administrative and users with \u003cspan pulumi-lang-nodejs=\"`advsvc`\" pulumi-lang-dotnet=\"`Advsvc`\" pulumi-lang-go=\"`advsvc`\" pulumi-lang-python=\"`advsvc`\" pulumi-lang-yaml=\"`advsvc`\" pulumi-lang-java=\"`advsvc`\"\u003e`advsvc`\u003c/span\u003e role can specify a\nproject ID other than their own. Changing this creates a new BGP VPN port\nassociation.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a BGP VPN port association. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new BGP VPN port association.\n"},"routes":{"type":"array","items":{"$ref":"#/types/openstack:index/BgpvpnPortAssociateV2Route:BgpvpnPortAssociateV2Route"},"description":"A list of dictionaries containing the following keys:\n"}},"required":["advertiseFixedIps","bgpvpnId","portId","projectId","region"],"inputProperties":{"advertiseFixedIps":{"type":"boolean","description":"A boolean flag indicating whether fixed\nIPs should be advertised. Defaults to true.\n"},"bgpvpnId":{"type":"string","description":"The ID of the BGP VPN to which the port will be\nassociated. Changing this creates a new BGP VPN port association.\n","willReplaceOnChanges":true},"portId":{"type":"string","description":"The ID of the port to be associated with the BGP VPN.\nChanging this creates a new BGP VPN port association.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"The ID of the project that owns the port\nassociation. Only administrative and users with \u003cspan pulumi-lang-nodejs=\"`advsvc`\" pulumi-lang-dotnet=\"`Advsvc`\" pulumi-lang-go=\"`advsvc`\" pulumi-lang-python=\"`advsvc`\" pulumi-lang-yaml=\"`advsvc`\" pulumi-lang-java=\"`advsvc`\"\u003e`advsvc`\u003c/span\u003e role can specify a\nproject ID other than their own. Changing this creates a new BGP VPN port\nassociation.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a BGP VPN port association. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new BGP VPN port association.\n","willReplaceOnChanges":true},"routes":{"type":"array","items":{"$ref":"#/types/openstack:index/BgpvpnPortAssociateV2Route:BgpvpnPortAssociateV2Route"},"description":"A list of dictionaries containing the following keys:\n"}},"requiredInputs":["bgpvpnId","portId"],"stateInputs":{"description":"Input properties used for looking up and filtering BgpvpnPortAssociateV2 resources.\n","properties":{"advertiseFixedIps":{"type":"boolean","description":"A boolean flag indicating whether fixed\nIPs should be advertised. Defaults to true.\n"},"bgpvpnId":{"type":"string","description":"The ID of the BGP VPN to which the port will be\nassociated. Changing this creates a new BGP VPN port association.\n","willReplaceOnChanges":true},"portId":{"type":"string","description":"The ID of the port to be associated with the BGP VPN.\nChanging this creates a new BGP VPN port association.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"The ID of the project that owns the port\nassociation. Only administrative and users with \u003cspan pulumi-lang-nodejs=\"`advsvc`\" pulumi-lang-dotnet=\"`Advsvc`\" pulumi-lang-go=\"`advsvc`\" pulumi-lang-python=\"`advsvc`\" pulumi-lang-yaml=\"`advsvc`\" pulumi-lang-java=\"`advsvc`\"\u003e`advsvc`\u003c/span\u003e role can specify a\nproject ID other than their own. Changing this creates a new BGP VPN port\nassociation.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a BGP VPN port association. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new BGP VPN port association.\n","willReplaceOnChanges":true},"routes":{"type":"array","items":{"$ref":"#/types/openstack:index/BgpvpnPortAssociateV2Route:BgpvpnPortAssociateV2Route"},"description":"A list of dictionaries containing the following keys:\n"}},"type":"object"},"deprecationMessage":"openstack.index/bgpvpnportassociatev2.BgpvpnPortAssociateV2 has been deprecated in favor of openstack.bgpvpn/portassociatev2.PortAssociateV2"},"openstack:index/bgpvpnRouterAssociateV2:BgpvpnRouterAssociateV2":{"description":"Manages a V2 BGP VPN router association resource within OpenStack.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst association1 = new openstack.bgpvpn.RouterAssociateV2(\"association_1\", {\n    bgpvpnId: \"d57d39e1-dc63-44fd-8cbd-a4e1488100c5\",\n    routerId: \"423fa80f-e0d7-4d02-a9a5-8b8c05812bf6\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nassociation1 = openstack.bgpvpn.RouterAssociateV2(\"association_1\",\n    bgpvpn_id=\"d57d39e1-dc63-44fd-8cbd-a4e1488100c5\",\n    router_id=\"423fa80f-e0d7-4d02-a9a5-8b8c05812bf6\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var association1 = new OpenStack.BGPVPN.RouterAssociateV2(\"association_1\", new()\n    {\n        BgpvpnId = \"d57d39e1-dc63-44fd-8cbd-a4e1488100c5\",\n        RouterId = \"423fa80f-e0d7-4d02-a9a5-8b8c05812bf6\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/bgpvpn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bgpvpn.NewRouterAssociateV2(ctx, \"association_1\", \u0026bgpvpn.RouterAssociateV2Args{\n\t\t\tBgpvpnId: pulumi.String(\"d57d39e1-dc63-44fd-8cbd-a4e1488100c5\"),\n\t\t\tRouterId: pulumi.String(\"423fa80f-e0d7-4d02-a9a5-8b8c05812bf6\"),\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.openstack.bgpvpn.RouterAssociateV2;\nimport com.pulumi.openstack.bgpvpn.RouterAssociateV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 association1 = new RouterAssociateV2(\"association1\", RouterAssociateV2Args.builder()\n            .bgpvpnId(\"d57d39e1-dc63-44fd-8cbd-a4e1488100c5\")\n            .routerId(\"423fa80f-e0d7-4d02-a9a5-8b8c05812bf6\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  association1:\n    type: openstack:bgpvpn:RouterAssociateV2\n    name: association_1\n    properties:\n      bgpvpnId: d57d39e1-dc63-44fd-8cbd-a4e1488100c5\n      routerId: 423fa80f-e0d7-4d02-a9a5-8b8c05812bf6\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBGP VPN router associations can be imported using the BGP VPN ID and BGP VPN\n\nrouter association ID separated by a slash, e.g.:\n\nhcl\n\n```sh\n$ pulumi import openstack:index/bgpvpnRouterAssociateV2:BgpvpnRouterAssociateV2 association_1 e26d509e-fc2d-4fb5-8562-619911a9a6bc/3cc9df2d-80db-4536-8ba6-295d1d0f723f\n```\n\n","properties":{"advertiseExtraRoutes":{"type":"boolean","description":"A boolean flag indicating whether extra\nroutes should be advertised. Defaults to true.\n"},"bgpvpnId":{"type":"string","description":"The ID of the BGP VPN to which the router will be\nassociated. Changing this creates a new BGP VPN router association.\n"},"projectId":{"type":"string","description":"The ID of the project that owns the BGP VPN router\nassociation. Only administrative and users with \u003cspan pulumi-lang-nodejs=\"`advsvc`\" pulumi-lang-dotnet=\"`Advsvc`\" pulumi-lang-go=\"`advsvc`\" pulumi-lang-python=\"`advsvc`\" pulumi-lang-yaml=\"`advsvc`\" pulumi-lang-java=\"`advsvc`\"\u003e`advsvc`\u003c/span\u003e role can specify a\nproject ID other than their own. Changing this creates a new BGP VPN router\nassociation.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a BGP VPN router association. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new BGP VPN router association.\n"},"routerId":{"type":"string","description":"The ID of the router to be associated with the BGP\nVPN. Changing this creates a new BGP VPN router association.\n"}},"required":["advertiseExtraRoutes","bgpvpnId","projectId","region","routerId"],"inputProperties":{"advertiseExtraRoutes":{"type":"boolean","description":"A boolean flag indicating whether extra\nroutes should be advertised. Defaults to true.\n"},"bgpvpnId":{"type":"string","description":"The ID of the BGP VPN to which the router will be\nassociated. Changing this creates a new BGP VPN router association.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"The ID of the project that owns the BGP VPN router\nassociation. Only administrative and users with \u003cspan pulumi-lang-nodejs=\"`advsvc`\" pulumi-lang-dotnet=\"`Advsvc`\" pulumi-lang-go=\"`advsvc`\" pulumi-lang-python=\"`advsvc`\" pulumi-lang-yaml=\"`advsvc`\" pulumi-lang-java=\"`advsvc`\"\u003e`advsvc`\u003c/span\u003e role can specify a\nproject ID other than their own. Changing this creates a new BGP VPN router\nassociation.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a BGP VPN router association. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new BGP VPN router association.\n","willReplaceOnChanges":true},"routerId":{"type":"string","description":"The ID of the router to be associated with the BGP\nVPN. Changing this creates a new BGP VPN router association.\n","willReplaceOnChanges":true}},"requiredInputs":["bgpvpnId","routerId"],"stateInputs":{"description":"Input properties used for looking up and filtering BgpvpnRouterAssociateV2 resources.\n","properties":{"advertiseExtraRoutes":{"type":"boolean","description":"A boolean flag indicating whether extra\nroutes should be advertised. Defaults to true.\n"},"bgpvpnId":{"type":"string","description":"The ID of the BGP VPN to which the router will be\nassociated. Changing this creates a new BGP VPN router association.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"The ID of the project that owns the BGP VPN router\nassociation. Only administrative and users with \u003cspan pulumi-lang-nodejs=\"`advsvc`\" pulumi-lang-dotnet=\"`Advsvc`\" pulumi-lang-go=\"`advsvc`\" pulumi-lang-python=\"`advsvc`\" pulumi-lang-yaml=\"`advsvc`\" pulumi-lang-java=\"`advsvc`\"\u003e`advsvc`\u003c/span\u003e role can specify a\nproject ID other than their own. Changing this creates a new BGP VPN router\nassociation.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a BGP VPN router association. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new BGP VPN router association.\n","willReplaceOnChanges":true},"routerId":{"type":"string","description":"The ID of the router to be associated with the BGP\nVPN. Changing this creates a new BGP VPN router association.\n","willReplaceOnChanges":true}},"type":"object"},"deprecationMessage":"openstack.index/bgpvpnrouterassociatev2.BgpvpnRouterAssociateV2 has been deprecated in favor of openstack.bgpvpn/routerassociatev2.RouterAssociateV2"},"openstack:index/bgpvpnV2:BgpvpnV2":{"description":"Manages a V2 BGP VPN service resource within OpenStack.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst bgpvpn1 = new openstack.bgpvpn.V2(\"bgpvpn_1\", {\n    name: \"bgpvpn1\",\n    routeDistinguishers: [\"64512:1\"],\n    routeTargets: [\"64512:1\"],\n    importTargets: [\"64512:2\"],\n    exportTargets: [\"64512:3\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nbgpvpn1 = openstack.bgpvpn.V2(\"bgpvpn_1\",\n    name=\"bgpvpn1\",\n    route_distinguishers=[\"64512:1\"],\n    route_targets=[\"64512:1\"],\n    import_targets=[\"64512:2\"],\n    export_targets=[\"64512:3\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var bgpvpn1 = new OpenStack.BGPVPN.V2(\"bgpvpn_1\", new()\n    {\n        Name = \"bgpvpn1\",\n        RouteDistinguishers = new[]\n        {\n            \"64512:1\",\n        },\n        RouteTargets = new[]\n        {\n            \"64512:1\",\n        },\n        ImportTargets = new[]\n        {\n            \"64512:2\",\n        },\n        ExportTargets = new[]\n        {\n            \"64512:3\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/bgpvpn\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bgpvpn.NewV2(ctx, \"bgpvpn_1\", \u0026bgpvpn.V2Args{\n\t\t\tName: pulumi.String(\"bgpvpn1\"),\n\t\t\tRouteDistinguishers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"64512:1\"),\n\t\t\t},\n\t\t\tRouteTargets: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"64512:1\"),\n\t\t\t},\n\t\t\tImportTargets: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"64512:2\"),\n\t\t\t},\n\t\t\tExportTargets: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"64512:3\"),\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.openstack.bgpvpn.V2;\nimport com.pulumi.openstack.bgpvpn.V2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 bgpvpn1 = new V2(\"bgpvpn1\", V2Args.builder()\n            .name(\"bgpvpn1\")\n            .routeDistinguishers(\"64512:1\")\n            .routeTargets(\"64512:1\")\n            .importTargets(\"64512:2\")\n            .exportTargets(\"64512:3\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  bgpvpn1:\n    type: openstack:bgpvpn:V2\n    name: bgpvpn_1\n    properties:\n      name: bgpvpn1\n      routeDistinguishers:\n        - 64512:1\n      routeTargets:\n        - 64512:1\n      importTargets:\n        - 64512:2\n      exportTargets:\n        - 64512:3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBGP VPNs can be imported using the `id`, e.g.\n\nhcl\n\n```sh\n$ pulumi import openstack:index/bgpvpnV2:BgpvpnV2 bgpvpn_1 1eec2c66-6be2-4305-af3f-354c9b81f18c\n```\n\n","properties":{"exportTargets":{"type":"array","items":{"type":"string"},"description":"A list of additional Route Targets that will be\nused for export.\n"},"importTargets":{"type":"array","items":{"type":"string"},"description":"A list of additional Route Targets that will be\nimported.\n"},"localPref":{"type":"integer","description":"The default BGP LOCAL\\_PREF of routes that will be\nadvertised to the BGP VPN, unless overridden per-route.\n"},"name":{"type":"string","description":"The name of the BGP VPN. Changing this updates the name of\nthe existing BGP VPN.\n"},"networks":{"type":"array","items":{"type":"string"},"description":"A list of network IDs that are associated with the BGP VPN.\n"},"ports":{"type":"array","items":{"type":"string"},"description":"A list of port IDs that are associated with the BGP VPN.\n"},"projectId":{"type":"string","description":"The ID of the project that owns the BGPVPN. Only\nadministrative and users with \u003cspan pulumi-lang-nodejs=\"`advsvc`\" pulumi-lang-dotnet=\"`Advsvc`\" pulumi-lang-go=\"`advsvc`\" pulumi-lang-python=\"`advsvc`\" pulumi-lang-yaml=\"`advsvc`\" pulumi-lang-java=\"`advsvc`\"\u003e`advsvc`\u003c/span\u003e role can specify a project ID other\nthan their own. Changing this creates a new BGP VPN.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a BGP VPN service. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nBGP VPN.\n"},"routeDistinguishers":{"type":"array","items":{"type":"string"},"description":"A list of route distinguisher strings. If\nspecified, one of these RDs will be used to advertise VPN routes.\n"},"routeTargets":{"type":"array","items":{"type":"string"},"description":"A list of Route Targets that will be both\nimported and used for export.\n"},"routers":{"type":"array","items":{"type":"string"},"description":"A list of router IDs that are associated with the BGP VPN.\n"},"shared":{"type":"boolean","description":"Indicates whether the BGP VPN is shared across projects.\n"},"type":{"type":"string","description":"The type of the BGP VPN (either \u003cspan pulumi-lang-nodejs=\"`l2`\" pulumi-lang-dotnet=\"`L2`\" pulumi-lang-go=\"`l2`\" pulumi-lang-python=\"`l2`\" pulumi-lang-yaml=\"`l2`\" pulumi-lang-java=\"`l2`\"\u003e`l2`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`l3`\" pulumi-lang-dotnet=\"`L3`\" pulumi-lang-go=\"`l3`\" pulumi-lang-python=\"`l3`\" pulumi-lang-yaml=\"`l3`\" pulumi-lang-java=\"`l3`\"\u003e`l3`\u003c/span\u003e). Changing this\ncreates a new BGP VPN. Defaults to \u003cspan pulumi-lang-nodejs=\"`l3`\" pulumi-lang-dotnet=\"`L3`\" pulumi-lang-go=\"`l3`\" pulumi-lang-python=\"`l3`\" pulumi-lang-yaml=\"`l3`\" pulumi-lang-java=\"`l3`\"\u003e`l3`\u003c/span\u003e.\n"},"vni":{"type":"integer","description":"The globally-assigned VXLAN VNI for the BGP VPN. Changing\nthis creates a new BGP VPN.\n"}},"required":["exportTargets","importTargets","name","networks","ports","projectId","region","routeDistinguishers","routeTargets","routers","shared","type"],"inputProperties":{"exportTargets":{"type":"array","items":{"type":"string"},"description":"A list of additional Route Targets that will be\nused for export.\n"},"importTargets":{"type":"array","items":{"type":"string"},"description":"A list of additional Route Targets that will be\nimported.\n"},"localPref":{"type":"integer","description":"The default BGP LOCAL\\_PREF of routes that will be\nadvertised to the BGP VPN, unless overridden per-route.\n"},"name":{"type":"string","description":"The name of the BGP VPN. Changing this updates the name of\nthe existing BGP VPN.\n"},"projectId":{"type":"string","description":"The ID of the project that owns the BGPVPN. Only\nadministrative and users with \u003cspan pulumi-lang-nodejs=\"`advsvc`\" pulumi-lang-dotnet=\"`Advsvc`\" pulumi-lang-go=\"`advsvc`\" pulumi-lang-python=\"`advsvc`\" pulumi-lang-yaml=\"`advsvc`\" pulumi-lang-java=\"`advsvc`\"\u003e`advsvc`\u003c/span\u003e role can specify a project ID other\nthan their own. Changing this creates a new BGP VPN.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a BGP VPN service. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nBGP VPN.\n","willReplaceOnChanges":true},"routeDistinguishers":{"type":"array","items":{"type":"string"},"description":"A list of route distinguisher strings. If\nspecified, one of these RDs will be used to advertise VPN routes.\n"},"routeTargets":{"type":"array","items":{"type":"string"},"description":"A list of Route Targets that will be both\nimported and used for export.\n"},"type":{"type":"string","description":"The type of the BGP VPN (either \u003cspan pulumi-lang-nodejs=\"`l2`\" pulumi-lang-dotnet=\"`L2`\" pulumi-lang-go=\"`l2`\" pulumi-lang-python=\"`l2`\" pulumi-lang-yaml=\"`l2`\" pulumi-lang-java=\"`l2`\"\u003e`l2`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`l3`\" pulumi-lang-dotnet=\"`L3`\" pulumi-lang-go=\"`l3`\" pulumi-lang-python=\"`l3`\" pulumi-lang-yaml=\"`l3`\" pulumi-lang-java=\"`l3`\"\u003e`l3`\u003c/span\u003e). Changing this\ncreates a new BGP VPN. Defaults to \u003cspan pulumi-lang-nodejs=\"`l3`\" pulumi-lang-dotnet=\"`L3`\" pulumi-lang-go=\"`l3`\" pulumi-lang-python=\"`l3`\" pulumi-lang-yaml=\"`l3`\" pulumi-lang-java=\"`l3`\"\u003e`l3`\u003c/span\u003e.\n","willReplaceOnChanges":true},"vni":{"type":"integer","description":"The globally-assigned VXLAN VNI for the BGP VPN. Changing\nthis creates a new BGP VPN.\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering BgpvpnV2 resources.\n","properties":{"exportTargets":{"type":"array","items":{"type":"string"},"description":"A list of additional Route Targets that will be\nused for export.\n"},"importTargets":{"type":"array","items":{"type":"string"},"description":"A list of additional Route Targets that will be\nimported.\n"},"localPref":{"type":"integer","description":"The default BGP LOCAL\\_PREF of routes that will be\nadvertised to the BGP VPN, unless overridden per-route.\n"},"name":{"type":"string","description":"The name of the BGP VPN. Changing this updates the name of\nthe existing BGP VPN.\n"},"networks":{"type":"array","items":{"type":"string"},"description":"A list of network IDs that are associated with the BGP VPN.\n"},"ports":{"type":"array","items":{"type":"string"},"description":"A list of port IDs that are associated with the BGP VPN.\n"},"projectId":{"type":"string","description":"The ID of the project that owns the BGPVPN. Only\nadministrative and users with \u003cspan pulumi-lang-nodejs=\"`advsvc`\" pulumi-lang-dotnet=\"`Advsvc`\" pulumi-lang-go=\"`advsvc`\" pulumi-lang-python=\"`advsvc`\" pulumi-lang-yaml=\"`advsvc`\" pulumi-lang-java=\"`advsvc`\"\u003e`advsvc`\u003c/span\u003e role can specify a project ID other\nthan their own. Changing this creates a new BGP VPN.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a BGP VPN service. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nBGP VPN.\n","willReplaceOnChanges":true},"routeDistinguishers":{"type":"array","items":{"type":"string"},"description":"A list of route distinguisher strings. If\nspecified, one of these RDs will be used to advertise VPN routes.\n"},"routeTargets":{"type":"array","items":{"type":"string"},"description":"A list of Route Targets that will be both\nimported and used for export.\n"},"routers":{"type":"array","items":{"type":"string"},"description":"A list of router IDs that are associated with the BGP VPN.\n"},"shared":{"type":"boolean","description":"Indicates whether the BGP VPN is shared across projects.\n"},"type":{"type":"string","description":"The type of the BGP VPN (either \u003cspan pulumi-lang-nodejs=\"`l2`\" pulumi-lang-dotnet=\"`L2`\" pulumi-lang-go=\"`l2`\" pulumi-lang-python=\"`l2`\" pulumi-lang-yaml=\"`l2`\" pulumi-lang-java=\"`l2`\"\u003e`l2`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`l3`\" pulumi-lang-dotnet=\"`L3`\" pulumi-lang-go=\"`l3`\" pulumi-lang-python=\"`l3`\" pulumi-lang-yaml=\"`l3`\" pulumi-lang-java=\"`l3`\"\u003e`l3`\u003c/span\u003e). Changing this\ncreates a new BGP VPN. Defaults to \u003cspan pulumi-lang-nodejs=\"`l3`\" pulumi-lang-dotnet=\"`L3`\" pulumi-lang-go=\"`l3`\" pulumi-lang-python=\"`l3`\" pulumi-lang-yaml=\"`l3`\" pulumi-lang-java=\"`l3`\"\u003e`l3`\u003c/span\u003e.\n","willReplaceOnChanges":true},"vni":{"type":"integer","description":"The globally-assigned VXLAN VNI for the BGP VPN. Changing\nthis creates a new BGP VPN.\n","willReplaceOnChanges":true}},"type":"object"},"deprecationMessage":"openstack.index/bgpvpnv2.BgpvpnV2 has been deprecated in favor of openstack.bgpvpn/v2.V2"},"openstack:index/lbFlavorprofileV2:LbFlavorprofileV2":{"description":"Manages a V2 load balancer flavorprofile resource within OpenStack.\n\n\u003e **Note:** This usually requires admin privileges.\n\n## Example Usage\n\n### Using jsonencode\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst flavorprofile1 = new openstack.loadbalancer.FlavorprofileV2(\"flavorprofile_1\", {\n    name: \"amphora-single-profile\",\n    providerName: \"amphora\",\n    flavorData: JSON.stringify({\n        loadbalancer_topology: \"SINGLE\",\n    }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_openstack as openstack\n\nflavorprofile1 = openstack.loadbalancer.FlavorprofileV2(\"flavorprofile_1\",\n    name=\"amphora-single-profile\",\n    provider_name=\"amphora\",\n    flavor_data=json.dumps({\n        \"loadbalancer_topology\": \"SINGLE\",\n    }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var flavorprofile1 = new OpenStack.LoadBalancer.FlavorprofileV2(\"flavorprofile_1\", new()\n    {\n        Name = \"amphora-single-profile\",\n        ProviderName = \"amphora\",\n        FlavorData = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"loadbalancer_topology\"] = \"SINGLE\",\n        }),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/loadbalancer\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"loadbalancer_topology\": \"SINGLE\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = loadbalancer.NewFlavorprofileV2(ctx, \"flavorprofile_1\", \u0026loadbalancer.FlavorprofileV2Args{\n\t\t\tName:         pulumi.String(\"amphora-single-profile\"),\n\t\t\tProviderName: pulumi.String(\"amphora\"),\n\t\t\tFlavorData:   pulumi.String(json0),\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.openstack.loadbalancer.FlavorprofileV2;\nimport com.pulumi.openstack.loadbalancer.FlavorprofileV2Args;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 flavorprofile1 = new FlavorprofileV2(\"flavorprofile1\", FlavorprofileV2Args.builder()\n            .name(\"amphora-single-profile\")\n            .providerName(\"amphora\")\n            .flavorData(serializeJson(\n                jsonObject(\n                    jsonProperty(\"loadbalancer_topology\", \"SINGLE\")\n                )))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  flavorprofile1:\n    type: openstack:loadbalancer:FlavorprofileV2\n    name: flavorprofile_1\n    properties:\n      name: amphora-single-profile\n      providerName: amphora\n      flavorData:\n        fn::toJSON:\n          loadbalancer_topology: SINGLE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Using plain string\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst flavorprofile1 = new openstack.loadbalancer.FlavorprofileV2(\"flavorprofile_1\", {\n    name: \"amphora-single-profile\",\n    providerName: \"amphora\",\n    flavorData: \"{\\\"loadbalancer_topology\\\": \\\"SINGLE\\\"}\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nflavorprofile1 = openstack.loadbalancer.FlavorprofileV2(\"flavorprofile_1\",\n    name=\"amphora-single-profile\",\n    provider_name=\"amphora\",\n    flavor_data=\"{\\\"loadbalancer_topology\\\": \\\"SINGLE\\\"}\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var flavorprofile1 = new OpenStack.LoadBalancer.FlavorprofileV2(\"flavorprofile_1\", new()\n    {\n        Name = \"amphora-single-profile\",\n        ProviderName = \"amphora\",\n        FlavorData = \"{\\\"loadbalancer_topology\\\": \\\"SINGLE\\\"}\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/loadbalancer\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := loadbalancer.NewFlavorprofileV2(ctx, \"flavorprofile_1\", \u0026loadbalancer.FlavorprofileV2Args{\n\t\t\tName:         pulumi.String(\"amphora-single-profile\"),\n\t\t\tProviderName: pulumi.String(\"amphora\"),\n\t\t\tFlavorData:   pulumi.String(\"{\\\"loadbalancer_topology\\\": \\\"SINGLE\\\"}\"),\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.openstack.loadbalancer.FlavorprofileV2;\nimport com.pulumi.openstack.loadbalancer.FlavorprofileV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 flavorprofile1 = new FlavorprofileV2(\"flavorprofile1\", FlavorprofileV2Args.builder()\n            .name(\"amphora-single-profile\")\n            .providerName(\"amphora\")\n            .flavorData(\"{\\\"loadbalancer_topology\\\": \\\"SINGLE\\\"}\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  flavorprofile1:\n    type: openstack:loadbalancer:FlavorprofileV2\n    name: flavorprofile_1\n    properties:\n      name: amphora-single-profile\n      providerName: amphora\n      flavorData: '{\"loadbalancer_topology\": \"SINGLE\"}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nflavorprofiles can be imported using their `id`. Example:\n\n```sh\n$ pulumi import openstack:index/lbFlavorprofileV2:LbFlavorprofileV2 flavorprofile_1 2a0f2240-c5e6-41de-896d-e80d97428d6b\n```\n","properties":{"flavorData":{"type":"string","description":"String that passes the\u003cspan pulumi-lang-nodejs=\" flavorData \" pulumi-lang-dotnet=\" FlavorData \" pulumi-lang-go=\" flavorData \" pulumi-lang-python=\" flavor_data \" pulumi-lang-yaml=\" flavorData \" pulumi-lang-java=\" flavorData \"\u003e flavor_data \u003c/span\u003efor the flavorprofile.\nThe data that are allowed depend on the \u003cspan pulumi-lang-nodejs=\"`providerName`\" pulumi-lang-dotnet=\"`ProviderName`\" pulumi-lang-go=\"`providerName`\" pulumi-lang-python=\"`provider_name`\" pulumi-lang-yaml=\"`providerName`\" pulumi-lang-java=\"`providerName`\"\u003e`provider_name`\u003c/span\u003e that is passed. jsonencode\ncan be used for readability as shown in the example above.\nChanging this updates the existing flavorprofile.\n"},"name":{"type":"string","description":"Name of the flavorprofile. Changing this updates the existing\nflavorprofile.\n"},"providerName":{"type":"string","description":"The\u003cspan pulumi-lang-nodejs=\" providerName \" pulumi-lang-dotnet=\" ProviderName \" pulumi-lang-go=\" providerName \" pulumi-lang-python=\" provider_name \" pulumi-lang-yaml=\" providerName \" pulumi-lang-java=\" providerName \"\u003e provider_name \u003c/span\u003ethat the\u003cspan pulumi-lang-nodejs=\" flavorProfile \" pulumi-lang-dotnet=\" FlavorProfile \" pulumi-lang-go=\" flavorProfile \" pulumi-lang-python=\" flavor_profile \" pulumi-lang-yaml=\" flavorProfile \" pulumi-lang-java=\" flavorProfile \"\u003e flavor_profile \u003c/span\u003ewill use.\nChanging this updates the existing flavorprofile.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an LB member. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nLB flavorprofile.\n"}},"required":["flavorData","name","providerName","region"],"inputProperties":{"flavorData":{"type":"string","description":"String that passes the\u003cspan pulumi-lang-nodejs=\" flavorData \" pulumi-lang-dotnet=\" FlavorData \" pulumi-lang-go=\" flavorData \" pulumi-lang-python=\" flavor_data \" pulumi-lang-yaml=\" flavorData \" pulumi-lang-java=\" flavorData \"\u003e flavor_data \u003c/span\u003efor the flavorprofile.\nThe data that are allowed depend on the \u003cspan pulumi-lang-nodejs=\"`providerName`\" pulumi-lang-dotnet=\"`ProviderName`\" pulumi-lang-go=\"`providerName`\" pulumi-lang-python=\"`provider_name`\" pulumi-lang-yaml=\"`providerName`\" pulumi-lang-java=\"`providerName`\"\u003e`provider_name`\u003c/span\u003e that is passed. jsonencode\ncan be used for readability as shown in the example above.\nChanging this updates the existing flavorprofile.\n"},"name":{"type":"string","description":"Name of the flavorprofile. Changing this updates the existing\nflavorprofile.\n"},"providerName":{"type":"string","description":"The\u003cspan pulumi-lang-nodejs=\" providerName \" pulumi-lang-dotnet=\" ProviderName \" pulumi-lang-go=\" providerName \" pulumi-lang-python=\" provider_name \" pulumi-lang-yaml=\" providerName \" pulumi-lang-java=\" providerName \"\u003e provider_name \u003c/span\u003ethat the\u003cspan pulumi-lang-nodejs=\" flavorProfile \" pulumi-lang-dotnet=\" FlavorProfile \" pulumi-lang-go=\" flavorProfile \" pulumi-lang-python=\" flavor_profile \" pulumi-lang-yaml=\" flavorProfile \" pulumi-lang-java=\" flavorProfile \"\u003e flavor_profile \u003c/span\u003ewill use.\nChanging this updates the existing flavorprofile.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an LB member. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nLB flavorprofile.\n","willReplaceOnChanges":true}},"requiredInputs":["flavorData","providerName"],"stateInputs":{"description":"Input properties used for looking up and filtering LbFlavorprofileV2 resources.\n","properties":{"flavorData":{"type":"string","description":"String that passes the\u003cspan pulumi-lang-nodejs=\" flavorData \" pulumi-lang-dotnet=\" FlavorData \" pulumi-lang-go=\" flavorData \" pulumi-lang-python=\" flavor_data \" pulumi-lang-yaml=\" flavorData \" pulumi-lang-java=\" flavorData \"\u003e flavor_data \u003c/span\u003efor the flavorprofile.\nThe data that are allowed depend on the \u003cspan pulumi-lang-nodejs=\"`providerName`\" pulumi-lang-dotnet=\"`ProviderName`\" pulumi-lang-go=\"`providerName`\" pulumi-lang-python=\"`provider_name`\" pulumi-lang-yaml=\"`providerName`\" pulumi-lang-java=\"`providerName`\"\u003e`provider_name`\u003c/span\u003e that is passed. jsonencode\ncan be used for readability as shown in the example above.\nChanging this updates the existing flavorprofile.\n"},"name":{"type":"string","description":"Name of the flavorprofile. Changing this updates the existing\nflavorprofile.\n"},"providerName":{"type":"string","description":"The\u003cspan pulumi-lang-nodejs=\" providerName \" pulumi-lang-dotnet=\" ProviderName \" pulumi-lang-go=\" providerName \" pulumi-lang-python=\" provider_name \" pulumi-lang-yaml=\" providerName \" pulumi-lang-java=\" providerName \"\u003e provider_name \u003c/span\u003ethat the\u003cspan pulumi-lang-nodejs=\" flavorProfile \" pulumi-lang-dotnet=\" FlavorProfile \" pulumi-lang-go=\" flavorProfile \" pulumi-lang-python=\" flavor_profile \" pulumi-lang-yaml=\" flavorProfile \" pulumi-lang-java=\" flavorProfile \"\u003e flavor_profile \u003c/span\u003ewill use.\nChanging this updates the existing flavorprofile.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an LB member. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nLB flavorprofile.\n","willReplaceOnChanges":true}},"type":"object"},"deprecationMessage":"openstack.index/lbflavorprofilev2.LbFlavorprofileV2 has been deprecated in favor of openstack.loadbalancer/flavorprofilev2.FlavorprofileV2"},"openstack:index/lbLoadbalancerV2:LbLoadbalancerV2":{"description":"Manages a V2 loadbalancer resource within OpenStack.\n\n\u003e **Note:** This resource has attributes that depend on octavia minor versions.\nPlease ensure your Openstack cloud supports the required minor version.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst lb1 = new openstack.loadbalancer.LoadBalancer(\"lb_1\", {vipSubnetId: \"d9415786-5f1a-428b-b35f-2f1523e146d2\"});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nlb1 = openstack.loadbalancer.LoadBalancer(\"lb_1\", vip_subnet_id=\"d9415786-5f1a-428b-b35f-2f1523e146d2\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var lb1 = new OpenStack.LoadBalancer.LoadBalancer(\"lb_1\", new()\n    {\n        VipSubnetId = \"d9415786-5f1a-428b-b35f-2f1523e146d2\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/loadbalancer\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := loadbalancer.NewLoadBalancer(ctx, \"lb_1\", \u0026loadbalancer.LoadBalancerArgs{\n\t\t\tVipSubnetId: pulumi.String(\"d9415786-5f1a-428b-b35f-2f1523e146d2\"),\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.openstack.loadbalancer.LoadBalancer;\nimport com.pulumi.openstack.loadbalancer.LoadBalancerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 lb1 = new LoadBalancer(\"lb1\", LoadBalancerArgs.builder()\n            .vipSubnetId(\"d9415786-5f1a-428b-b35f-2f1523e146d2\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  lb1:\n    type: openstack:loadbalancer:LoadBalancer\n    name: lb_1\n    properties:\n      vipSubnetId: d9415786-5f1a-428b-b35f-2f1523e146d2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nLoad Balancer can be imported using the Load Balancer ID, e.g.:\n\n```sh\n$ pulumi import openstack:index/lbLoadbalancerV2:LbLoadbalancerV2 loadbalancer_1 19bcfdc7-c521-4a7e-9459-6750bd16df76\n```\n","properties":{"adminStateUp":{"type":"boolean","description":"The administrative state of the Loadbalancer.\nA valid value is true (UP) or false (DOWN).\n"},"availabilityZone":{"type":"string","description":"The availability zone of the Loadbalancer.\nChanging this creates a new loadbalancer. Available only for Octavia\n**minor version 2.14 or later**.\n"},"description":{"type":"string","description":"Human-readable description for the Loadbalancer.\n"},"flavorId":{"type":"string","description":"The UUID of a flavor. Changing this creates a new\nloadbalancer.\n"},"loadbalancerProvider":{"type":"string","description":"The name of the provider. Changing this\ncreates a new loadbalancer.\n"},"name":{"type":"string","description":"Human-readable name for the Loadbalancer. Does not have\nto be unique.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an LB member. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nLB member.\n"},"securityGroupIds":{"type":"array","items":{"type":"string"},"description":"A list of security group IDs to apply to the\nloadbalancer. The security groups must be specified by ID and not name (as\nopposed to how they are configured with the Compute Instance).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of simple strings assigned to the loadbalancer.\nAvailable only for Octavia **minor version 2.5 or later**.\n"},"tenantId":{"type":"string","description":"Required for admins. The UUID of the tenant who owns\nthe Loadbalancer.  Only administrative users can specify a tenant UUID\nother than their own.  Changing this creates a new loadbalancer.\n"},"vipAddress":{"type":"string","description":"The ip address of the load balancer.\nChanging this creates a new loadbalancer.\n"},"vipNetworkId":{"type":"string","description":"The network on which to allocate the\nLoadbalancer's address. A tenant can only create Loadbalancers on networks\nauthorized by policy (e.g. networks that belong to them or networks that\nare shared).  Changing this creates a new loadbalancer. Exactly one of\n\u003cspan pulumi-lang-nodejs=\"`vipSubnetId`\" pulumi-lang-dotnet=\"`VipSubnetId`\" pulumi-lang-go=\"`vipSubnetId`\" pulumi-lang-python=\"`vip_subnet_id`\" pulumi-lang-yaml=\"`vipSubnetId`\" pulumi-lang-java=\"`vipSubnetId`\"\u003e`vip_subnet_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`vipNetworkId`\" pulumi-lang-dotnet=\"`VipNetworkId`\" pulumi-lang-go=\"`vipNetworkId`\" pulumi-lang-python=\"`vip_network_id`\" pulumi-lang-yaml=\"`vipNetworkId`\" pulumi-lang-java=\"`vipNetworkId`\"\u003e`vip_network_id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`vipPortId`\" pulumi-lang-dotnet=\"`VipPortId`\" pulumi-lang-go=\"`vipPortId`\" pulumi-lang-python=\"`vip_port_id`\" pulumi-lang-yaml=\"`vipPortId`\" pulumi-lang-java=\"`vipPortId`\"\u003e`vip_port_id`\u003c/span\u003e has to be defined.\n"},"vipPortId":{"type":"string","description":"The port UUID that the loadbalancer will use.\nChanging this creates a new loadbalancer. Exactly one of\n\u003cspan pulumi-lang-nodejs=\"`vipSubnetId`\" pulumi-lang-dotnet=\"`VipSubnetId`\" pulumi-lang-go=\"`vipSubnetId`\" pulumi-lang-python=\"`vip_subnet_id`\" pulumi-lang-yaml=\"`vipSubnetId`\" pulumi-lang-java=\"`vipSubnetId`\"\u003e`vip_subnet_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`vipNetworkId`\" pulumi-lang-dotnet=\"`VipNetworkId`\" pulumi-lang-go=\"`vipNetworkId`\" pulumi-lang-python=\"`vip_network_id`\" pulumi-lang-yaml=\"`vipNetworkId`\" pulumi-lang-java=\"`vipNetworkId`\"\u003e`vip_network_id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`vipPortId`\" pulumi-lang-dotnet=\"`VipPortId`\" pulumi-lang-go=\"`vipPortId`\" pulumi-lang-python=\"`vip_port_id`\" pulumi-lang-yaml=\"`vipPortId`\" pulumi-lang-java=\"`vipPortId`\"\u003e`vip_port_id`\u003c/span\u003e has to be defined.\n"},"vipQosPolicyId":{"type":"string","description":"The ID of the QoS Policy which will \nbe applied to the Virtual IP (VIP).\n"},"vipSubnetId":{"type":"string","description":"The subnet on which to allocate the\nLoadbalancer's address. A tenant can only create Loadbalancers on networks\nauthorized by policy (e.g. networks that belong to them or networks that\nare shared).  Changing this creates a new loadbalancer. Exactly one of\n\u003cspan pulumi-lang-nodejs=\"`vipSubnetId`\" pulumi-lang-dotnet=\"`VipSubnetId`\" pulumi-lang-go=\"`vipSubnetId`\" pulumi-lang-python=\"`vip_subnet_id`\" pulumi-lang-yaml=\"`vipSubnetId`\" pulumi-lang-java=\"`vipSubnetId`\"\u003e`vip_subnet_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`vipNetworkId`\" pulumi-lang-dotnet=\"`VipNetworkId`\" pulumi-lang-go=\"`vipNetworkId`\" pulumi-lang-python=\"`vip_network_id`\" pulumi-lang-yaml=\"`vipNetworkId`\" pulumi-lang-java=\"`vipNetworkId`\"\u003e`vip_network_id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`vipPortId`\" pulumi-lang-dotnet=\"`VipPortId`\" pulumi-lang-go=\"`vipPortId`\" pulumi-lang-python=\"`vip_port_id`\" pulumi-lang-yaml=\"`vipPortId`\" pulumi-lang-java=\"`vipPortId`\"\u003e`vip_port_id`\u003c/span\u003e has to be defined.\n"}},"required":["flavorId","loadbalancerProvider","name","region","securityGroupIds","tenantId","vipAddress","vipNetworkId","vipPortId","vipSubnetId"],"inputProperties":{"adminStateUp":{"type":"boolean","description":"The administrative state of the Loadbalancer.\nA valid value is true (UP) or false (DOWN).\n"},"availabilityZone":{"type":"string","description":"The availability zone of the Loadbalancer.\nChanging this creates a new loadbalancer. Available only for Octavia\n**minor version 2.14 or later**.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"Human-readable description for the Loadbalancer.\n"},"flavorId":{"type":"string","description":"The UUID of a flavor. Changing this creates a new\nloadbalancer.\n","willReplaceOnChanges":true},"loadbalancerProvider":{"type":"string","description":"The name of the provider. Changing this\ncreates a new loadbalancer.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"Human-readable name for the Loadbalancer. Does not have\nto be unique.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an LB member. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nLB member.\n","willReplaceOnChanges":true},"securityGroupIds":{"type":"array","items":{"type":"string"},"description":"A list of security group IDs to apply to the\nloadbalancer. The security groups must be specified by ID and not name (as\nopposed to how they are configured with the Compute Instance).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of simple strings assigned to the loadbalancer.\nAvailable only for Octavia **minor version 2.5 or later**.\n"},"tenantId":{"type":"string","description":"Required for admins. The UUID of the tenant who owns\nthe Loadbalancer.  Only administrative users can specify a tenant UUID\nother than their own.  Changing this creates a new loadbalancer.\n","willReplaceOnChanges":true},"vipAddress":{"type":"string","description":"The ip address of the load balancer.\nChanging this creates a new loadbalancer.\n","willReplaceOnChanges":true},"vipNetworkId":{"type":"string","description":"The network on which to allocate the\nLoadbalancer's address. A tenant can only create Loadbalancers on networks\nauthorized by policy (e.g. networks that belong to them or networks that\nare shared).  Changing this creates a new loadbalancer. Exactly one of\n\u003cspan pulumi-lang-nodejs=\"`vipSubnetId`\" pulumi-lang-dotnet=\"`VipSubnetId`\" pulumi-lang-go=\"`vipSubnetId`\" pulumi-lang-python=\"`vip_subnet_id`\" pulumi-lang-yaml=\"`vipSubnetId`\" pulumi-lang-java=\"`vipSubnetId`\"\u003e`vip_subnet_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`vipNetworkId`\" pulumi-lang-dotnet=\"`VipNetworkId`\" pulumi-lang-go=\"`vipNetworkId`\" pulumi-lang-python=\"`vip_network_id`\" pulumi-lang-yaml=\"`vipNetworkId`\" pulumi-lang-java=\"`vipNetworkId`\"\u003e`vip_network_id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`vipPortId`\" pulumi-lang-dotnet=\"`VipPortId`\" pulumi-lang-go=\"`vipPortId`\" pulumi-lang-python=\"`vip_port_id`\" pulumi-lang-yaml=\"`vipPortId`\" pulumi-lang-java=\"`vipPortId`\"\u003e`vip_port_id`\u003c/span\u003e has to be defined.\n","willReplaceOnChanges":true},"vipPortId":{"type":"string","description":"The port UUID that the loadbalancer will use.\nChanging this creates a new loadbalancer. Exactly one of\n\u003cspan pulumi-lang-nodejs=\"`vipSubnetId`\" pulumi-lang-dotnet=\"`VipSubnetId`\" pulumi-lang-go=\"`vipSubnetId`\" pulumi-lang-python=\"`vip_subnet_id`\" pulumi-lang-yaml=\"`vipSubnetId`\" pulumi-lang-java=\"`vipSubnetId`\"\u003e`vip_subnet_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`vipNetworkId`\" pulumi-lang-dotnet=\"`VipNetworkId`\" pulumi-lang-go=\"`vipNetworkId`\" pulumi-lang-python=\"`vip_network_id`\" pulumi-lang-yaml=\"`vipNetworkId`\" pulumi-lang-java=\"`vipNetworkId`\"\u003e`vip_network_id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`vipPortId`\" pulumi-lang-dotnet=\"`VipPortId`\" pulumi-lang-go=\"`vipPortId`\" pulumi-lang-python=\"`vip_port_id`\" pulumi-lang-yaml=\"`vipPortId`\" pulumi-lang-java=\"`vipPortId`\"\u003e`vip_port_id`\u003c/span\u003e has to be defined.\n","willReplaceOnChanges":true},"vipQosPolicyId":{"type":"string","description":"The ID of the QoS Policy which will \nbe applied to the Virtual IP (VIP).\n"},"vipSubnetId":{"type":"string","description":"The subnet on which to allocate the\nLoadbalancer's address. A tenant can only create Loadbalancers on networks\nauthorized by policy (e.g. networks that belong to them or networks that\nare shared).  Changing this creates a new loadbalancer. Exactly one of\n\u003cspan pulumi-lang-nodejs=\"`vipSubnetId`\" pulumi-lang-dotnet=\"`VipSubnetId`\" pulumi-lang-go=\"`vipSubnetId`\" pulumi-lang-python=\"`vip_subnet_id`\" pulumi-lang-yaml=\"`vipSubnetId`\" pulumi-lang-java=\"`vipSubnetId`\"\u003e`vip_subnet_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`vipNetworkId`\" pulumi-lang-dotnet=\"`VipNetworkId`\" pulumi-lang-go=\"`vipNetworkId`\" pulumi-lang-python=\"`vip_network_id`\" pulumi-lang-yaml=\"`vipNetworkId`\" pulumi-lang-java=\"`vipNetworkId`\"\u003e`vip_network_id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`vipPortId`\" pulumi-lang-dotnet=\"`VipPortId`\" pulumi-lang-go=\"`vipPortId`\" pulumi-lang-python=\"`vip_port_id`\" pulumi-lang-yaml=\"`vipPortId`\" pulumi-lang-java=\"`vipPortId`\"\u003e`vip_port_id`\u003c/span\u003e has to be defined.\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering LbLoadbalancerV2 resources.\n","properties":{"adminStateUp":{"type":"boolean","description":"The administrative state of the Loadbalancer.\nA valid value is true (UP) or false (DOWN).\n"},"availabilityZone":{"type":"string","description":"The availability zone of the Loadbalancer.\nChanging this creates a new loadbalancer. Available only for Octavia\n**minor version 2.14 or later**.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"Human-readable description for the Loadbalancer.\n"},"flavorId":{"type":"string","description":"The UUID of a flavor. Changing this creates a new\nloadbalancer.\n","willReplaceOnChanges":true},"loadbalancerProvider":{"type":"string","description":"The name of the provider. Changing this\ncreates a new loadbalancer.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"Human-readable name for the Loadbalancer. Does not have\nto be unique.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an LB member. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nLB member.\n","willReplaceOnChanges":true},"securityGroupIds":{"type":"array","items":{"type":"string"},"description":"A list of security group IDs to apply to the\nloadbalancer. The security groups must be specified by ID and not name (as\nopposed to how they are configured with the Compute Instance).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of simple strings assigned to the loadbalancer.\nAvailable only for Octavia **minor version 2.5 or later**.\n"},"tenantId":{"type":"string","description":"Required for admins. The UUID of the tenant who owns\nthe Loadbalancer.  Only administrative users can specify a tenant UUID\nother than their own.  Changing this creates a new loadbalancer.\n","willReplaceOnChanges":true},"vipAddress":{"type":"string","description":"The ip address of the load balancer.\nChanging this creates a new loadbalancer.\n","willReplaceOnChanges":true},"vipNetworkId":{"type":"string","description":"The network on which to allocate the\nLoadbalancer's address. A tenant can only create Loadbalancers on networks\nauthorized by policy (e.g. networks that belong to them or networks that\nare shared).  Changing this creates a new loadbalancer. Exactly one of\n\u003cspan pulumi-lang-nodejs=\"`vipSubnetId`\" pulumi-lang-dotnet=\"`VipSubnetId`\" pulumi-lang-go=\"`vipSubnetId`\" pulumi-lang-python=\"`vip_subnet_id`\" pulumi-lang-yaml=\"`vipSubnetId`\" pulumi-lang-java=\"`vipSubnetId`\"\u003e`vip_subnet_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`vipNetworkId`\" pulumi-lang-dotnet=\"`VipNetworkId`\" pulumi-lang-go=\"`vipNetworkId`\" pulumi-lang-python=\"`vip_network_id`\" pulumi-lang-yaml=\"`vipNetworkId`\" pulumi-lang-java=\"`vipNetworkId`\"\u003e`vip_network_id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`vipPortId`\" pulumi-lang-dotnet=\"`VipPortId`\" pulumi-lang-go=\"`vipPortId`\" pulumi-lang-python=\"`vip_port_id`\" pulumi-lang-yaml=\"`vipPortId`\" pulumi-lang-java=\"`vipPortId`\"\u003e`vip_port_id`\u003c/span\u003e has to be defined.\n","willReplaceOnChanges":true},"vipPortId":{"type":"string","description":"The port UUID that the loadbalancer will use.\nChanging this creates a new loadbalancer. Exactly one of\n\u003cspan pulumi-lang-nodejs=\"`vipSubnetId`\" pulumi-lang-dotnet=\"`VipSubnetId`\" pulumi-lang-go=\"`vipSubnetId`\" pulumi-lang-python=\"`vip_subnet_id`\" pulumi-lang-yaml=\"`vipSubnetId`\" pulumi-lang-java=\"`vipSubnetId`\"\u003e`vip_subnet_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`vipNetworkId`\" pulumi-lang-dotnet=\"`VipNetworkId`\" pulumi-lang-go=\"`vipNetworkId`\" pulumi-lang-python=\"`vip_network_id`\" pulumi-lang-yaml=\"`vipNetworkId`\" pulumi-lang-java=\"`vipNetworkId`\"\u003e`vip_network_id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`vipPortId`\" pulumi-lang-dotnet=\"`VipPortId`\" pulumi-lang-go=\"`vipPortId`\" pulumi-lang-python=\"`vip_port_id`\" pulumi-lang-yaml=\"`vipPortId`\" pulumi-lang-java=\"`vipPortId`\"\u003e`vip_port_id`\u003c/span\u003e has to be defined.\n","willReplaceOnChanges":true},"vipQosPolicyId":{"type":"string","description":"The ID of the QoS Policy which will \nbe applied to the Virtual IP (VIP).\n"},"vipSubnetId":{"type":"string","description":"The subnet on which to allocate the\nLoadbalancer's address. A tenant can only create Loadbalancers on networks\nauthorized by policy (e.g. networks that belong to them or networks that\nare shared).  Changing this creates a new loadbalancer. Exactly one of\n\u003cspan pulumi-lang-nodejs=\"`vipSubnetId`\" pulumi-lang-dotnet=\"`VipSubnetId`\" pulumi-lang-go=\"`vipSubnetId`\" pulumi-lang-python=\"`vip_subnet_id`\" pulumi-lang-yaml=\"`vipSubnetId`\" pulumi-lang-java=\"`vipSubnetId`\"\u003e`vip_subnet_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`vipNetworkId`\" pulumi-lang-dotnet=\"`VipNetworkId`\" pulumi-lang-go=\"`vipNetworkId`\" pulumi-lang-python=\"`vip_network_id`\" pulumi-lang-yaml=\"`vipNetworkId`\" pulumi-lang-java=\"`vipNetworkId`\"\u003e`vip_network_id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`vipPortId`\" pulumi-lang-dotnet=\"`VipPortId`\" pulumi-lang-go=\"`vipPortId`\" pulumi-lang-python=\"`vip_port_id`\" pulumi-lang-yaml=\"`vipPortId`\" pulumi-lang-java=\"`vipPortId`\"\u003e`vip_port_id`\u003c/span\u003e has to be defined.\n","willReplaceOnChanges":true}},"type":"object"},"deprecationMessage":"openstack.index/lbloadbalancerv2.LbLoadbalancerV2 has been deprecated in favor of openstack.loadbalancer/loadbalancer.LoadBalancer"},"openstack:index/taasTapMirrorV2:TaasTapMirrorV2":{"description":"Manages a V2 Neutron Tap Mirror resource within OpenStack tap-as-a-service extension.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst tapMirror1 = new openstack.TaasTapMirrorV2(\"tap_mirror_1\", {\n    mirrorType: \"erspanv1\",\n    portId: \"a25290e9-1a54-4c26-a5b3-34458d122acc\",\n    remoteIp: \"172.18.1.15\",\n    directions: {\n        \"in\": 1000,\n        out: 1001,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\ntap_mirror1 = openstack.TaasTapMirrorV2(\"tap_mirror_1\",\n    mirror_type=\"erspanv1\",\n    port_id=\"a25290e9-1a54-4c26-a5b3-34458d122acc\",\n    remote_ip=\"172.18.1.15\",\n    directions={\n        \"in_\": 1000,\n        \"out\": 1001,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var tapMirror1 = new OpenStack.TaasTapMirrorV2(\"tap_mirror_1\", new()\n    {\n        MirrorType = \"erspanv1\",\n        PortId = \"a25290e9-1a54-4c26-a5b3-34458d122acc\",\n        RemoteIp = \"172.18.1.15\",\n        Directions = new OpenStack.Inputs.TaasTapMirrorV2DirectionsArgs\n        {\n            In = 1000,\n            Out = 1001,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := openstack.NewTaasTapMirrorV2(ctx, \"tap_mirror_1\", \u0026openstack.TaasTapMirrorV2Args{\n\t\t\tMirrorType: pulumi.String(\"erspanv1\"),\n\t\t\tPortId:     pulumi.String(\"a25290e9-1a54-4c26-a5b3-34458d122acc\"),\n\t\t\tRemoteIp:   pulumi.String(\"172.18.1.15\"),\n\t\t\tDirections: \u0026openstack.TaasTapMirrorV2DirectionsArgs{\n\t\t\t\tIn:  pulumi.Int(1000),\n\t\t\t\tOut: pulumi.Int(1001),\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.openstack.TaasTapMirrorV2;\nimport com.pulumi.openstack.TaasTapMirrorV2Args;\nimport com.pulumi.openstack.inputs.TaasTapMirrorV2DirectionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 tapMirror1 = new TaasTapMirrorV2(\"tapMirror1\", TaasTapMirrorV2Args.builder()\n            .mirrorType(\"erspanv1\")\n            .portId(\"a25290e9-1a54-4c26-a5b3-34458d122acc\")\n            .remoteIp(\"172.18.1.15\")\n            .directions(TaasTapMirrorV2DirectionsArgs.builder()\n                .in(1000)\n                .out(1001)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  tapMirror1:\n    type: openstack:TaasTapMirrorV2\n    name: tap_mirror_1\n    properties:\n      mirrorType: erspanv1\n      portId: a25290e9-1a54-4c26-a5b3-34458d122acc\n      remoteIp: 172.18.1.15\n      directions:\n        in: 1000\n        out: 1001\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTap Mirrors can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:index/taasTapMirrorV2:TaasTapMirrorV2 tap_mirror_1 0837b488-f0e2-4689-99b3-e3ed531f9b10\n```\n","properties":{"description":{"type":"string","description":"The human-readable description for the Tap Mirror.\nChanging this updates the description of the existing Tap Mirror.\n"},"directions":{"$ref":"#/types/openstack:index/TaasTapMirrorV2Directions:TaasTapMirrorV2Directions","description":"A block declaring the directions to be mirrored and their\nidentifiers. One block has to be declared with at least one direction. Changing\nthis creates a new Tap Mirror.\n"},"mirrorType":{"type":"string","description":"The type of the mirroring, can be \u003cspan pulumi-lang-nodejs=\"`gre`\" pulumi-lang-dotnet=\"`Gre`\" pulumi-lang-go=\"`gre`\" pulumi-lang-python=\"`gre`\" pulumi-lang-yaml=\"`gre`\" pulumi-lang-java=\"`gre`\"\u003e`gre`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`erspanv1`\" pulumi-lang-dotnet=\"`Erspanv1`\" pulumi-lang-go=\"`erspanv1`\" pulumi-lang-python=\"`erspanv1`\" pulumi-lang-yaml=\"`erspanv1`\" pulumi-lang-java=\"`erspanv1`\"\u003e`erspanv1`\u003c/span\u003e.\nChanging this creates a new Tap Mirror.\n"},"name":{"type":"string","description":"The name of the Tap Mirror. Changing this updates the name of\nthe existing Tap Mirror.\n"},"portId":{"type":"string","description":"The Port ID of the Tap Mirror, this will be the source of\nthe mirrored traffic, and this traffic will be tunneled into the GRE or ERSPAN\nv1 tunnel. The tunnel itself is not starting from this port. Changing this\ncreates a new Tap Mirror.\n"},"projectId":{"type":"string","description":"Id of the OpenStack project.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an endpoint group. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\ngroup.\n"},"remoteIp":{"type":"string","description":"The remote IP of the Tap Mirror, this will be the remote\nend of the GRE or ERSPAN v1 tunnel. Changing this creates a new Tap Mirror.\n"},"tenantId":{"type":"string","description":"The owner of the Tap Mirror. Required if admin wants to\ncreate a Tap Mirror for another project. Changing this creates a new Tap Mirror.\n"}},"required":["directions","mirrorType","name","portId","projectId","region","remoteIp","tenantId"],"inputProperties":{"description":{"type":"string","description":"The human-readable description for the Tap Mirror.\nChanging this updates the description of the existing Tap Mirror.\n"},"directions":{"$ref":"#/types/openstack:index/TaasTapMirrorV2Directions:TaasTapMirrorV2Directions","description":"A block declaring the directions to be mirrored and their\nidentifiers. One block has to be declared with at least one direction. Changing\nthis creates a new Tap Mirror.\n","willReplaceOnChanges":true},"mirrorType":{"type":"string","description":"The type of the mirroring, can be \u003cspan pulumi-lang-nodejs=\"`gre`\" pulumi-lang-dotnet=\"`Gre`\" pulumi-lang-go=\"`gre`\" pulumi-lang-python=\"`gre`\" pulumi-lang-yaml=\"`gre`\" pulumi-lang-java=\"`gre`\"\u003e`gre`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`erspanv1`\" pulumi-lang-dotnet=\"`Erspanv1`\" pulumi-lang-go=\"`erspanv1`\" pulumi-lang-python=\"`erspanv1`\" pulumi-lang-yaml=\"`erspanv1`\" pulumi-lang-java=\"`erspanv1`\"\u003e`erspanv1`\u003c/span\u003e.\nChanging this creates a new Tap Mirror.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"The name of the Tap Mirror. Changing this updates the name of\nthe existing Tap Mirror.\n"},"portId":{"type":"string","description":"The Port ID of the Tap Mirror, this will be the source of\nthe mirrored traffic, and this traffic will be tunneled into the GRE or ERSPAN\nv1 tunnel. The tunnel itself is not starting from this port. Changing this\ncreates a new Tap Mirror.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an endpoint group. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\ngroup.\n","willReplaceOnChanges":true},"remoteIp":{"type":"string","description":"The remote IP of the Tap Mirror, this will be the remote\nend of the GRE or ERSPAN v1 tunnel. Changing this creates a new Tap Mirror.\n","willReplaceOnChanges":true},"tenantId":{"type":"string","description":"The owner of the Tap Mirror. Required if admin wants to\ncreate a Tap Mirror for another project. Changing this creates a new Tap Mirror.\n","willReplaceOnChanges":true}},"requiredInputs":["directions","mirrorType","portId","remoteIp"],"stateInputs":{"description":"Input properties used for looking up and filtering TaasTapMirrorV2 resources.\n","properties":{"description":{"type":"string","description":"The human-readable description for the Tap Mirror.\nChanging this updates the description of the existing Tap Mirror.\n"},"directions":{"$ref":"#/types/openstack:index/TaasTapMirrorV2Directions:TaasTapMirrorV2Directions","description":"A block declaring the directions to be mirrored and their\nidentifiers. One block has to be declared with at least one direction. Changing\nthis creates a new Tap Mirror.\n","willReplaceOnChanges":true},"mirrorType":{"type":"string","description":"The type of the mirroring, can be \u003cspan pulumi-lang-nodejs=\"`gre`\" pulumi-lang-dotnet=\"`Gre`\" pulumi-lang-go=\"`gre`\" pulumi-lang-python=\"`gre`\" pulumi-lang-yaml=\"`gre`\" pulumi-lang-java=\"`gre`\"\u003e`gre`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`erspanv1`\" pulumi-lang-dotnet=\"`Erspanv1`\" pulumi-lang-go=\"`erspanv1`\" pulumi-lang-python=\"`erspanv1`\" pulumi-lang-yaml=\"`erspanv1`\" pulumi-lang-java=\"`erspanv1`\"\u003e`erspanv1`\u003c/span\u003e.\nChanging this creates a new Tap Mirror.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"The name of the Tap Mirror. Changing this updates the name of\nthe existing Tap Mirror.\n"},"portId":{"type":"string","description":"The Port ID of the Tap Mirror, this will be the source of\nthe mirrored traffic, and this traffic will be tunneled into the GRE or ERSPAN\nv1 tunnel. The tunnel itself is not starting from this port. Changing this\ncreates a new Tap Mirror.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"Id of the OpenStack project.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an endpoint group. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\ngroup.\n","willReplaceOnChanges":true},"remoteIp":{"type":"string","description":"The remote IP of the Tap Mirror, this will be the remote\nend of the GRE or ERSPAN v1 tunnel. Changing this creates a new Tap Mirror.\n","willReplaceOnChanges":true},"tenantId":{"type":"string","description":"The owner of the Tap Mirror. Required if admin wants to\ncreate a Tap Mirror for another project. Changing this creates a new Tap Mirror.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:keymanager/containerV1:ContainerV1":{"description":"Manages a V1 Barbican container resource within OpenStack.\n\n## Example Usage\n\n### Simple container\n\nA container with the TLS certificates.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\nimport * as std from \"@pulumi/std\";\n\nconst certificate1 = new openstack.keymanager.SecretV1(\"certificate_1\", {\n    name: \"certificate\",\n    payload: std.file({\n        input: \"cert.pem\",\n    }).then(invoke =\u003e invoke.result),\n    secretType: \"certificate\",\n    payloadContentType: \"text/plain\",\n});\nconst privateKey1 = new openstack.keymanager.SecretV1(\"private_key_1\", {\n    name: \"private_key\",\n    payload: std.file({\n        input: \"cert-key.pem\",\n    }).then(invoke =\u003e invoke.result),\n    secretType: \"private\",\n    payloadContentType: \"text/plain\",\n});\nconst intermediate1 = new openstack.keymanager.SecretV1(\"intermediate_1\", {\n    name: \"intermediate\",\n    payload: std.file({\n        input: \"intermediate-ca.pem\",\n    }).then(invoke =\u003e invoke.result),\n    secretType: \"certificate\",\n    payloadContentType: \"text/plain\",\n});\nconst tls1 = new openstack.keymanager.ContainerV1(\"tls_1\", {\n    name: \"tls\",\n    type: \"certificate\",\n    secretRefs: [\n        {\n            name: \"certificate\",\n            secretRef: certificate1.secretRef,\n        },\n        {\n            name: \"private_key\",\n            secretRef: privateKey1.secretRef,\n        },\n        {\n            name: \"intermediates\",\n            secretRef: intermediate1.secretRef,\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\nimport pulumi_std as std\n\ncertificate1 = openstack.keymanager.SecretV1(\"certificate_1\",\n    name=\"certificate\",\n    payload=std.file(input=\"cert.pem\").result,\n    secret_type=\"certificate\",\n    payload_content_type=\"text/plain\")\nprivate_key1 = openstack.keymanager.SecretV1(\"private_key_1\",\n    name=\"private_key\",\n    payload=std.file(input=\"cert-key.pem\").result,\n    secret_type=\"private\",\n    payload_content_type=\"text/plain\")\nintermediate1 = openstack.keymanager.SecretV1(\"intermediate_1\",\n    name=\"intermediate\",\n    payload=std.file(input=\"intermediate-ca.pem\").result,\n    secret_type=\"certificate\",\n    payload_content_type=\"text/plain\")\ntls1 = openstack.keymanager.ContainerV1(\"tls_1\",\n    name=\"tls\",\n    type=\"certificate\",\n    secret_refs=[\n        {\n            \"name\": \"certificate\",\n            \"secret_ref\": certificate1.secret_ref,\n        },\n        {\n            \"name\": \"private_key\",\n            \"secret_ref\": private_key1.secret_ref,\n        },\n        {\n            \"name\": \"intermediates\",\n            \"secret_ref\": intermediate1.secret_ref,\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var certificate1 = new OpenStack.KeyManager.SecretV1(\"certificate_1\", new()\n    {\n        Name = \"certificate\",\n        Payload = Std.File.Invoke(new()\n        {\n            Input = \"cert.pem\",\n        }).Apply(invoke =\u003e invoke.Result),\n        SecretType = \"certificate\",\n        PayloadContentType = \"text/plain\",\n    });\n\n    var privateKey1 = new OpenStack.KeyManager.SecretV1(\"private_key_1\", new()\n    {\n        Name = \"private_key\",\n        Payload = Std.File.Invoke(new()\n        {\n            Input = \"cert-key.pem\",\n        }).Apply(invoke =\u003e invoke.Result),\n        SecretType = \"private\",\n        PayloadContentType = \"text/plain\",\n    });\n\n    var intermediate1 = new OpenStack.KeyManager.SecretV1(\"intermediate_1\", new()\n    {\n        Name = \"intermediate\",\n        Payload = Std.File.Invoke(new()\n        {\n            Input = \"intermediate-ca.pem\",\n        }).Apply(invoke =\u003e invoke.Result),\n        SecretType = \"certificate\",\n        PayloadContentType = \"text/plain\",\n    });\n\n    var tls1 = new OpenStack.KeyManager.ContainerV1(\"tls_1\", new()\n    {\n        Name = \"tls\",\n        Type = \"certificate\",\n        SecretRefs = new[]\n        {\n            new OpenStack.KeyManager.Inputs.ContainerV1SecretRefArgs\n            {\n                Name = \"certificate\",\n                SecretRef = certificate1.SecretRef,\n            },\n            new OpenStack.KeyManager.Inputs.ContainerV1SecretRefArgs\n            {\n                Name = \"private_key\",\n                SecretRef = privateKey1.SecretRef,\n            },\n            new OpenStack.KeyManager.Inputs.ContainerV1SecretRefArgs\n            {\n                Name = \"intermediates\",\n                SecretRef = intermediate1.SecretRef,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/keymanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcertificate1, err := keymanager.NewSecretV1(ctx, \"certificate_1\", \u0026keymanager.SecretV1Args{\n\t\t\tName:               pulumi.String(\"certificate\"),\n\t\t\tPayload:            pulumi.String(invokeFile.Result),\n\t\t\tSecretType:         pulumi.String(\"certificate\"),\n\t\t\tPayloadContentType: pulumi.String(\"text/plain\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"cert-key.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateKey1, err := keymanager.NewSecretV1(ctx, \"private_key_1\", \u0026keymanager.SecretV1Args{\n\t\t\tName:               pulumi.String(\"private_key\"),\n\t\t\tPayload:            pulumi.String(invokeFile1.Result),\n\t\t\tSecretType:         pulumi.String(\"private\"),\n\t\t\tPayloadContentType: pulumi.String(\"text/plain\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile2, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"intermediate-ca.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tintermediate1, err := keymanager.NewSecretV1(ctx, \"intermediate_1\", \u0026keymanager.SecretV1Args{\n\t\t\tName:               pulumi.String(\"intermediate\"),\n\t\t\tPayload:            pulumi.String(invokeFile2.Result),\n\t\t\tSecretType:         pulumi.String(\"certificate\"),\n\t\t\tPayloadContentType: pulumi.String(\"text/plain\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = keymanager.NewContainerV1(ctx, \"tls_1\", \u0026keymanager.ContainerV1Args{\n\t\t\tName: pulumi.String(\"tls\"),\n\t\t\tType: pulumi.String(\"certificate\"),\n\t\t\tSecretRefs: keymanager.ContainerV1SecretRefArray{\n\t\t\t\t\u0026keymanager.ContainerV1SecretRefArgs{\n\t\t\t\t\tName:      pulumi.String(\"certificate\"),\n\t\t\t\t\tSecretRef: certificate1.SecretRef,\n\t\t\t\t},\n\t\t\t\t\u0026keymanager.ContainerV1SecretRefArgs{\n\t\t\t\t\tName:      pulumi.String(\"private_key\"),\n\t\t\t\t\tSecretRef: privateKey1.SecretRef,\n\t\t\t\t},\n\t\t\t\t\u0026keymanager.ContainerV1SecretRefArgs{\n\t\t\t\t\tName:      pulumi.String(\"intermediates\"),\n\t\t\t\t\tSecretRef: intermediate1.SecretRef,\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.openstack.keymanager.SecretV1;\nimport com.pulumi.openstack.keymanager.SecretV1Args;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FileArgs;\nimport com.pulumi.openstack.keymanager.ContainerV1;\nimport com.pulumi.openstack.keymanager.ContainerV1Args;\nimport com.pulumi.openstack.keymanager.inputs.ContainerV1SecretRefArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 certificate1 = new SecretV1(\"certificate1\", SecretV1Args.builder()\n            .name(\"certificate\")\n            .payload(StdFunctions.file(FileArgs.builder()\n                .input(\"cert.pem\")\n                .build()).result())\n            .secretType(\"certificate\")\n            .payloadContentType(\"text/plain\")\n            .build());\n\n        var privateKey1 = new SecretV1(\"privateKey1\", SecretV1Args.builder()\n            .name(\"private_key\")\n            .payload(StdFunctions.file(FileArgs.builder()\n                .input(\"cert-key.pem\")\n                .build()).result())\n            .secretType(\"private\")\n            .payloadContentType(\"text/plain\")\n            .build());\n\n        var intermediate1 = new SecretV1(\"intermediate1\", SecretV1Args.builder()\n            .name(\"intermediate\")\n            .payload(StdFunctions.file(FileArgs.builder()\n                .input(\"intermediate-ca.pem\")\n                .build()).result())\n            .secretType(\"certificate\")\n            .payloadContentType(\"text/plain\")\n            .build());\n\n        var tls1 = new ContainerV1(\"tls1\", ContainerV1Args.builder()\n            .name(\"tls\")\n            .type(\"certificate\")\n            .secretRefs(            \n                ContainerV1SecretRefArgs.builder()\n                    .name(\"certificate\")\n                    .secretRef(certificate1.secretRef())\n                    .build(),\n                ContainerV1SecretRefArgs.builder()\n                    .name(\"private_key\")\n                    .secretRef(privateKey1.secretRef())\n                    .build(),\n                ContainerV1SecretRefArgs.builder()\n                    .name(\"intermediates\")\n                    .secretRef(intermediate1.secretRef())\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  certificate1:\n    type: openstack:keymanager:SecretV1\n    name: certificate_1\n    properties:\n      name: certificate\n      payload:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: cert.pem\n          return: result\n      secretType: certificate\n      payloadContentType: text/plain\n  privateKey1:\n    type: openstack:keymanager:SecretV1\n    name: private_key_1\n    properties:\n      name: private_key\n      payload:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: cert-key.pem\n          return: result\n      secretType: private\n      payloadContentType: text/plain\n  intermediate1:\n    type: openstack:keymanager:SecretV1\n    name: intermediate_1\n    properties:\n      name: intermediate\n      payload:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: intermediate-ca.pem\n          return: result\n      secretType: certificate\n      payloadContentType: text/plain\n  tls1:\n    type: openstack:keymanager:ContainerV1\n    name: tls_1\n    properties:\n      name: tls\n      type: certificate\n      secretRefs:\n        - name: certificate\n          secretRef: ${certificate1.secretRef}\n        - name: private_key\n          secretRef: ${privateKey1.secretRef}\n        - name: intermediates\n          secretRef: ${intermediate1.secretRef}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Container with the ACL\n\n\u003e **Note** Only read ACLs are supported\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst tls1 = new openstack.keymanager.ContainerV1(\"tls_1\", {\n    name: \"tls\",\n    type: \"certificate\",\n    secretRefs: [\n        {\n            name: \"certificate\",\n            secretRef: certificate1.secretRef,\n        },\n        {\n            name: \"private_key\",\n            secretRef: privateKey1.secretRef,\n        },\n        {\n            name: \"intermediates\",\n            secretRef: intermediate1.secretRef,\n        },\n    ],\n    acl: {\n        read: {\n            projectAccess: false,\n            users: [\n                \"userid1\",\n                \"userid2\",\n            ],\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\ntls1 = openstack.keymanager.ContainerV1(\"tls_1\",\n    name=\"tls\",\n    type=\"certificate\",\n    secret_refs=[\n        {\n            \"name\": \"certificate\",\n            \"secret_ref\": certificate1[\"secretRef\"],\n        },\n        {\n            \"name\": \"private_key\",\n            \"secret_ref\": private_key1[\"secretRef\"],\n        },\n        {\n            \"name\": \"intermediates\",\n            \"secret_ref\": intermediate1[\"secretRef\"],\n        },\n    ],\n    acl={\n        \"read\": {\n            \"project_access\": False,\n            \"users\": [\n                \"userid1\",\n                \"userid2\",\n            ],\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var tls1 = new OpenStack.KeyManager.ContainerV1(\"tls_1\", new()\n    {\n        Name = \"tls\",\n        Type = \"certificate\",\n        SecretRefs = new[]\n        {\n            new OpenStack.KeyManager.Inputs.ContainerV1SecretRefArgs\n            {\n                Name = \"certificate\",\n                SecretRef = certificate1.SecretRef,\n            },\n            new OpenStack.KeyManager.Inputs.ContainerV1SecretRefArgs\n            {\n                Name = \"private_key\",\n                SecretRef = privateKey1.SecretRef,\n            },\n            new OpenStack.KeyManager.Inputs.ContainerV1SecretRefArgs\n            {\n                Name = \"intermediates\",\n                SecretRef = intermediate1.SecretRef,\n            },\n        },\n        Acl = new OpenStack.KeyManager.Inputs.ContainerV1AclArgs\n        {\n            Read = new OpenStack.KeyManager.Inputs.ContainerV1AclReadArgs\n            {\n                ProjectAccess = false,\n                Users = new[]\n                {\n                    \"userid1\",\n                    \"userid2\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/keymanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := keymanager.NewContainerV1(ctx, \"tls_1\", \u0026keymanager.ContainerV1Args{\n\t\t\tName: pulumi.String(\"tls\"),\n\t\t\tType: pulumi.String(\"certificate\"),\n\t\t\tSecretRefs: keymanager.ContainerV1SecretRefArray{\n\t\t\t\t\u0026keymanager.ContainerV1SecretRefArgs{\n\t\t\t\t\tName:      pulumi.String(\"certificate\"),\n\t\t\t\t\tSecretRef: pulumi.Any(certificate1.SecretRef),\n\t\t\t\t},\n\t\t\t\t\u0026keymanager.ContainerV1SecretRefArgs{\n\t\t\t\t\tName:      pulumi.String(\"private_key\"),\n\t\t\t\t\tSecretRef: pulumi.Any(privateKey1.SecretRef),\n\t\t\t\t},\n\t\t\t\t\u0026keymanager.ContainerV1SecretRefArgs{\n\t\t\t\t\tName:      pulumi.String(\"intermediates\"),\n\t\t\t\t\tSecretRef: pulumi.Any(intermediate1.SecretRef),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAcl: \u0026keymanager.ContainerV1AclArgs{\n\t\t\t\tRead: \u0026keymanager.ContainerV1AclReadArgs{\n\t\t\t\t\tProjectAccess: pulumi.Bool(false),\n\t\t\t\t\tUsers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"userid1\"),\n\t\t\t\t\t\tpulumi.String(\"userid2\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openstack.keymanager.ContainerV1;\nimport com.pulumi.openstack.keymanager.ContainerV1Args;\nimport com.pulumi.openstack.keymanager.inputs.ContainerV1SecretRefArgs;\nimport com.pulumi.openstack.keymanager.inputs.ContainerV1AclArgs;\nimport com.pulumi.openstack.keymanager.inputs.ContainerV1AclReadArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 tls1 = new ContainerV1(\"tls1\", ContainerV1Args.builder()\n            .name(\"tls\")\n            .type(\"certificate\")\n            .secretRefs(            \n                ContainerV1SecretRefArgs.builder()\n                    .name(\"certificate\")\n                    .secretRef(certificate1.secretRef())\n                    .build(),\n                ContainerV1SecretRefArgs.builder()\n                    .name(\"private_key\")\n                    .secretRef(privateKey1.secretRef())\n                    .build(),\n                ContainerV1SecretRefArgs.builder()\n                    .name(\"intermediates\")\n                    .secretRef(intermediate1.secretRef())\n                    .build())\n            .acl(ContainerV1AclArgs.builder()\n                .read(ContainerV1AclReadArgs.builder()\n                    .projectAccess(false)\n                    .users(                    \n                        \"userid1\",\n                        \"userid2\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  tls1:\n    type: openstack:keymanager:ContainerV1\n    name: tls_1\n    properties:\n      name: tls\n      type: certificate\n      secretRefs:\n        - name: certificate\n          secretRef: ${certificate1.secretRef}\n        - name: private_key\n          secretRef: ${privateKey1.secretRef}\n        - name: intermediates\n          secretRef: ${intermediate1.secretRef}\n      acl:\n        read:\n          projectAccess: false\n          users:\n            - userid1\n            - userid2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nContainers can be imported using the container id (the last part of the container reference), e.g.:\n\n```sh\n$ pulumi import openstack:keymanager/containerV1:ContainerV1 container_1 0c6cd26a-c012-4d7b-8034-057c0f1c2953\n```\n","properties":{"acl":{"$ref":"#/types/openstack:keymanager/ContainerV1Acl:ContainerV1Acl","description":"Allows to control an access to a container. Currently only\nthe \u003cspan pulumi-lang-nodejs=\"`read`\" pulumi-lang-dotnet=\"`Read`\" pulumi-lang-go=\"`read`\" pulumi-lang-python=\"`read`\" pulumi-lang-yaml=\"`read`\" pulumi-lang-java=\"`read`\"\u003e`read`\u003c/span\u003e operation is supported. If not specified, the container is\naccessible project wide. The \u003cspan pulumi-lang-nodejs=\"`read`\" pulumi-lang-dotnet=\"`Read`\" pulumi-lang-go=\"`read`\" pulumi-lang-python=\"`read`\" pulumi-lang-yaml=\"`read`\" pulumi-lang-java=\"`read`\"\u003e`read`\u003c/span\u003e structure is described below.\n"},"consumers":{"type":"array","items":{"$ref":"#/types/openstack:keymanager/ContainerV1Consumer:ContainerV1Consumer"},"description":"The list of the container consumers. The structure is described below.\n"},"containerRef":{"type":"string","description":"The container reference / where to find the container.\n"},"createdAt":{"type":"string","description":"The date the container was created.\n"},"creatorId":{"type":"string","description":"The creator of the container.\n"},"name":{"type":"string","description":"Human-readable name for the Container. Does not have\nto be unique.\n"},"region":{"type":"string","description":"The region in which to obtain the V1 KeyManager client.\nA KeyManager client is needed to create a container. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nV1 container.\n"},"secretRefs":{"type":"array","items":{"$ref":"#/types/openstack:keymanager/ContainerV1SecretRef:ContainerV1SecretRef"},"description":"A set of dictionaries containing references to secrets. The structure is described\nbelow.\n"},"status":{"type":"string","description":"The status of the container.\n"},"type":{"type":"string","description":"Used to indicate the type of container. Must be one of \u003cspan pulumi-lang-nodejs=\"`generic`\" pulumi-lang-dotnet=\"`Generic`\" pulumi-lang-go=\"`generic`\" pulumi-lang-python=\"`generic`\" pulumi-lang-yaml=\"`generic`\" pulumi-lang-java=\"`generic`\"\u003e`generic`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`rsa`\" pulumi-lang-dotnet=\"`Rsa`\" pulumi-lang-go=\"`rsa`\" pulumi-lang-python=\"`rsa`\" pulumi-lang-yaml=\"`rsa`\" pulumi-lang-java=\"`rsa`\"\u003e`rsa`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`certificate`\" pulumi-lang-dotnet=\"`Certificate`\" pulumi-lang-go=\"`certificate`\" pulumi-lang-python=\"`certificate`\" pulumi-lang-yaml=\"`certificate`\" pulumi-lang-java=\"`certificate`\"\u003e`certificate`\u003c/span\u003e.\n"},"updatedAt":{"type":"string","description":"The date the container was last updated.\n"}},"required":["acl","consumers","containerRef","createdAt","creatorId","name","region","status","type","updatedAt"],"inputProperties":{"acl":{"$ref":"#/types/openstack:keymanager/ContainerV1Acl:ContainerV1Acl","description":"Allows to control an access to a container. Currently only\nthe \u003cspan pulumi-lang-nodejs=\"`read`\" pulumi-lang-dotnet=\"`Read`\" pulumi-lang-go=\"`read`\" pulumi-lang-python=\"`read`\" pulumi-lang-yaml=\"`read`\" pulumi-lang-java=\"`read`\"\u003e`read`\u003c/span\u003e operation is supported. If not specified, the container is\naccessible project wide. The \u003cspan pulumi-lang-nodejs=\"`read`\" pulumi-lang-dotnet=\"`Read`\" pulumi-lang-go=\"`read`\" pulumi-lang-python=\"`read`\" pulumi-lang-yaml=\"`read`\" pulumi-lang-java=\"`read`\"\u003e`read`\u003c/span\u003e structure is described below.\n"},"name":{"type":"string","description":"Human-readable name for the Container. Does not have\nto be unique.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V1 KeyManager client.\nA KeyManager client is needed to create a container. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nV1 container.\n","willReplaceOnChanges":true},"secretRefs":{"type":"array","items":{"$ref":"#/types/openstack:keymanager/ContainerV1SecretRef:ContainerV1SecretRef"},"description":"A set of dictionaries containing references to secrets. The structure is described\nbelow.\n"},"type":{"type":"string","description":"Used to indicate the type of container. Must be one of \u003cspan pulumi-lang-nodejs=\"`generic`\" pulumi-lang-dotnet=\"`Generic`\" pulumi-lang-go=\"`generic`\" pulumi-lang-python=\"`generic`\" pulumi-lang-yaml=\"`generic`\" pulumi-lang-java=\"`generic`\"\u003e`generic`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`rsa`\" pulumi-lang-dotnet=\"`Rsa`\" pulumi-lang-go=\"`rsa`\" pulumi-lang-python=\"`rsa`\" pulumi-lang-yaml=\"`rsa`\" pulumi-lang-java=\"`rsa`\"\u003e`rsa`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`certificate`\" pulumi-lang-dotnet=\"`Certificate`\" pulumi-lang-go=\"`certificate`\" pulumi-lang-python=\"`certificate`\" pulumi-lang-yaml=\"`certificate`\" pulumi-lang-java=\"`certificate`\"\u003e`certificate`\u003c/span\u003e.\n","willReplaceOnChanges":true}},"requiredInputs":["type"],"stateInputs":{"description":"Input properties used for looking up and filtering ContainerV1 resources.\n","properties":{"acl":{"$ref":"#/types/openstack:keymanager/ContainerV1Acl:ContainerV1Acl","description":"Allows to control an access to a container. Currently only\nthe \u003cspan pulumi-lang-nodejs=\"`read`\" pulumi-lang-dotnet=\"`Read`\" pulumi-lang-go=\"`read`\" pulumi-lang-python=\"`read`\" pulumi-lang-yaml=\"`read`\" pulumi-lang-java=\"`read`\"\u003e`read`\u003c/span\u003e operation is supported. If not specified, the container is\naccessible project wide. The \u003cspan pulumi-lang-nodejs=\"`read`\" pulumi-lang-dotnet=\"`Read`\" pulumi-lang-go=\"`read`\" pulumi-lang-python=\"`read`\" pulumi-lang-yaml=\"`read`\" pulumi-lang-java=\"`read`\"\u003e`read`\u003c/span\u003e structure is described below.\n"},"consumers":{"type":"array","items":{"$ref":"#/types/openstack:keymanager/ContainerV1Consumer:ContainerV1Consumer"},"description":"The list of the container consumers. The structure is described below.\n"},"containerRef":{"type":"string","description":"The container reference / where to find the container.\n"},"createdAt":{"type":"string","description":"The date the container was created.\n"},"creatorId":{"type":"string","description":"The creator of the container.\n"},"name":{"type":"string","description":"Human-readable name for the Container. Does not have\nto be unique.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V1 KeyManager client.\nA KeyManager client is needed to create a container. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nV1 container.\n","willReplaceOnChanges":true},"secretRefs":{"type":"array","items":{"$ref":"#/types/openstack:keymanager/ContainerV1SecretRef:ContainerV1SecretRef"},"description":"A set of dictionaries containing references to secrets. The structure is described\nbelow.\n"},"status":{"type":"string","description":"The status of the container.\n"},"type":{"type":"string","description":"Used to indicate the type of container. Must be one of \u003cspan pulumi-lang-nodejs=\"`generic`\" pulumi-lang-dotnet=\"`Generic`\" pulumi-lang-go=\"`generic`\" pulumi-lang-python=\"`generic`\" pulumi-lang-yaml=\"`generic`\" pulumi-lang-java=\"`generic`\"\u003e`generic`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`rsa`\" pulumi-lang-dotnet=\"`Rsa`\" pulumi-lang-go=\"`rsa`\" pulumi-lang-python=\"`rsa`\" pulumi-lang-yaml=\"`rsa`\" pulumi-lang-java=\"`rsa`\"\u003e`rsa`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`certificate`\" pulumi-lang-dotnet=\"`Certificate`\" pulumi-lang-go=\"`certificate`\" pulumi-lang-python=\"`certificate`\" pulumi-lang-yaml=\"`certificate`\" pulumi-lang-java=\"`certificate`\"\u003e`certificate`\u003c/span\u003e.\n","willReplaceOnChanges":true},"updatedAt":{"type":"string","description":"The date the container was last updated.\n"}},"type":"object"}},"openstack:keymanager/orderV1:OrderV1":{"description":"Manages a V1 Barbican order resource within OpenStack.\n\n## Example Usage\n\n### Symmetric key order\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst order1 = new openstack.keymanager.OrderV1(\"order_1\", {\n    type: \"key\",\n    meta: {\n        algorithm: \"aes\",\n        bitLength: 256,\n        name: \"mysecret\",\n        mode: \"cbc\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\norder1 = openstack.keymanager.OrderV1(\"order_1\",\n    type=\"key\",\n    meta={\n        \"algorithm\": \"aes\",\n        \"bit_length\": 256,\n        \"name\": \"mysecret\",\n        \"mode\": \"cbc\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var order1 = new OpenStack.KeyManager.OrderV1(\"order_1\", new()\n    {\n        Type = \"key\",\n        Meta = new OpenStack.KeyManager.Inputs.OrderV1MetaArgs\n        {\n            Algorithm = \"aes\",\n            BitLength = 256,\n            Name = \"mysecret\",\n            Mode = \"cbc\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/keymanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := keymanager.NewOrderV1(ctx, \"order_1\", \u0026keymanager.OrderV1Args{\n\t\t\tType: pulumi.String(\"key\"),\n\t\t\tMeta: \u0026keymanager.OrderV1MetaArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"aes\"),\n\t\t\t\tBitLength: pulumi.Int(256),\n\t\t\t\tName:      pulumi.String(\"mysecret\"),\n\t\t\t\tMode:      pulumi.String(\"cbc\"),\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.openstack.keymanager.OrderV1;\nimport com.pulumi.openstack.keymanager.OrderV1Args;\nimport com.pulumi.openstack.keymanager.inputs.OrderV1MetaArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 order1 = new OrderV1(\"order1\", OrderV1Args.builder()\n            .type(\"key\")\n            .meta(OrderV1MetaArgs.builder()\n                .algorithm(\"aes\")\n                .bitLength(256)\n                .name(\"mysecret\")\n                .mode(\"cbc\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  order1:\n    type: openstack:keymanager:OrderV1\n    name: order_1\n    properties:\n      type: key\n      meta:\n        algorithm: aes\n        bitLength: 256\n        name: mysecret\n        mode: cbc\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Asymmetric key pair order\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst order1 = new openstack.keymanager.OrderV1(\"order_1\", {\n    type: \"asymmetric\",\n    meta: {\n        algorithm: \"rsa\",\n        bitLength: 4096,\n        name: \"mysecret\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\norder1 = openstack.keymanager.OrderV1(\"order_1\",\n    type=\"asymmetric\",\n    meta={\n        \"algorithm\": \"rsa\",\n        \"bit_length\": 4096,\n        \"name\": \"mysecret\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var order1 = new OpenStack.KeyManager.OrderV1(\"order_1\", new()\n    {\n        Type = \"asymmetric\",\n        Meta = new OpenStack.KeyManager.Inputs.OrderV1MetaArgs\n        {\n            Algorithm = \"rsa\",\n            BitLength = 4096,\n            Name = \"mysecret\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/keymanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := keymanager.NewOrderV1(ctx, \"order_1\", \u0026keymanager.OrderV1Args{\n\t\t\tType: pulumi.String(\"asymmetric\"),\n\t\t\tMeta: \u0026keymanager.OrderV1MetaArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"rsa\"),\n\t\t\t\tBitLength: pulumi.Int(4096),\n\t\t\t\tName:      pulumi.String(\"mysecret\"),\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.openstack.keymanager.OrderV1;\nimport com.pulumi.openstack.keymanager.OrderV1Args;\nimport com.pulumi.openstack.keymanager.inputs.OrderV1MetaArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 order1 = new OrderV1(\"order1\", OrderV1Args.builder()\n            .type(\"asymmetric\")\n            .meta(OrderV1MetaArgs.builder()\n                .algorithm(\"rsa\")\n                .bitLength(4096)\n                .name(\"mysecret\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  order1:\n    type: openstack:keymanager:OrderV1\n    name: order_1\n    properties:\n      type: asymmetric\n      meta:\n        algorithm: rsa\n        bitLength: 4096\n        name: mysecret\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nOrders can be imported using the order id (the last part of the order reference), e.g.:\n\n```sh\n$ pulumi import openstack:keymanager/orderV1:OrderV1 order_1 0c6cd26a-c012-4d7b-8034-057c0f1c2953\n```\n","properties":{"containerRef":{"type":"string","description":"The container reference / where to find the container.\n"},"created":{"type":"string","description":"The date the order was created.\n"},"creatorId":{"type":"string","description":"The creator of the order.\n"},"meta":{"$ref":"#/types/openstack:keymanager/OrderV1Meta:OrderV1Meta","description":"Dictionary containing the order metadata used to generate the order. The structure is described below.\n"},"orderRef":{"type":"string","description":"The order reference / where to find the order.\n"},"region":{"type":"string","description":"The region in which to obtain the V1 KeyManager client.\nA KeyManager client is needed to create a order. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nV1 order.\n"},"secretRef":{"type":"string","description":"The secret reference / where to find the secret.\n"},"status":{"type":"string","description":"The status of the order.\n"},"subStatus":{"type":"string","description":"The sub status of the order.\n"},"subStatusMessage":{"type":"string","description":"The sub status message of the order.\n"},"type":{"type":"string","description":"The type of key to be generated. Must be one of \u003cspan pulumi-lang-nodejs=\"`asymmetric`\" pulumi-lang-dotnet=\"`Asymmetric`\" pulumi-lang-go=\"`asymmetric`\" pulumi-lang-python=\"`asymmetric`\" pulumi-lang-yaml=\"`asymmetric`\" pulumi-lang-java=\"`asymmetric`\"\u003e`asymmetric`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e.\n"},"updated":{"type":"string","description":"The date the order was last updated.\n"}},"required":["containerRef","created","creatorId","meta","orderRef","region","secretRef","status","subStatus","subStatusMessage","type","updated"],"inputProperties":{"meta":{"$ref":"#/types/openstack:keymanager/OrderV1Meta:OrderV1Meta","description":"Dictionary containing the order metadata used to generate the order. The structure is described below.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V1 KeyManager client.\nA KeyManager client is needed to create a order. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nV1 order.\n","willReplaceOnChanges":true},"type":{"type":"string","description":"The type of key to be generated. Must be one of \u003cspan pulumi-lang-nodejs=\"`asymmetric`\" pulumi-lang-dotnet=\"`Asymmetric`\" pulumi-lang-go=\"`asymmetric`\" pulumi-lang-python=\"`asymmetric`\" pulumi-lang-yaml=\"`asymmetric`\" pulumi-lang-java=\"`asymmetric`\"\u003e`asymmetric`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e.\n","willReplaceOnChanges":true}},"requiredInputs":["meta","type"],"stateInputs":{"description":"Input properties used for looking up and filtering OrderV1 resources.\n","properties":{"containerRef":{"type":"string","description":"The container reference / where to find the container.\n"},"created":{"type":"string","description":"The date the order was created.\n"},"creatorId":{"type":"string","description":"The creator of the order.\n"},"meta":{"$ref":"#/types/openstack:keymanager/OrderV1Meta:OrderV1Meta","description":"Dictionary containing the order metadata used to generate the order. The structure is described below.\n","willReplaceOnChanges":true},"orderRef":{"type":"string","description":"The order reference / where to find the order.\n"},"region":{"type":"string","description":"The region in which to obtain the V1 KeyManager client.\nA KeyManager client is needed to create a order. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nV1 order.\n","willReplaceOnChanges":true},"secretRef":{"type":"string","description":"The secret reference / where to find the secret.\n"},"status":{"type":"string","description":"The status of the order.\n"},"subStatus":{"type":"string","description":"The sub status of the order.\n"},"subStatusMessage":{"type":"string","description":"The sub status message of the order.\n"},"type":{"type":"string","description":"The type of key to be generated. Must be one of \u003cspan pulumi-lang-nodejs=\"`asymmetric`\" pulumi-lang-dotnet=\"`Asymmetric`\" pulumi-lang-go=\"`asymmetric`\" pulumi-lang-python=\"`asymmetric`\" pulumi-lang-yaml=\"`asymmetric`\" pulumi-lang-java=\"`asymmetric`\"\u003e`asymmetric`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e.\n","willReplaceOnChanges":true},"updated":{"type":"string","description":"The date the order was last updated.\n"}},"type":"object"}},"openstack:keymanager/secretV1:SecretV1":{"description":"## Example Usage\n\n### Simple secret\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst secret1 = new openstack.keymanager.SecretV1(\"secret_1\", {\n    algorithm: \"aes\",\n    bitLength: 256,\n    mode: \"cbc\",\n    name: \"mysecret\",\n    payload: \"foobar\",\n    payloadContentType: \"text/plain\",\n    secretType: \"passphrase\",\n    metadata: {\n        key: \"foo\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nsecret1 = openstack.keymanager.SecretV1(\"secret_1\",\n    algorithm=\"aes\",\n    bit_length=256,\n    mode=\"cbc\",\n    name=\"mysecret\",\n    payload=\"foobar\",\n    payload_content_type=\"text/plain\",\n    secret_type=\"passphrase\",\n    metadata={\n        \"key\": \"foo\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var secret1 = new OpenStack.KeyManager.SecretV1(\"secret_1\", new()\n    {\n        Algorithm = \"aes\",\n        BitLength = 256,\n        Mode = \"cbc\",\n        Name = \"mysecret\",\n        Payload = \"foobar\",\n        PayloadContentType = \"text/plain\",\n        SecretType = \"passphrase\",\n        Metadata = \n        {\n            { \"key\", \"foo\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/keymanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := keymanager.NewSecretV1(ctx, \"secret_1\", \u0026keymanager.SecretV1Args{\n\t\t\tAlgorithm:          pulumi.String(\"aes\"),\n\t\t\tBitLength:          pulumi.Int(256),\n\t\t\tMode:               pulumi.String(\"cbc\"),\n\t\t\tName:               pulumi.String(\"mysecret\"),\n\t\t\tPayload:            pulumi.String(\"foobar\"),\n\t\t\tPayloadContentType: pulumi.String(\"text/plain\"),\n\t\t\tSecretType:         pulumi.String(\"passphrase\"),\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"key\": pulumi.String(\"foo\"),\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.openstack.keymanager.SecretV1;\nimport com.pulumi.openstack.keymanager.SecretV1Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 secret1 = new SecretV1(\"secret1\", SecretV1Args.builder()\n            .algorithm(\"aes\")\n            .bitLength(256)\n            .mode(\"cbc\")\n            .name(\"mysecret\")\n            .payload(\"foobar\")\n            .payloadContentType(\"text/plain\")\n            .secretType(\"passphrase\")\n            .metadata(Map.of(\"key\", \"foo\"))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  secret1:\n    type: openstack:keymanager:SecretV1\n    name: secret_1\n    properties:\n      algorithm: aes\n      bitLength: 256\n      mode: cbc\n      name: mysecret\n      payload: foobar\n      payloadContentType: text/plain\n      secretType: passphrase\n      metadata:\n        key: foo\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Secret with whitespaces\n\n\u003e **Note** If you want to store payload with leading or trailing whitespaces,\nit's recommended to store it in a base64 encoding. Plain text payload can also\nwork, but further addind or removing of the leading or trailing whitespaces\nwon't be detected as a state change, e.g. changing plain text payload from\n`password ` to \u003cspan pulumi-lang-nodejs=\"`password`\" pulumi-lang-dotnet=\"`Password`\" pulumi-lang-go=\"`password`\" pulumi-lang-python=\"`password`\" pulumi-lang-yaml=\"`password`\" pulumi-lang-java=\"`password`\"\u003e`password`\u003c/span\u003e won't recreate the secret.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\nimport * as std from \"@pulumi/std\";\n\nconst secret1 = new openstack.keymanager.SecretV1(\"secret_1\", {\n    name: \"password\",\n    payload: std.base64encode({\n        input: \"password with the whitespace at the end \",\n    }).then(invoke =\u003e invoke.result),\n    secretType: \"passphrase\",\n    payloadContentType: \"application/octet-stream\",\n    payloadContentEncoding: \"base64\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\nimport pulumi_std as std\n\nsecret1 = openstack.keymanager.SecretV1(\"secret_1\",\n    name=\"password\",\n    payload=std.base64encode(input=\"password with the whitespace at the end \").result,\n    secret_type=\"passphrase\",\n    payload_content_type=\"application/octet-stream\",\n    payload_content_encoding=\"base64\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var secret1 = new OpenStack.KeyManager.SecretV1(\"secret_1\", new()\n    {\n        Name = \"password\",\n        Payload = Std.Base64encode.Invoke(new()\n        {\n            Input = \"password with the whitespace at the end \",\n        }).Apply(invoke =\u003e invoke.Result),\n        SecretType = \"passphrase\",\n        PayloadContentType = \"application/octet-stream\",\n        PayloadContentEncoding = \"base64\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/keymanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"password with the whitespace at the end \",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = keymanager.NewSecretV1(ctx, \"secret_1\", \u0026keymanager.SecretV1Args{\n\t\t\tName:                   pulumi.String(\"password\"),\n\t\t\tPayload:                pulumi.String(invokeBase64encode.Result),\n\t\t\tSecretType:             pulumi.String(\"passphrase\"),\n\t\t\tPayloadContentType:     pulumi.String(\"application/octet-stream\"),\n\t\t\tPayloadContentEncoding: pulumi.String(\"base64\"),\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.openstack.keymanager.SecretV1;\nimport com.pulumi.openstack.keymanager.SecretV1Args;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.Base64encodeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 secret1 = new SecretV1(\"secret1\", SecretV1Args.builder()\n            .name(\"password\")\n            .payload(StdFunctions.base64encode(Base64encodeArgs.builder()\n                .input(\"password with the whitespace at the end \")\n                .build()).result())\n            .secretType(\"passphrase\")\n            .payloadContentType(\"application/octet-stream\")\n            .payloadContentEncoding(\"base64\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  secret1:\n    type: openstack:keymanager:SecretV1\n    name: secret_1\n    properties:\n      name: password\n      payload:\n        fn::invoke:\n          function: std:base64encode\n          arguments:\n            input: 'password with the whitespace at the end '\n          return: result\n      secretType: passphrase\n      payloadContentType: application/octet-stream\n      payloadContentEncoding: base64\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Secret with the expiration date\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\nimport * as std from \"@pulumi/std\";\n\nconst secret1 = new openstack.keymanager.SecretV1(\"secret_1\", {\n    name: \"certificate\",\n    payload: std.file({\n        input: \"certificate.pem\",\n    }).then(invoke =\u003e invoke.result),\n    secretType: \"certificate\",\n    payloadContentType: \"text/plain\",\n    expiration: Promise.all([std.timestamp({}), std.format({\n        input: \"%dh\",\n        args: [8760],\n    })]).then(([invoke, invoke1]) =\u003e std.timeadd({\n        duration: invoke.result,\n        timestamp: invoke1.result,\n    })).then(invoke =\u003e invoke.result),\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\nimport pulumi_std as std\n\nsecret1 = openstack.keymanager.SecretV1(\"secret_1\",\n    name=\"certificate\",\n    payload=std.file(input=\"certificate.pem\").result,\n    secret_type=\"certificate\",\n    payload_content_type=\"text/plain\",\n    expiration=std.timeadd(duration=std.timestamp().result,\n        timestamp=std.format(input=\"%dh\",\n            args=[8760]).result).result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var secret1 = new OpenStack.KeyManager.SecretV1(\"secret_1\", new()\n    {\n        Name = \"certificate\",\n        Payload = Std.File.Invoke(new()\n        {\n            Input = \"certificate.pem\",\n        }).Apply(invoke =\u003e invoke.Result),\n        SecretType = \"certificate\",\n        PayloadContentType = \"text/plain\",\n        Expiration = Output.Tuple(Std.Timestamp.Invoke(), Std.Format.Invoke(new()\n        {\n            Input = \"%dh\",\n            Args = new[]\n            {\n                8760,\n            },\n        })).Apply(values =\u003e\n        {\n            var invoke = values.Item1;\n            var invoke1 = values.Item2;\n            return Std.Timeadd.Invoke(new()\n            {\n                Duration = invoke.Result,\n                Timestamp = invoke1.Result,\n            });\n        }).Apply(invoke =\u003e invoke.Result),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/keymanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"certificate.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeTimeadd1, err := std.Timeadd(ctx, \u0026std.TimeaddArgs{\n\t\t\tDuration: std.Timestamp(ctx, \u0026std.TimestampArgs{}, nil).Result,\n\t\t\tTimestamp: std.Format(ctx, \u0026std.FormatArgs{\n\t\t\t\tInput: \"%dh\",\n\t\t\t\tArgs: []float64{\n\t\t\t\t\t8760,\n\t\t\t\t},\n\t\t\t}, nil).Result,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = keymanager.NewSecretV1(ctx, \"secret_1\", \u0026keymanager.SecretV1Args{\n\t\t\tName:               pulumi.String(\"certificate\"),\n\t\t\tPayload:            pulumi.String(invokeFile.Result),\n\t\t\tSecretType:         pulumi.String(\"certificate\"),\n\t\t\tPayloadContentType: pulumi.String(\"text/plain\"),\n\t\t\tExpiration:         pulumi.String(invokeTimeadd1.Result),\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.openstack.keymanager.SecretV1;\nimport com.pulumi.openstack.keymanager.SecretV1Args;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FileArgs;\nimport com.pulumi.std.inputs.TimestampArgs;\nimport com.pulumi.std.inputs.FormatArgs;\nimport com.pulumi.std.inputs.TimeaddArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 secret1 = new SecretV1(\"secret1\", SecretV1Args.builder()\n            .name(\"certificate\")\n            .payload(StdFunctions.file(FileArgs.builder()\n                .input(\"certificate.pem\")\n                .build()).result())\n            .secretType(\"certificate\")\n            .payloadContentType(\"text/plain\")\n            .expiration(StdFunctions.timeadd(TimeaddArgs.builder()\n                .duration(StdFunctions.timestamp(TimestampArgs.builder()\n                    .build()).result())\n                .timestamp(StdFunctions.format(FormatArgs.builder()\n                    .input(\"%dh\")\n                    .args(8760)\n                    .build()).result())\n                .build()).result())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  secret1:\n    type: openstack:keymanager:SecretV1\n    name: secret_1\n    properties:\n      name: certificate\n      payload:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: certificate.pem\n          return: result\n      secretType: certificate\n      payloadContentType: text/plain\n      expiration:\n        fn::invoke:\n          function: std:timeadd\n          arguments:\n            duration:\n              fn::invoke:\n                function: std:timestamp\n                arguments: {}\n                return: result\n            timestamp:\n              fn::invoke:\n                function: std:format\n                arguments:\n                  input: '%dh'\n                  args:\n                    - 8760\n                return: result\n          return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Secret with the ACL\n\n\u003e **Note** Only read ACLs are supported\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\nimport * as std from \"@pulumi/std\";\n\nconst secret1 = new openstack.keymanager.SecretV1(\"secret_1\", {\n    name: \"certificate\",\n    payload: std.file({\n        input: \"certificate.pem\",\n    }).then(invoke =\u003e invoke.result),\n    secretType: \"certificate\",\n    payloadContentType: \"text/plain\",\n    acl: {\n        read: {\n            projectAccess: false,\n            users: [\n                \"userid1\",\n                \"userid2\",\n            ],\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\nimport pulumi_std as std\n\nsecret1 = openstack.keymanager.SecretV1(\"secret_1\",\n    name=\"certificate\",\n    payload=std.file(input=\"certificate.pem\").result,\n    secret_type=\"certificate\",\n    payload_content_type=\"text/plain\",\n    acl={\n        \"read\": {\n            \"project_access\": False,\n            \"users\": [\n                \"userid1\",\n                \"userid2\",\n            ],\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var secret1 = new OpenStack.KeyManager.SecretV1(\"secret_1\", new()\n    {\n        Name = \"certificate\",\n        Payload = Std.File.Invoke(new()\n        {\n            Input = \"certificate.pem\",\n        }).Apply(invoke =\u003e invoke.Result),\n        SecretType = \"certificate\",\n        PayloadContentType = \"text/plain\",\n        Acl = new OpenStack.KeyManager.Inputs.SecretV1AclArgs\n        {\n            Read = new OpenStack.KeyManager.Inputs.SecretV1AclReadArgs\n            {\n                ProjectAccess = false,\n                Users = new[]\n                {\n                    \"userid1\",\n                    \"userid2\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/keymanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"certificate.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = keymanager.NewSecretV1(ctx, \"secret_1\", \u0026keymanager.SecretV1Args{\n\t\t\tName:               pulumi.String(\"certificate\"),\n\t\t\tPayload:            pulumi.String(invokeFile.Result),\n\t\t\tSecretType:         pulumi.String(\"certificate\"),\n\t\t\tPayloadContentType: pulumi.String(\"text/plain\"),\n\t\t\tAcl: \u0026keymanager.SecretV1AclArgs{\n\t\t\t\tRead: \u0026keymanager.SecretV1AclReadArgs{\n\t\t\t\t\tProjectAccess: pulumi.Bool(false),\n\t\t\t\t\tUsers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"userid1\"),\n\t\t\t\t\t\tpulumi.String(\"userid2\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openstack.keymanager.SecretV1;\nimport com.pulumi.openstack.keymanager.SecretV1Args;\nimport com.pulumi.openstack.keymanager.inputs.SecretV1AclArgs;\nimport com.pulumi.openstack.keymanager.inputs.SecretV1AclReadArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var secret1 = new SecretV1(\"secret1\", SecretV1Args.builder()\n            .name(\"certificate\")\n            .payload(StdFunctions.file(FileArgs.builder()\n                .input(\"certificate.pem\")\n                .build()).result())\n            .secretType(\"certificate\")\n            .payloadContentType(\"text/plain\")\n            .acl(SecretV1AclArgs.builder()\n                .read(SecretV1AclReadArgs.builder()\n                    .projectAccess(false)\n                    .users(                    \n                        \"userid1\",\n                        \"userid2\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  secret1:\n    type: openstack:keymanager:SecretV1\n    name: secret_1\n    properties:\n      name: certificate\n      payload:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: certificate.pem\n          return: result\n      secretType: certificate\n      payloadContentType: text/plain\n      acl:\n        read:\n          projectAccess: false\n          users:\n            - userid1\n            - userid2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSecrets can be imported using the secret id (the last part of the secret reference), e.g.:\n\n```sh\n$ pulumi import openstack:keymanager/secretV1:SecretV1 secret_1 8a7a79c2-cf17-4e65-b2ae-ddc8bfcf6c74\n```\n","properties":{"acl":{"$ref":"#/types/openstack:keymanager/SecretV1Acl:SecretV1Acl","description":"Allows to control an access to a secret. Currently only the\n\u003cspan pulumi-lang-nodejs=\"`read`\" pulumi-lang-dotnet=\"`Read`\" pulumi-lang-go=\"`read`\" pulumi-lang-python=\"`read`\" pulumi-lang-yaml=\"`read`\" pulumi-lang-java=\"`read`\"\u003e`read`\u003c/span\u003e operation is supported. If not specified, the secret is accessible\nproject wide.\n"},"algorithm":{"type":"string","description":"Metadata provided by a user or system for informational purposes.\n"},"allMetadata":{"type":"object","additionalProperties":{"type":"string"},"description":"The map of metadata, assigned on the secret, which has been\nexplicitly and implicitly added.\n"},"bitLength":{"type":"integer","description":"Metadata provided by a user or system for informational purposes.\n"},"contentTypes":{"type":"object","additionalProperties":{"type":"string"},"description":"The map of the content types, assigned on the secret.\n"},"createdAt":{"type":"string","description":"The date the secret was created.\n"},"creatorId":{"type":"string","description":"The creator of the secret.\n"},"expiration":{"type":"string","description":"The expiration time of the secret in the RFC3339 timestamp format (e.g. `2019-03-09T12:58:49Z`). If omitted, a secret will never expire. Changing this creates a new secret.\n"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"Additional Metadata for the secret.\n"},"mode":{"type":"string","description":"Metadata provided by a user or system for informational purposes.\n"},"name":{"type":"string","description":"Human-readable name for the Secret. Does not have\nto be unique.\n"},"payload":{"type":"string","description":"The secret's data to be stored. **payload\\_content\\_type** must also be supplied if **payload** is included.\n","secret":true},"payloadContentEncoding":{"type":"string","description":"(required if **payload** is encoded) The encoding used for the payload to be able to include it in the JSON request. Must be either \u003cspan pulumi-lang-nodejs=\"`base64`\" pulumi-lang-dotnet=\"`Base64`\" pulumi-lang-go=\"`base64`\" pulumi-lang-python=\"`base64`\" pulumi-lang-yaml=\"`base64`\" pulumi-lang-java=\"`base64`\"\u003e`base64`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`binary`\" pulumi-lang-dotnet=\"`Binary`\" pulumi-lang-go=\"`binary`\" pulumi-lang-python=\"`binary`\" pulumi-lang-yaml=\"`binary`\" pulumi-lang-java=\"`binary`\"\u003e`binary`\u003c/span\u003e.\n"},"payloadContentType":{"type":"string","description":"(required if **payload** is included) The media type for the content of the payload. Must be one of `text/plain`, `text/plain;charset=utf-8`, `text/plain; charset=utf-8`, `application/octet-stream`, `application/pkcs8`.\n"},"region":{"type":"string","description":"The region in which to obtain the V1 KeyManager client.\nA KeyManager client is needed to create a secret. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nV1 secret.\n"},"secretRef":{"type":"string","description":"The secret reference / where to find the secret.\n"},"secretType":{"type":"string","description":"Used to indicate the type of secret being stored. For more information see [Secret types](https://docs.openstack.org/barbican/latest/api/reference/secret_types.html).\n"},"status":{"type":"string","description":"The status of the secret.\n"},"updatedAt":{"type":"string","description":"The date the secret was last updated.\n"}},"required":["acl","algorithm","allMetadata","bitLength","contentTypes","createdAt","creatorId","mode","name","region","secretRef","secretType","status","updatedAt"],"inputProperties":{"acl":{"$ref":"#/types/openstack:keymanager/SecretV1Acl:SecretV1Acl","description":"Allows to control an access to a secret. Currently only the\n\u003cspan pulumi-lang-nodejs=\"`read`\" pulumi-lang-dotnet=\"`Read`\" pulumi-lang-go=\"`read`\" pulumi-lang-python=\"`read`\" pulumi-lang-yaml=\"`read`\" pulumi-lang-java=\"`read`\"\u003e`read`\u003c/span\u003e operation is supported. If not specified, the secret is accessible\nproject wide.\n"},"algorithm":{"type":"string","description":"Metadata provided by a user or system for informational purposes.\n","willReplaceOnChanges":true},"bitLength":{"type":"integer","description":"Metadata provided by a user or system for informational purposes.\n","willReplaceOnChanges":true},"expiration":{"type":"string","description":"The expiration time of the secret in the RFC3339 timestamp format (e.g. `2019-03-09T12:58:49Z`). If omitted, a secret will never expire. Changing this creates a new secret.\n","willReplaceOnChanges":true},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"Additional Metadata for the secret.\n"},"mode":{"type":"string","description":"Metadata provided by a user or system for informational purposes.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"Human-readable name for the Secret. Does not have\nto be unique.\n","willReplaceOnChanges":true},"payload":{"type":"string","description":"The secret's data to be stored. **payload\\_content\\_type** must also be supplied if **payload** is included.\n","secret":true,"willReplaceOnChanges":true},"payloadContentEncoding":{"type":"string","description":"(required if **payload** is encoded) The encoding used for the payload to be able to include it in the JSON request. Must be either \u003cspan pulumi-lang-nodejs=\"`base64`\" pulumi-lang-dotnet=\"`Base64`\" pulumi-lang-go=\"`base64`\" pulumi-lang-python=\"`base64`\" pulumi-lang-yaml=\"`base64`\" pulumi-lang-java=\"`base64`\"\u003e`base64`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`binary`\" pulumi-lang-dotnet=\"`Binary`\" pulumi-lang-go=\"`binary`\" pulumi-lang-python=\"`binary`\" pulumi-lang-yaml=\"`binary`\" pulumi-lang-java=\"`binary`\"\u003e`binary`\u003c/span\u003e.\n","willReplaceOnChanges":true},"payloadContentType":{"type":"string","description":"(required if **payload** is included) The media type for the content of the payload. Must be one of `text/plain`, `text/plain;charset=utf-8`, `text/plain; charset=utf-8`, `application/octet-stream`, `application/pkcs8`.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V1 KeyManager client.\nA KeyManager client is needed to create a secret. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nV1 secret.\n","willReplaceOnChanges":true},"secretType":{"type":"string","description":"Used to indicate the type of secret being stored. For more information see [Secret types](https://docs.openstack.org/barbican/latest/api/reference/secret_types.html).\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering SecretV1 resources.\n","properties":{"acl":{"$ref":"#/types/openstack:keymanager/SecretV1Acl:SecretV1Acl","description":"Allows to control an access to a secret. Currently only the\n\u003cspan pulumi-lang-nodejs=\"`read`\" pulumi-lang-dotnet=\"`Read`\" pulumi-lang-go=\"`read`\" pulumi-lang-python=\"`read`\" pulumi-lang-yaml=\"`read`\" pulumi-lang-java=\"`read`\"\u003e`read`\u003c/span\u003e operation is supported. If not specified, the secret is accessible\nproject wide.\n"},"algorithm":{"type":"string","description":"Metadata provided by a user or system for informational purposes.\n","willReplaceOnChanges":true},"allMetadata":{"type":"object","additionalProperties":{"type":"string"},"description":"The map of metadata, assigned on the secret, which has been\nexplicitly and implicitly added.\n"},"bitLength":{"type":"integer","description":"Metadata provided by a user or system for informational purposes.\n","willReplaceOnChanges":true},"contentTypes":{"type":"object","additionalProperties":{"type":"string"},"description":"The map of the content types, assigned on the secret.\n"},"createdAt":{"type":"string","description":"The date the secret was created.\n"},"creatorId":{"type":"string","description":"The creator of the secret.\n"},"expiration":{"type":"string","description":"The expiration time of the secret in the RFC3339 timestamp format (e.g. `2019-03-09T12:58:49Z`). If omitted, a secret will never expire. Changing this creates a new secret.\n","willReplaceOnChanges":true},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"Additional Metadata for the secret.\n"},"mode":{"type":"string","description":"Metadata provided by a user or system for informational purposes.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"Human-readable name for the Secret. Does not have\nto be unique.\n","willReplaceOnChanges":true},"payload":{"type":"string","description":"The secret's data to be stored. **payload\\_content\\_type** must also be supplied if **payload** is included.\n","secret":true,"willReplaceOnChanges":true},"payloadContentEncoding":{"type":"string","description":"(required if **payload** is encoded) The encoding used for the payload to be able to include it in the JSON request. Must be either \u003cspan pulumi-lang-nodejs=\"`base64`\" pulumi-lang-dotnet=\"`Base64`\" pulumi-lang-go=\"`base64`\" pulumi-lang-python=\"`base64`\" pulumi-lang-yaml=\"`base64`\" pulumi-lang-java=\"`base64`\"\u003e`base64`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`binary`\" pulumi-lang-dotnet=\"`Binary`\" pulumi-lang-go=\"`binary`\" pulumi-lang-python=\"`binary`\" pulumi-lang-yaml=\"`binary`\" pulumi-lang-java=\"`binary`\"\u003e`binary`\u003c/span\u003e.\n","willReplaceOnChanges":true},"payloadContentType":{"type":"string","description":"(required if **payload** is included) The media type for the content of the payload. Must be one of `text/plain`, `text/plain;charset=utf-8`, `text/plain; charset=utf-8`, `application/octet-stream`, `application/pkcs8`.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V1 KeyManager client.\nA KeyManager client is needed to create a secret. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nV1 secret.\n","willReplaceOnChanges":true},"secretRef":{"type":"string","description":"The secret reference / where to find the secret.\n"},"secretType":{"type":"string","description":"Used to indicate the type of secret being stored. For more information see [Secret types](https://docs.openstack.org/barbican/latest/api/reference/secret_types.html).\n","willReplaceOnChanges":true},"status":{"type":"string","description":"The status of the secret.\n"},"updatedAt":{"type":"string","description":"The date the secret was last updated.\n"}},"type":"object"}},"openstack:loadbalancer/flavorV2:FlavorV2":{"description":"Manages a V2 load balancer flavor resource within OpenStack.\n\n\u003e **Note:** This usually requires admin privileges.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst fp1 = new openstack.loadbalancer.FlavorprofileV2(\"fp_1\", {\n    name: \"test\",\n    providerName: \"amphora\",\n    flavorData: JSON.stringify({\n        loadbalancer_topology: \"ACTIVE_STANDBY\",\n    }),\n});\nconst flavor1 = new openstack.loadbalancer.FlavorV2(\"flavor_1\", {\n    name: \"test\",\n    description: \"This is a test flavor\",\n    flavorProfileId: fp1.id,\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_openstack as openstack\n\nfp1 = openstack.loadbalancer.FlavorprofileV2(\"fp_1\",\n    name=\"test\",\n    provider_name=\"amphora\",\n    flavor_data=json.dumps({\n        \"loadbalancer_topology\": \"ACTIVE_STANDBY\",\n    }))\nflavor1 = openstack.loadbalancer.FlavorV2(\"flavor_1\",\n    name=\"test\",\n    description=\"This is a test flavor\",\n    flavor_profile_id=fp1.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var fp1 = new OpenStack.LoadBalancer.FlavorprofileV2(\"fp_1\", new()\n    {\n        Name = \"test\",\n        ProviderName = \"amphora\",\n        FlavorData = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"loadbalancer_topology\"] = \"ACTIVE_STANDBY\",\n        }),\n    });\n\n    var flavor1 = new OpenStack.LoadBalancer.FlavorV2(\"flavor_1\", new()\n    {\n        Name = \"test\",\n        Description = \"This is a test flavor\",\n        FlavorProfileId = fp1.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/loadbalancer\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"loadbalancer_topology\": \"ACTIVE_STANDBY\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\tfp1, err := loadbalancer.NewFlavorprofileV2(ctx, \"fp_1\", \u0026loadbalancer.FlavorprofileV2Args{\n\t\t\tName:         pulumi.String(\"test\"),\n\t\t\tProviderName: pulumi.String(\"amphora\"),\n\t\t\tFlavorData:   pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = loadbalancer.NewFlavorV2(ctx, \"flavor_1\", \u0026loadbalancer.FlavorV2Args{\n\t\t\tName:            pulumi.String(\"test\"),\n\t\t\tDescription:     pulumi.String(\"This is a test flavor\"),\n\t\t\tFlavorProfileId: fp1.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.openstack.loadbalancer.FlavorprofileV2;\nimport com.pulumi.openstack.loadbalancer.FlavorprofileV2Args;\nimport com.pulumi.openstack.loadbalancer.FlavorV2;\nimport com.pulumi.openstack.loadbalancer.FlavorV2Args;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 fp1 = new FlavorprofileV2(\"fp1\", FlavorprofileV2Args.builder()\n            .name(\"test\")\n            .providerName(\"amphora\")\n            .flavorData(serializeJson(\n                jsonObject(\n                    jsonProperty(\"loadbalancer_topology\", \"ACTIVE_STANDBY\")\n                )))\n            .build());\n\n        var flavor1 = new FlavorV2(\"flavor1\", FlavorV2Args.builder()\n            .name(\"test\")\n            .description(\"This is a test flavor\")\n            .flavorProfileId(fp1.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  fp1:\n    type: openstack:loadbalancer:FlavorprofileV2\n    name: fp_1\n    properties:\n      name: test\n      providerName: amphora\n      flavorData:\n        fn::toJSON:\n          loadbalancer_topology: ACTIVE_STANDBY\n  flavor1:\n    type: openstack:loadbalancer:FlavorV2\n    name: flavor_1\n    properties:\n      name: test\n      description: This is a test flavor\n      flavorProfileId: ${fp1.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nflavors can be imported using their `id`. Example:\n\n```sh\n$ pulumi import openstack:loadbalancer/flavorV2:FlavorV2 flavor_1 2a0f2240-c5e6-41de-896d-e80d97428d6b\n```\n","properties":{"description":{"type":"string","description":"The description of the flavor. Changing this\nupdates the existing flavor.\n"},"enabled":{"type":"boolean","description":"Whether the flavor is enabled or not. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\nChanging this updates the existing flavor.\n"},"flavorProfileId":{"type":"string","description":"The\u003cspan pulumi-lang-nodejs=\" flavorProfileId \" pulumi-lang-dotnet=\" FlavorProfileId \" pulumi-lang-go=\" flavorProfileId \" pulumi-lang-python=\" flavor_profile_id \" pulumi-lang-yaml=\" flavorProfileId \" pulumi-lang-java=\" flavorProfileId \"\u003e flavor_profile_id \u003c/span\u003ethat the flavor\nwill use. Changing this creates a new flavor.\n"},"name":{"type":"string","description":"Name of the flavor. Changing this updates the existing\nflavor.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an LB member. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nLB flavor.\n"}},"required":["enabled","flavorProfileId","name","region"],"inputProperties":{"description":{"type":"string","description":"The description of the flavor. Changing this\nupdates the existing flavor.\n"},"enabled":{"type":"boolean","description":"Whether the flavor is enabled or not. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\nChanging this updates the existing flavor.\n"},"flavorProfileId":{"type":"string","description":"The\u003cspan pulumi-lang-nodejs=\" flavorProfileId \" pulumi-lang-dotnet=\" FlavorProfileId \" pulumi-lang-go=\" flavorProfileId \" pulumi-lang-python=\" flavor_profile_id \" pulumi-lang-yaml=\" flavorProfileId \" pulumi-lang-java=\" flavorProfileId \"\u003e flavor_profile_id \u003c/span\u003ethat the flavor\nwill use. Changing this creates a new flavor.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"Name of the flavor. Changing this updates the existing\nflavor.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an LB member. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nLB flavor.\n","willReplaceOnChanges":true}},"requiredInputs":["flavorProfileId"],"stateInputs":{"description":"Input properties used for looking up and filtering FlavorV2 resources.\n","properties":{"description":{"type":"string","description":"The description of the flavor. Changing this\nupdates the existing flavor.\n"},"enabled":{"type":"boolean","description":"Whether the flavor is enabled or not. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\nChanging this updates the existing flavor.\n"},"flavorProfileId":{"type":"string","description":"The\u003cspan pulumi-lang-nodejs=\" flavorProfileId \" pulumi-lang-dotnet=\" FlavorProfileId \" pulumi-lang-go=\" flavorProfileId \" pulumi-lang-python=\" flavor_profile_id \" pulumi-lang-yaml=\" flavorProfileId \" pulumi-lang-java=\" flavorProfileId \"\u003e flavor_profile_id \u003c/span\u003ethat the flavor\nwill use. Changing this creates a new flavor.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"Name of the flavor. Changing this updates the existing\nflavor.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an LB member. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nLB flavor.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:loadbalancer/flavorprofileV2:FlavorprofileV2":{"description":"Manages a V2 load balancer flavorprofile resource within OpenStack.\n\n\u003e **Note:** This usually requires admin privileges.\n\n## Example Usage\n\n### Using jsonencode\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst flavorprofile1 = new openstack.loadbalancer.FlavorprofileV2(\"flavorprofile_1\", {\n    name: \"amphora-single-profile\",\n    providerName: \"amphora\",\n    flavorData: JSON.stringify({\n        loadbalancer_topology: \"SINGLE\",\n    }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_openstack as openstack\n\nflavorprofile1 = openstack.loadbalancer.FlavorprofileV2(\"flavorprofile_1\",\n    name=\"amphora-single-profile\",\n    provider_name=\"amphora\",\n    flavor_data=json.dumps({\n        \"loadbalancer_topology\": \"SINGLE\",\n    }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var flavorprofile1 = new OpenStack.LoadBalancer.FlavorprofileV2(\"flavorprofile_1\", new()\n    {\n        Name = \"amphora-single-profile\",\n        ProviderName = \"amphora\",\n        FlavorData = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"loadbalancer_topology\"] = \"SINGLE\",\n        }),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/loadbalancer\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"loadbalancer_topology\": \"SINGLE\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = loadbalancer.NewFlavorprofileV2(ctx, \"flavorprofile_1\", \u0026loadbalancer.FlavorprofileV2Args{\n\t\t\tName:         pulumi.String(\"amphora-single-profile\"),\n\t\t\tProviderName: pulumi.String(\"amphora\"),\n\t\t\tFlavorData:   pulumi.String(json0),\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.openstack.loadbalancer.FlavorprofileV2;\nimport com.pulumi.openstack.loadbalancer.FlavorprofileV2Args;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 flavorprofile1 = new FlavorprofileV2(\"flavorprofile1\", FlavorprofileV2Args.builder()\n            .name(\"amphora-single-profile\")\n            .providerName(\"amphora\")\n            .flavorData(serializeJson(\n                jsonObject(\n                    jsonProperty(\"loadbalancer_topology\", \"SINGLE\")\n                )))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  flavorprofile1:\n    type: openstack:loadbalancer:FlavorprofileV2\n    name: flavorprofile_1\n    properties:\n      name: amphora-single-profile\n      providerName: amphora\n      flavorData:\n        fn::toJSON:\n          loadbalancer_topology: SINGLE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Using plain string\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst flavorprofile1 = new openstack.loadbalancer.FlavorprofileV2(\"flavorprofile_1\", {\n    name: \"amphora-single-profile\",\n    providerName: \"amphora\",\n    flavorData: \"{\\\"loadbalancer_topology\\\": \\\"SINGLE\\\"}\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nflavorprofile1 = openstack.loadbalancer.FlavorprofileV2(\"flavorprofile_1\",\n    name=\"amphora-single-profile\",\n    provider_name=\"amphora\",\n    flavor_data=\"{\\\"loadbalancer_topology\\\": \\\"SINGLE\\\"}\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var flavorprofile1 = new OpenStack.LoadBalancer.FlavorprofileV2(\"flavorprofile_1\", new()\n    {\n        Name = \"amphora-single-profile\",\n        ProviderName = \"amphora\",\n        FlavorData = \"{\\\"loadbalancer_topology\\\": \\\"SINGLE\\\"}\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/loadbalancer\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := loadbalancer.NewFlavorprofileV2(ctx, \"flavorprofile_1\", \u0026loadbalancer.FlavorprofileV2Args{\n\t\t\tName:         pulumi.String(\"amphora-single-profile\"),\n\t\t\tProviderName: pulumi.String(\"amphora\"),\n\t\t\tFlavorData:   pulumi.String(\"{\\\"loadbalancer_topology\\\": \\\"SINGLE\\\"}\"),\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.openstack.loadbalancer.FlavorprofileV2;\nimport com.pulumi.openstack.loadbalancer.FlavorprofileV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 flavorprofile1 = new FlavorprofileV2(\"flavorprofile1\", FlavorprofileV2Args.builder()\n            .name(\"amphora-single-profile\")\n            .providerName(\"amphora\")\n            .flavorData(\"{\\\"loadbalancer_topology\\\": \\\"SINGLE\\\"}\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  flavorprofile1:\n    type: openstack:loadbalancer:FlavorprofileV2\n    name: flavorprofile_1\n    properties:\n      name: amphora-single-profile\n      providerName: amphora\n      flavorData: '{\"loadbalancer_topology\": \"SINGLE\"}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nflavorprofiles can be imported using their `id`. Example:\n\n```sh\n$ pulumi import openstack:loadbalancer/flavorprofileV2:FlavorprofileV2 flavorprofile_1 2a0f2240-c5e6-41de-896d-e80d97428d6b\n```\n","properties":{"flavorData":{"type":"string","description":"String that passes the\u003cspan pulumi-lang-nodejs=\" flavorData \" pulumi-lang-dotnet=\" FlavorData \" pulumi-lang-go=\" flavorData \" pulumi-lang-python=\" flavor_data \" pulumi-lang-yaml=\" flavorData \" pulumi-lang-java=\" flavorData \"\u003e flavor_data \u003c/span\u003efor the flavorprofile.\nThe data that are allowed depend on the \u003cspan pulumi-lang-nodejs=\"`providerName`\" pulumi-lang-dotnet=\"`ProviderName`\" pulumi-lang-go=\"`providerName`\" pulumi-lang-python=\"`provider_name`\" pulumi-lang-yaml=\"`providerName`\" pulumi-lang-java=\"`providerName`\"\u003e`provider_name`\u003c/span\u003e that is passed. jsonencode\ncan be used for readability as shown in the example above.\nChanging this updates the existing flavorprofile.\n"},"name":{"type":"string","description":"Name of the flavorprofile. Changing this updates the existing\nflavorprofile.\n"},"providerName":{"type":"string","description":"The\u003cspan pulumi-lang-nodejs=\" providerName \" pulumi-lang-dotnet=\" ProviderName \" pulumi-lang-go=\" providerName \" pulumi-lang-python=\" provider_name \" pulumi-lang-yaml=\" providerName \" pulumi-lang-java=\" providerName \"\u003e provider_name \u003c/span\u003ethat the\u003cspan pulumi-lang-nodejs=\" flavorProfile \" pulumi-lang-dotnet=\" FlavorProfile \" pulumi-lang-go=\" flavorProfile \" pulumi-lang-python=\" flavor_profile \" pulumi-lang-yaml=\" flavorProfile \" pulumi-lang-java=\" flavorProfile \"\u003e flavor_profile \u003c/span\u003ewill use.\nChanging this updates the existing flavorprofile.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an LB member. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nLB flavorprofile.\n"}},"required":["flavorData","name","providerName","region"],"inputProperties":{"flavorData":{"type":"string","description":"String that passes the\u003cspan pulumi-lang-nodejs=\" flavorData \" pulumi-lang-dotnet=\" FlavorData \" pulumi-lang-go=\" flavorData \" pulumi-lang-python=\" flavor_data \" pulumi-lang-yaml=\" flavorData \" pulumi-lang-java=\" flavorData \"\u003e flavor_data \u003c/span\u003efor the flavorprofile.\nThe data that are allowed depend on the \u003cspan pulumi-lang-nodejs=\"`providerName`\" pulumi-lang-dotnet=\"`ProviderName`\" pulumi-lang-go=\"`providerName`\" pulumi-lang-python=\"`provider_name`\" pulumi-lang-yaml=\"`providerName`\" pulumi-lang-java=\"`providerName`\"\u003e`provider_name`\u003c/span\u003e that is passed. jsonencode\ncan be used for readability as shown in the example above.\nChanging this updates the existing flavorprofile.\n"},"name":{"type":"string","description":"Name of the flavorprofile. Changing this updates the existing\nflavorprofile.\n"},"providerName":{"type":"string","description":"The\u003cspan pulumi-lang-nodejs=\" providerName \" pulumi-lang-dotnet=\" ProviderName \" pulumi-lang-go=\" providerName \" pulumi-lang-python=\" provider_name \" pulumi-lang-yaml=\" providerName \" pulumi-lang-java=\" providerName \"\u003e provider_name \u003c/span\u003ethat the\u003cspan pulumi-lang-nodejs=\" flavorProfile \" pulumi-lang-dotnet=\" FlavorProfile \" pulumi-lang-go=\" flavorProfile \" pulumi-lang-python=\" flavor_profile \" pulumi-lang-yaml=\" flavorProfile \" pulumi-lang-java=\" flavorProfile \"\u003e flavor_profile \u003c/span\u003ewill use.\nChanging this updates the existing flavorprofile.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an LB member. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nLB flavorprofile.\n","willReplaceOnChanges":true}},"requiredInputs":["flavorData","providerName"],"stateInputs":{"description":"Input properties used for looking up and filtering FlavorprofileV2 resources.\n","properties":{"flavorData":{"type":"string","description":"String that passes the\u003cspan pulumi-lang-nodejs=\" flavorData \" pulumi-lang-dotnet=\" FlavorData \" pulumi-lang-go=\" flavorData \" pulumi-lang-python=\" flavor_data \" pulumi-lang-yaml=\" flavorData \" pulumi-lang-java=\" flavorData \"\u003e flavor_data \u003c/span\u003efor the flavorprofile.\nThe data that are allowed depend on the \u003cspan pulumi-lang-nodejs=\"`providerName`\" pulumi-lang-dotnet=\"`ProviderName`\" pulumi-lang-go=\"`providerName`\" pulumi-lang-python=\"`provider_name`\" pulumi-lang-yaml=\"`providerName`\" pulumi-lang-java=\"`providerName`\"\u003e`provider_name`\u003c/span\u003e that is passed. jsonencode\ncan be used for readability as shown in the example above.\nChanging this updates the existing flavorprofile.\n"},"name":{"type":"string","description":"Name of the flavorprofile. Changing this updates the existing\nflavorprofile.\n"},"providerName":{"type":"string","description":"The\u003cspan pulumi-lang-nodejs=\" providerName \" pulumi-lang-dotnet=\" ProviderName \" pulumi-lang-go=\" providerName \" pulumi-lang-python=\" provider_name \" pulumi-lang-yaml=\" providerName \" pulumi-lang-java=\" providerName \"\u003e provider_name \u003c/span\u003ethat the\u003cspan pulumi-lang-nodejs=\" flavorProfile \" pulumi-lang-dotnet=\" FlavorProfile \" pulumi-lang-go=\" flavorProfile \" pulumi-lang-python=\" flavor_profile \" pulumi-lang-yaml=\" flavorProfile \" pulumi-lang-java=\" flavorProfile \"\u003e flavor_profile \u003c/span\u003ewill use.\nChanging this updates the existing flavorprofile.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an LB member. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nLB flavorprofile.\n","willReplaceOnChanges":true}},"type":"object"},"aliases":[{"type":"openstack:index/lbFlavorprofileV2:LbFlavorprofileV2"}]},"openstack:loadbalancer/l7PolicyV2:L7PolicyV2":{"description":"Manages a Load Balancer L7 Policy resource within OpenStack.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst network1 = new openstack.networking.Network(\"network_1\", {\n    name: \"network_1\",\n    adminStateUp: true,\n});\nconst subnet1 = new openstack.networking.Subnet(\"subnet_1\", {\n    name: \"subnet_1\",\n    cidr: \"192.168.199.0/24\",\n    ipVersion: 4,\n    networkId: network1.id,\n});\nconst loadbalancer1 = new openstack.loadbalancer.LoadBalancer(\"loadbalancer_1\", {\n    name: \"loadbalancer_1\",\n    vipSubnetId: subnet1.id,\n});\nconst listener1 = new openstack.loadbalancer.Listener(\"listener_1\", {\n    name: \"listener_1\",\n    protocol: \"HTTP\",\n    protocolPort: 8080,\n    loadbalancerId: loadbalancer1.id,\n});\nconst pool1 = new openstack.loadbalancer.Pool(\"pool_1\", {\n    name: \"pool_1\",\n    protocol: \"HTTP\",\n    lbMethod: \"ROUND_ROBIN\",\n    loadbalancerId: loadbalancer1.id,\n});\nconst l7policy1 = new openstack.loadbalancer.L7PolicyV2(\"l7policy_1\", {\n    name: \"test\",\n    action: \"REDIRECT_TO_POOL\",\n    description: \"test l7 policy\",\n    position: 1,\n    listenerId: listener1.id,\n    redirectPoolId: pool1.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nnetwork1 = openstack.networking.Network(\"network_1\",\n    name=\"network_1\",\n    admin_state_up=True)\nsubnet1 = openstack.networking.Subnet(\"subnet_1\",\n    name=\"subnet_1\",\n    cidr=\"192.168.199.0/24\",\n    ip_version=4,\n    network_id=network1.id)\nloadbalancer1 = openstack.loadbalancer.LoadBalancer(\"loadbalancer_1\",\n    name=\"loadbalancer_1\",\n    vip_subnet_id=subnet1.id)\nlistener1 = openstack.loadbalancer.Listener(\"listener_1\",\n    name=\"listener_1\",\n    protocol=\"HTTP\",\n    protocol_port=8080,\n    loadbalancer_id=loadbalancer1.id)\npool1 = openstack.loadbalancer.Pool(\"pool_1\",\n    name=\"pool_1\",\n    protocol=\"HTTP\",\n    lb_method=\"ROUND_ROBIN\",\n    loadbalancer_id=loadbalancer1.id)\nl7policy1 = openstack.loadbalancer.L7PolicyV2(\"l7policy_1\",\n    name=\"test\",\n    action=\"REDIRECT_TO_POOL\",\n    description=\"test l7 policy\",\n    position=1,\n    listener_id=listener1.id,\n    redirect_pool_id=pool1.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var network1 = new OpenStack.Networking.Network(\"network_1\", new()\n    {\n        Name = \"network_1\",\n        AdminStateUp = true,\n    });\n\n    var subnet1 = new OpenStack.Networking.Subnet(\"subnet_1\", new()\n    {\n        Name = \"subnet_1\",\n        Cidr = \"192.168.199.0/24\",\n        IpVersion = 4,\n        NetworkId = network1.Id,\n    });\n\n    var loadbalancer1 = new OpenStack.LoadBalancer.LoadBalancer(\"loadbalancer_1\", new()\n    {\n        Name = \"loadbalancer_1\",\n        VipSubnetId = subnet1.Id,\n    });\n\n    var listener1 = new OpenStack.LoadBalancer.Listener(\"listener_1\", new()\n    {\n        Name = \"listener_1\",\n        Protocol = \"HTTP\",\n        ProtocolPort = 8080,\n        LoadbalancerId = loadbalancer1.Id,\n    });\n\n    var pool1 = new OpenStack.LoadBalancer.Pool(\"pool_1\", new()\n    {\n        Name = \"pool_1\",\n        Protocol = \"HTTP\",\n        LbMethod = \"ROUND_ROBIN\",\n        LoadbalancerId = loadbalancer1.Id,\n    });\n\n    var l7policy1 = new OpenStack.LoadBalancer.L7PolicyV2(\"l7policy_1\", new()\n    {\n        Name = \"test\",\n        Action = \"REDIRECT_TO_POOL\",\n        Description = \"test l7 policy\",\n        Position = 1,\n        ListenerId = listener1.Id,\n        RedirectPoolId = pool1.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/loadbalancer\"\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork1, err := networking.NewNetwork(ctx, \"network_1\", \u0026networking.NetworkArgs{\n\t\t\tName:         pulumi.String(\"network_1\"),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet1, err := networking.NewSubnet(ctx, \"subnet_1\", \u0026networking.SubnetArgs{\n\t\t\tName:      pulumi.String(\"subnet_1\"),\n\t\t\tCidr:      pulumi.String(\"192.168.199.0/24\"),\n\t\t\tIpVersion: pulumi.Int(4),\n\t\t\tNetworkId: network1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tloadbalancer1, err := loadbalancer.NewLoadBalancer(ctx, \"loadbalancer_1\", \u0026loadbalancer.LoadBalancerArgs{\n\t\t\tName:        pulumi.String(\"loadbalancer_1\"),\n\t\t\tVipSubnetId: subnet1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlistener1, err := loadbalancer.NewListener(ctx, \"listener_1\", \u0026loadbalancer.ListenerArgs{\n\t\t\tName:           pulumi.String(\"listener_1\"),\n\t\t\tProtocol:       pulumi.String(\"HTTP\"),\n\t\t\tProtocolPort:   pulumi.Int(8080),\n\t\t\tLoadbalancerId: loadbalancer1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpool1, err := loadbalancer.NewPool(ctx, \"pool_1\", \u0026loadbalancer.PoolArgs{\n\t\t\tName:           pulumi.String(\"pool_1\"),\n\t\t\tProtocol:       pulumi.String(\"HTTP\"),\n\t\t\tLbMethod:       pulumi.String(\"ROUND_ROBIN\"),\n\t\t\tLoadbalancerId: loadbalancer1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = loadbalancer.NewL7PolicyV2(ctx, \"l7policy_1\", \u0026loadbalancer.L7PolicyV2Args{\n\t\t\tName:           pulumi.String(\"test\"),\n\t\t\tAction:         pulumi.String(\"REDIRECT_TO_POOL\"),\n\t\t\tDescription:    pulumi.String(\"test l7 policy\"),\n\t\t\tPosition:       pulumi.Int(1),\n\t\t\tListenerId:     listener1.ID(),\n\t\t\tRedirectPoolId: pool1.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.openstack.networking.Network;\nimport com.pulumi.openstack.networking.NetworkArgs;\nimport com.pulumi.openstack.networking.Subnet;\nimport com.pulumi.openstack.networking.SubnetArgs;\nimport com.pulumi.openstack.loadbalancer.LoadBalancer;\nimport com.pulumi.openstack.loadbalancer.LoadBalancerArgs;\nimport com.pulumi.openstack.loadbalancer.Listener;\nimport com.pulumi.openstack.loadbalancer.ListenerArgs;\nimport com.pulumi.openstack.loadbalancer.Pool;\nimport com.pulumi.openstack.loadbalancer.PoolArgs;\nimport com.pulumi.openstack.loadbalancer.L7PolicyV2;\nimport com.pulumi.openstack.loadbalancer.L7PolicyV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 network1 = new Network(\"network1\", NetworkArgs.builder()\n            .name(\"network_1\")\n            .adminStateUp(true)\n            .build());\n\n        var subnet1 = new Subnet(\"subnet1\", SubnetArgs.builder()\n            .name(\"subnet_1\")\n            .cidr(\"192.168.199.0/24\")\n            .ipVersion(4)\n            .networkId(network1.id())\n            .build());\n\n        var loadbalancer1 = new LoadBalancer(\"loadbalancer1\", LoadBalancerArgs.builder()\n            .name(\"loadbalancer_1\")\n            .vipSubnetId(subnet1.id())\n            .build());\n\n        var listener1 = new Listener(\"listener1\", ListenerArgs.builder()\n            .name(\"listener_1\")\n            .protocol(\"HTTP\")\n            .protocolPort(8080)\n            .loadbalancerId(loadbalancer1.id())\n            .build());\n\n        var pool1 = new Pool(\"pool1\", PoolArgs.builder()\n            .name(\"pool_1\")\n            .protocol(\"HTTP\")\n            .lbMethod(\"ROUND_ROBIN\")\n            .loadbalancerId(loadbalancer1.id())\n            .build());\n\n        var l7policy1 = new L7PolicyV2(\"l7policy1\", L7PolicyV2Args.builder()\n            .name(\"test\")\n            .action(\"REDIRECT_TO_POOL\")\n            .description(\"test l7 policy\")\n            .position(1)\n            .listenerId(listener1.id())\n            .redirectPoolId(pool1.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  network1:\n    type: openstack:networking:Network\n    name: network_1\n    properties:\n      name: network_1\n      adminStateUp: 'true'\n  subnet1:\n    type: openstack:networking:Subnet\n    name: subnet_1\n    properties:\n      name: subnet_1\n      cidr: 192.168.199.0/24\n      ipVersion: 4\n      networkId: ${network1.id}\n  loadbalancer1:\n    type: openstack:loadbalancer:LoadBalancer\n    name: loadbalancer_1\n    properties:\n      name: loadbalancer_1\n      vipSubnetId: ${subnet1.id}\n  listener1:\n    type: openstack:loadbalancer:Listener\n    name: listener_1\n    properties:\n      name: listener_1\n      protocol: HTTP\n      protocolPort: 8080\n      loadbalancerId: ${loadbalancer1.id}\n  pool1:\n    type: openstack:loadbalancer:Pool\n    name: pool_1\n    properties:\n      name: pool_1\n      protocol: HTTP\n      lbMethod: ROUND_ROBIN\n      loadbalancerId: ${loadbalancer1.id}\n  l7policy1:\n    type: openstack:loadbalancer:L7PolicyV2\n    name: l7policy_1\n    properties:\n      name: test\n      action: REDIRECT_TO_POOL\n      description: test l7 policy\n      position: 1\n      listenerId: ${listener1.id}\n      redirectPoolId: ${pool1.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nLoad Balancer L7 Policy can be imported using the L7 Policy ID, e.g.:\n\n```sh\n$ pulumi import openstack:loadbalancer/l7PolicyV2:L7PolicyV2 l7policy_1 8a7a79c2-cf17-4e65-b2ae-ddc8bfcf6c74\n```\n","properties":{"action":{"type":"string","description":"The L7 Policy action - can either be REDIRECT\\_TO\\_POOL,\nREDIRECT\\_TO\\_URL or REJECT.\n"},"adminStateUp":{"type":"boolean","description":"The administrative state of the L7 Policy.\nA valid value is true (UP) or false (DOWN).\n"},"description":{"type":"string","description":"Human-readable description for the L7 Policy.\n"},"listenerId":{"type":"string","description":"The Listener on which the L7 Policy will be associated with.\nChanging this creates a new L7 Policy.\n"},"name":{"type":"string","description":"Human-readable name for the L7 Policy. Does not have\nto be unique.\n"},"position":{"type":"integer","description":"The position of this policy on the listener. Positions start at 1.\n"},"redirectHttpCode":{"type":"integer","description":"Integer. Requests matching this policy will be  \nredirected to the specified URL or Prefix URL with the HTTP response code.\nValid if action is REDIRECT\\_TO\\_URL or REDIRECT\\_PREFIX. Valid options are:\n301, 302, 303, 307, or 308. Default is 302. New in octavia version 2.9\n"},"redirectPoolId":{"type":"string","description":"Requests matching this policy will be redirected to the\npool with this ID. Only valid if action is REDIRECT\\_TO\\_POOL.\n"},"redirectPrefix":{"type":"string","description":"Requests matching this policy will be redirected to \nthis Prefix URL. Only valid if action is REDIRECT\\_PREFIX.\n"},"redirectUrl":{"type":"string","description":"Requests matching this policy will be redirected to this URL.\nOnly valid if action is REDIRECT\\_TO\\_URL.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an L7 policy. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nL7 Policy.\n"},"tenantId":{"type":"string","description":"Required for admins. The UUID of the tenant who owns\nthe L7 Policy.  Only administrative users can specify a tenant UUID\nother than their own. Changing this creates a new L7 Policy.\n"}},"required":["action","listenerId","name","position","redirectHttpCode","region","tenantId"],"inputProperties":{"action":{"type":"string","description":"The L7 Policy action - can either be REDIRECT\\_TO\\_POOL,\nREDIRECT\\_TO\\_URL or REJECT.\n"},"adminStateUp":{"type":"boolean","description":"The administrative state of the L7 Policy.\nA valid value is true (UP) or false (DOWN).\n"},"description":{"type":"string","description":"Human-readable description for the L7 Policy.\n"},"listenerId":{"type":"string","description":"The Listener on which the L7 Policy will be associated with.\nChanging this creates a new L7 Policy.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"Human-readable name for the L7 Policy. Does not have\nto be unique.\n"},"position":{"type":"integer","description":"The position of this policy on the listener. Positions start at 1.\n"},"redirectHttpCode":{"type":"integer","description":"Integer. Requests matching this policy will be  \nredirected to the specified URL or Prefix URL with the HTTP response code.\nValid if action is REDIRECT\\_TO\\_URL or REDIRECT\\_PREFIX. Valid options are:\n301, 302, 303, 307, or 308. Default is 302. New in octavia version 2.9\n"},"redirectPoolId":{"type":"string","description":"Requests matching this policy will be redirected to the\npool with this ID. Only valid if action is REDIRECT\\_TO\\_POOL.\n"},"redirectPrefix":{"type":"string","description":"Requests matching this policy will be redirected to \nthis Prefix URL. Only valid if action is REDIRECT\\_PREFIX.\n"},"redirectUrl":{"type":"string","description":"Requests matching this policy will be redirected to this URL.\nOnly valid if action is REDIRECT\\_TO\\_URL.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an L7 policy. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nL7 Policy.\n","willReplaceOnChanges":true},"tenantId":{"type":"string","description":"Required for admins. The UUID of the tenant who owns\nthe L7 Policy.  Only administrative users can specify a tenant UUID\nother than their own. Changing this creates a new L7 Policy.\n","willReplaceOnChanges":true}},"requiredInputs":["action","listenerId"],"stateInputs":{"description":"Input properties used for looking up and filtering L7PolicyV2 resources.\n","properties":{"action":{"type":"string","description":"The L7 Policy action - can either be REDIRECT\\_TO\\_POOL,\nREDIRECT\\_TO\\_URL or REJECT.\n"},"adminStateUp":{"type":"boolean","description":"The administrative state of the L7 Policy.\nA valid value is true (UP) or false (DOWN).\n"},"description":{"type":"string","description":"Human-readable description for the L7 Policy.\n"},"listenerId":{"type":"string","description":"The Listener on which the L7 Policy will be associated with.\nChanging this creates a new L7 Policy.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"Human-readable name for the L7 Policy. Does not have\nto be unique.\n"},"position":{"type":"integer","description":"The position of this policy on the listener. Positions start at 1.\n"},"redirectHttpCode":{"type":"integer","description":"Integer. Requests matching this policy will be  \nredirected to the specified URL or Prefix URL with the HTTP response code.\nValid if action is REDIRECT\\_TO\\_URL or REDIRECT\\_PREFIX. Valid options are:\n301, 302, 303, 307, or 308. Default is 302. New in octavia version 2.9\n"},"redirectPoolId":{"type":"string","description":"Requests matching this policy will be redirected to the\npool with this ID. Only valid if action is REDIRECT\\_TO\\_POOL.\n"},"redirectPrefix":{"type":"string","description":"Requests matching this policy will be redirected to \nthis Prefix URL. Only valid if action is REDIRECT\\_PREFIX.\n"},"redirectUrl":{"type":"string","description":"Requests matching this policy will be redirected to this URL.\nOnly valid if action is REDIRECT\\_TO\\_URL.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an L7 policy. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nL7 Policy.\n","willReplaceOnChanges":true},"tenantId":{"type":"string","description":"Required for admins. The UUID of the tenant who owns\nthe L7 Policy.  Only administrative users can specify a tenant UUID\nother than their own. Changing this creates a new L7 Policy.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:loadbalancer/l7RuleV2:L7RuleV2":{"description":"Manages a V2 L7 Rule resource within OpenStack.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst network1 = new openstack.networking.Network(\"network_1\", {\n    name: \"network_1\",\n    adminStateUp: true,\n});\nconst subnet1 = new openstack.networking.Subnet(\"subnet_1\", {\n    name: \"subnet_1\",\n    cidr: \"192.168.199.0/24\",\n    ipVersion: 4,\n    networkId: network1.id,\n});\nconst loadbalancer1 = new openstack.loadbalancer.LoadBalancer(\"loadbalancer_1\", {\n    name: \"loadbalancer_1\",\n    vipSubnetId: subnet1.id,\n});\nconst listener1 = new openstack.loadbalancer.Listener(\"listener_1\", {\n    name: \"listener_1\",\n    protocol: \"HTTP\",\n    protocolPort: 8080,\n    loadbalancerId: loadbalancer1.id,\n});\nconst pool1 = new openstack.loadbalancer.Pool(\"pool_1\", {\n    name: \"pool_1\",\n    protocol: \"HTTP\",\n    lbMethod: \"ROUND_ROBIN\",\n    loadbalancerId: loadbalancer1.id,\n});\nconst l7policy1 = new openstack.loadbalancer.L7PolicyV2(\"l7policy_1\", {\n    name: \"test\",\n    action: \"REDIRECT_TO_URL\",\n    description: \"test description\",\n    position: 1,\n    listenerId: listener1.id,\n    redirectUrl: \"http://www.example.com\",\n});\nconst l7rule1 = new openstack.loadbalancer.L7RuleV2(\"l7rule_1\", {\n    l7policyId: l7policy1.id,\n    type: \"PATH\",\n    compareType: \"EQUAL_TO\",\n    value: \"/api\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nnetwork1 = openstack.networking.Network(\"network_1\",\n    name=\"network_1\",\n    admin_state_up=True)\nsubnet1 = openstack.networking.Subnet(\"subnet_1\",\n    name=\"subnet_1\",\n    cidr=\"192.168.199.0/24\",\n    ip_version=4,\n    network_id=network1.id)\nloadbalancer1 = openstack.loadbalancer.LoadBalancer(\"loadbalancer_1\",\n    name=\"loadbalancer_1\",\n    vip_subnet_id=subnet1.id)\nlistener1 = openstack.loadbalancer.Listener(\"listener_1\",\n    name=\"listener_1\",\n    protocol=\"HTTP\",\n    protocol_port=8080,\n    loadbalancer_id=loadbalancer1.id)\npool1 = openstack.loadbalancer.Pool(\"pool_1\",\n    name=\"pool_1\",\n    protocol=\"HTTP\",\n    lb_method=\"ROUND_ROBIN\",\n    loadbalancer_id=loadbalancer1.id)\nl7policy1 = openstack.loadbalancer.L7PolicyV2(\"l7policy_1\",\n    name=\"test\",\n    action=\"REDIRECT_TO_URL\",\n    description=\"test description\",\n    position=1,\n    listener_id=listener1.id,\n    redirect_url=\"http://www.example.com\")\nl7rule1 = openstack.loadbalancer.L7RuleV2(\"l7rule_1\",\n    l7policy_id=l7policy1.id,\n    type=\"PATH\",\n    compare_type=\"EQUAL_TO\",\n    value=\"/api\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var network1 = new OpenStack.Networking.Network(\"network_1\", new()\n    {\n        Name = \"network_1\",\n        AdminStateUp = true,\n    });\n\n    var subnet1 = new OpenStack.Networking.Subnet(\"subnet_1\", new()\n    {\n        Name = \"subnet_1\",\n        Cidr = \"192.168.199.0/24\",\n        IpVersion = 4,\n        NetworkId = network1.Id,\n    });\n\n    var loadbalancer1 = new OpenStack.LoadBalancer.LoadBalancer(\"loadbalancer_1\", new()\n    {\n        Name = \"loadbalancer_1\",\n        VipSubnetId = subnet1.Id,\n    });\n\n    var listener1 = new OpenStack.LoadBalancer.Listener(\"listener_1\", new()\n    {\n        Name = \"listener_1\",\n        Protocol = \"HTTP\",\n        ProtocolPort = 8080,\n        LoadbalancerId = loadbalancer1.Id,\n    });\n\n    var pool1 = new OpenStack.LoadBalancer.Pool(\"pool_1\", new()\n    {\n        Name = \"pool_1\",\n        Protocol = \"HTTP\",\n        LbMethod = \"ROUND_ROBIN\",\n        LoadbalancerId = loadbalancer1.Id,\n    });\n\n    var l7policy1 = new OpenStack.LoadBalancer.L7PolicyV2(\"l7policy_1\", new()\n    {\n        Name = \"test\",\n        Action = \"REDIRECT_TO_URL\",\n        Description = \"test description\",\n        Position = 1,\n        ListenerId = listener1.Id,\n        RedirectUrl = \"http://www.example.com\",\n    });\n\n    var l7rule1 = new OpenStack.LoadBalancer.L7RuleV2(\"l7rule_1\", new()\n    {\n        L7policyId = l7policy1.Id,\n        Type = \"PATH\",\n        CompareType = \"EQUAL_TO\",\n        Value = \"/api\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/loadbalancer\"\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork1, err := networking.NewNetwork(ctx, \"network_1\", \u0026networking.NetworkArgs{\n\t\t\tName:         pulumi.String(\"network_1\"),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet1, err := networking.NewSubnet(ctx, \"subnet_1\", \u0026networking.SubnetArgs{\n\t\t\tName:      pulumi.String(\"subnet_1\"),\n\t\t\tCidr:      pulumi.String(\"192.168.199.0/24\"),\n\t\t\tIpVersion: pulumi.Int(4),\n\t\t\tNetworkId: network1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tloadbalancer1, err := loadbalancer.NewLoadBalancer(ctx, \"loadbalancer_1\", \u0026loadbalancer.LoadBalancerArgs{\n\t\t\tName:        pulumi.String(\"loadbalancer_1\"),\n\t\t\tVipSubnetId: subnet1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlistener1, err := loadbalancer.NewListener(ctx, \"listener_1\", \u0026loadbalancer.ListenerArgs{\n\t\t\tName:           pulumi.String(\"listener_1\"),\n\t\t\tProtocol:       pulumi.String(\"HTTP\"),\n\t\t\tProtocolPort:   pulumi.Int(8080),\n\t\t\tLoadbalancerId: loadbalancer1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = loadbalancer.NewPool(ctx, \"pool_1\", \u0026loadbalancer.PoolArgs{\n\t\t\tName:           pulumi.String(\"pool_1\"),\n\t\t\tProtocol:       pulumi.String(\"HTTP\"),\n\t\t\tLbMethod:       pulumi.String(\"ROUND_ROBIN\"),\n\t\t\tLoadbalancerId: loadbalancer1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tl7policy1, err := loadbalancer.NewL7PolicyV2(ctx, \"l7policy_1\", \u0026loadbalancer.L7PolicyV2Args{\n\t\t\tName:        pulumi.String(\"test\"),\n\t\t\tAction:      pulumi.String(\"REDIRECT_TO_URL\"),\n\t\t\tDescription: pulumi.String(\"test description\"),\n\t\t\tPosition:    pulumi.Int(1),\n\t\t\tListenerId:  listener1.ID(),\n\t\t\tRedirectUrl: pulumi.String(\"http://www.example.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = loadbalancer.NewL7RuleV2(ctx, \"l7rule_1\", \u0026loadbalancer.L7RuleV2Args{\n\t\t\tL7policyId:  l7policy1.ID(),\n\t\t\tType:        pulumi.String(\"PATH\"),\n\t\t\tCompareType: pulumi.String(\"EQUAL_TO\"),\n\t\t\tValue:       pulumi.String(\"/api\"),\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.openstack.networking.Network;\nimport com.pulumi.openstack.networking.NetworkArgs;\nimport com.pulumi.openstack.networking.Subnet;\nimport com.pulumi.openstack.networking.SubnetArgs;\nimport com.pulumi.openstack.loadbalancer.LoadBalancer;\nimport com.pulumi.openstack.loadbalancer.LoadBalancerArgs;\nimport com.pulumi.openstack.loadbalancer.Listener;\nimport com.pulumi.openstack.loadbalancer.ListenerArgs;\nimport com.pulumi.openstack.loadbalancer.Pool;\nimport com.pulumi.openstack.loadbalancer.PoolArgs;\nimport com.pulumi.openstack.loadbalancer.L7PolicyV2;\nimport com.pulumi.openstack.loadbalancer.L7PolicyV2Args;\nimport com.pulumi.openstack.loadbalancer.L7RuleV2;\nimport com.pulumi.openstack.loadbalancer.L7RuleV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 network1 = new Network(\"network1\", NetworkArgs.builder()\n            .name(\"network_1\")\n            .adminStateUp(true)\n            .build());\n\n        var subnet1 = new Subnet(\"subnet1\", SubnetArgs.builder()\n            .name(\"subnet_1\")\n            .cidr(\"192.168.199.0/24\")\n            .ipVersion(4)\n            .networkId(network1.id())\n            .build());\n\n        var loadbalancer1 = new LoadBalancer(\"loadbalancer1\", LoadBalancerArgs.builder()\n            .name(\"loadbalancer_1\")\n            .vipSubnetId(subnet1.id())\n            .build());\n\n        var listener1 = new Listener(\"listener1\", ListenerArgs.builder()\n            .name(\"listener_1\")\n            .protocol(\"HTTP\")\n            .protocolPort(8080)\n            .loadbalancerId(loadbalancer1.id())\n            .build());\n\n        var pool1 = new Pool(\"pool1\", PoolArgs.builder()\n            .name(\"pool_1\")\n            .protocol(\"HTTP\")\n            .lbMethod(\"ROUND_ROBIN\")\n            .loadbalancerId(loadbalancer1.id())\n            .build());\n\n        var l7policy1 = new L7PolicyV2(\"l7policy1\", L7PolicyV2Args.builder()\n            .name(\"test\")\n            .action(\"REDIRECT_TO_URL\")\n            .description(\"test description\")\n            .position(1)\n            .listenerId(listener1.id())\n            .redirectUrl(\"http://www.example.com\")\n            .build());\n\n        var l7rule1 = new L7RuleV2(\"l7rule1\", L7RuleV2Args.builder()\n            .l7policyId(l7policy1.id())\n            .type(\"PATH\")\n            .compareType(\"EQUAL_TO\")\n            .value(\"/api\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  network1:\n    type: openstack:networking:Network\n    name: network_1\n    properties:\n      name: network_1\n      adminStateUp: 'true'\n  subnet1:\n    type: openstack:networking:Subnet\n    name: subnet_1\n    properties:\n      name: subnet_1\n      cidr: 192.168.199.0/24\n      ipVersion: 4\n      networkId: ${network1.id}\n  loadbalancer1:\n    type: openstack:loadbalancer:LoadBalancer\n    name: loadbalancer_1\n    properties:\n      name: loadbalancer_1\n      vipSubnetId: ${subnet1.id}\n  listener1:\n    type: openstack:loadbalancer:Listener\n    name: listener_1\n    properties:\n      name: listener_1\n      protocol: HTTP\n      protocolPort: 8080\n      loadbalancerId: ${loadbalancer1.id}\n  pool1:\n    type: openstack:loadbalancer:Pool\n    name: pool_1\n    properties:\n      name: pool_1\n      protocol: HTTP\n      lbMethod: ROUND_ROBIN\n      loadbalancerId: ${loadbalancer1.id}\n  l7policy1:\n    type: openstack:loadbalancer:L7PolicyV2\n    name: l7policy_1\n    properties:\n      name: test\n      action: REDIRECT_TO_URL\n      description: test description\n      position: 1\n      listenerId: ${listener1.id}\n      redirectUrl: http://www.example.com\n  l7rule1:\n    type: openstack:loadbalancer:L7RuleV2\n    name: l7rule_1\n    properties:\n      l7policyId: ${l7policy1.id}\n      type: PATH\n      compareType: EQUAL_TO\n      value: /api\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nLoad Balancer L7 Rule can be imported using the L7 Policy ID and L7 Rule ID\nseparated by a slash, e.g.:\n\n```sh\n$ pulumi import openstack:loadbalancer/l7RuleV2:L7RuleV2 l7rule_1 e0bd694a-abbe-450e-b329-0931fd1cc5eb/4086b0c9-b18c-4d1c-b6b8-4c56c3ad2a9e\n```\n","properties":{"adminStateUp":{"type":"boolean","description":"The administrative state of the L7 Rule.\nA valid value is true (UP) or false (DOWN).\n"},"compareType":{"type":"string","description":"The comparison type for the L7 rule - can either be\nCONTAINS, STARTS\\_WITH, ENDS_WITH, EQUAL_TO or REGEX\n"},"invert":{"type":"boolean","description":"When true the logic of the rule is inverted. For example, with invert\ntrue, equal to would become not equal to. Default is false.\n"},"key":{"type":"string","description":"The key to use for the comparison. For example, the name of the cookie to\nevaluate. Valid when \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e is set to COOKIE or HEADER.\n"},"l7policyId":{"type":"string","description":"The ID of the L7 Policy to query. Changing this creates a new\nL7 Rule.\n"},"listenerId":{"type":"string","description":"The ID of the Listener owning this resource.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an L7 rule. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nL7 Rule.\n"},"tenantId":{"type":"string","description":"Required for admins. The UUID of the tenant who owns\nthe L7 Rule.  Only administrative users can specify a tenant UUID\nother than their own. Changing this creates a new L7 Rule.\n"},"type":{"type":"string","description":"The L7 Rule type - can either be COOKIE, FILE\\_TYPE, HEADER,\nHOST\\_NAME, PATH, SSL\\_CONN\\_HAS\\_CERT, SSL\\_VERIFY\\_RESULT or SSL\\_DN\\_FIELD.\n"},"value":{"type":"string","description":"The value to use for the comparison. For example, the file type to\ncompare.\n"}},"required":["compareType","l7policyId","listenerId","region","tenantId","type","value"],"inputProperties":{"adminStateUp":{"type":"boolean","description":"The administrative state of the L7 Rule.\nA valid value is true (UP) or false (DOWN).\n"},"compareType":{"type":"string","description":"The comparison type for the L7 rule - can either be\nCONTAINS, STARTS\\_WITH, ENDS_WITH, EQUAL_TO or REGEX\n"},"invert":{"type":"boolean","description":"When true the logic of the rule is inverted. For example, with invert\ntrue, equal to would become not equal to. Default is false.\n"},"key":{"type":"string","description":"The key to use for the comparison. For example, the name of the cookie to\nevaluate. Valid when \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e is set to COOKIE or HEADER.\n"},"l7policyId":{"type":"string","description":"The ID of the L7 Policy to query. Changing this creates a new\nL7 Rule.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an L7 rule. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nL7 Rule.\n","willReplaceOnChanges":true},"tenantId":{"type":"string","description":"Required for admins. The UUID of the tenant who owns\nthe L7 Rule.  Only administrative users can specify a tenant UUID\nother than their own. Changing this creates a new L7 Rule.\n","willReplaceOnChanges":true},"type":{"type":"string","description":"The L7 Rule type - can either be COOKIE, FILE\\_TYPE, HEADER,\nHOST\\_NAME, PATH, SSL\\_CONN\\_HAS\\_CERT, SSL\\_VERIFY\\_RESULT or SSL\\_DN\\_FIELD.\n"},"value":{"type":"string","description":"The value to use for the comparison. For example, the file type to\ncompare.\n"}},"requiredInputs":["compareType","l7policyId","type","value"],"stateInputs":{"description":"Input properties used for looking up and filtering L7RuleV2 resources.\n","properties":{"adminStateUp":{"type":"boolean","description":"The administrative state of the L7 Rule.\nA valid value is true (UP) or false (DOWN).\n"},"compareType":{"type":"string","description":"The comparison type for the L7 rule - can either be\nCONTAINS, STARTS\\_WITH, ENDS_WITH, EQUAL_TO or REGEX\n"},"invert":{"type":"boolean","description":"When true the logic of the rule is inverted. For example, with invert\ntrue, equal to would become not equal to. Default is false.\n"},"key":{"type":"string","description":"The key to use for the comparison. For example, the name of the cookie to\nevaluate. Valid when \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e is set to COOKIE or HEADER.\n"},"l7policyId":{"type":"string","description":"The ID of the L7 Policy to query. Changing this creates a new\nL7 Rule.\n","willReplaceOnChanges":true},"listenerId":{"type":"string","description":"The ID of the Listener owning this resource.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an L7 rule. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nL7 Rule.\n","willReplaceOnChanges":true},"tenantId":{"type":"string","description":"Required for admins. The UUID of the tenant who owns\nthe L7 Rule.  Only administrative users can specify a tenant UUID\nother than their own. Changing this creates a new L7 Rule.\n","willReplaceOnChanges":true},"type":{"type":"string","description":"The L7 Rule type - can either be COOKIE, FILE\\_TYPE, HEADER,\nHOST\\_NAME, PATH, SSL\\_CONN\\_HAS\\_CERT, SSL\\_VERIFY\\_RESULT or SSL\\_DN\\_FIELD.\n"},"value":{"type":"string","description":"The value to use for the comparison. For example, the file type to\ncompare.\n"}},"type":"object"}},"openstack:loadbalancer/listener:Listener":{"description":"Manages a V2 listener resource within OpenStack.\n\n\u003e **Note:** This resource has attributes that depend on octavia minor versions.\nPlease ensure your Openstack cloud supports the required minor version.\n\n## Example Usage\n\n### Simple listener\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst listener1 = new openstack.loadbalancer.Listener(\"listener_1\", {\n    protocol: \"HTTP\",\n    protocolPort: 8080,\n    loadbalancerId: \"d9415786-5f1a-428b-b35f-2f1523e146d2\",\n    insertHeaders: {\n        \"X-Forwarded-For\": \"true\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nlistener1 = openstack.loadbalancer.Listener(\"listener_1\",\n    protocol=\"HTTP\",\n    protocol_port=8080,\n    loadbalancer_id=\"d9415786-5f1a-428b-b35f-2f1523e146d2\",\n    insert_headers={\n        \"X-Forwarded-For\": \"true\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var listener1 = new OpenStack.LoadBalancer.Listener(\"listener_1\", new()\n    {\n        Protocol = \"HTTP\",\n        ProtocolPort = 8080,\n        LoadbalancerId = \"d9415786-5f1a-428b-b35f-2f1523e146d2\",\n        InsertHeaders = \n        {\n            { \"X-Forwarded-For\", \"true\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/loadbalancer\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := loadbalancer.NewListener(ctx, \"listener_1\", \u0026loadbalancer.ListenerArgs{\n\t\t\tProtocol:       pulumi.String(\"HTTP\"),\n\t\t\tProtocolPort:   pulumi.Int(8080),\n\t\t\tLoadbalancerId: pulumi.String(\"d9415786-5f1a-428b-b35f-2f1523e146d2\"),\n\t\t\tInsertHeaders: pulumi.StringMap{\n\t\t\t\t\"X-Forwarded-For\": pulumi.String(\"true\"),\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.openstack.loadbalancer.Listener;\nimport com.pulumi.openstack.loadbalancer.ListenerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 listener1 = new Listener(\"listener1\", ListenerArgs.builder()\n            .protocol(\"HTTP\")\n            .protocolPort(8080)\n            .loadbalancerId(\"d9415786-5f1a-428b-b35f-2f1523e146d2\")\n            .insertHeaders(Map.of(\"X-Forwarded-For\", \"true\"))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  listener1:\n    type: openstack:loadbalancer:Listener\n    name: listener_1\n    properties:\n      protocol: HTTP\n      protocolPort: 8080\n      loadbalancerId: d9415786-5f1a-428b-b35f-2f1523e146d2\n      insertHeaders:\n        X-Forwarded-For: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Listener with TLS and client certificate authentication\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\nimport * as std from \"@pulumi/std\";\n\nconst certificate1 = new openstack.keymanager.SecretV1(\"certificate_1\", {\n    name: \"certificate\",\n    payload: std.filebase64({\n        input: \"snakeoil.p12\",\n    }).then(invoke =\u003e invoke.result),\n    payloadContentEncoding: \"base64\",\n    payloadContentType: \"application/octet-stream\",\n});\nconst caCertificate1 = new openstack.keymanager.SecretV1(\"ca_certificate_1\", {\n    name: \"certificate\",\n    payload: std.file({\n        input: \"CA.pem\",\n    }).then(invoke =\u003e invoke.result),\n    secretType: \"certificate\",\n    payloadContentType: \"text/plain\",\n});\nconst subnet1 = openstack.networking.getSubnet({\n    name: \"my-subnet\",\n});\nconst lb1 = new openstack.loadbalancer.LoadBalancer(\"lb_1\", {\n    name: \"loadbalancer\",\n    vipSubnetId: subnet1.then(subnet1 =\u003e subnet1.id),\n});\nconst listener1 = new openstack.loadbalancer.Listener(\"listener_1\", {\n    name: \"https\",\n    protocol: \"TERMINATED_HTTPS\",\n    protocolPort: 443,\n    loadbalancerId: lb1.id,\n    defaultTlsContainerRef: certificate1,\n    clientAuthentication: \"OPTIONAL\",\n    clientCaTlsContainerRef: caCertificate2.secretRef,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\nimport pulumi_std as std\n\ncertificate1 = openstack.keymanager.SecretV1(\"certificate_1\",\n    name=\"certificate\",\n    payload=std.filebase64(input=\"snakeoil.p12\").result,\n    payload_content_encoding=\"base64\",\n    payload_content_type=\"application/octet-stream\")\nca_certificate1 = openstack.keymanager.SecretV1(\"ca_certificate_1\",\n    name=\"certificate\",\n    payload=std.file(input=\"CA.pem\").result,\n    secret_type=\"certificate\",\n    payload_content_type=\"text/plain\")\nsubnet1 = openstack.networking.get_subnet(name=\"my-subnet\")\nlb1 = openstack.loadbalancer.LoadBalancer(\"lb_1\",\n    name=\"loadbalancer\",\n    vip_subnet_id=subnet1.id)\nlistener1 = openstack.loadbalancer.Listener(\"listener_1\",\n    name=\"https\",\n    protocol=\"TERMINATED_HTTPS\",\n    protocol_port=443,\n    loadbalancer_id=lb1.id,\n    default_tls_container_ref=certificate1,\n    client_authentication=\"OPTIONAL\",\n    client_ca_tls_container_ref=ca_certificate2[\"secretRef\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var certificate1 = new OpenStack.KeyManager.SecretV1(\"certificate_1\", new()\n    {\n        Name = \"certificate\",\n        Payload = Std.Filebase64.Invoke(new()\n        {\n            Input = \"snakeoil.p12\",\n        }).Apply(invoke =\u003e invoke.Result),\n        PayloadContentEncoding = \"base64\",\n        PayloadContentType = \"application/octet-stream\",\n    });\n\n    var caCertificate1 = new OpenStack.KeyManager.SecretV1(\"ca_certificate_1\", new()\n    {\n        Name = \"certificate\",\n        Payload = Std.File.Invoke(new()\n        {\n            Input = \"CA.pem\",\n        }).Apply(invoke =\u003e invoke.Result),\n        SecretType = \"certificate\",\n        PayloadContentType = \"text/plain\",\n    });\n\n    var subnet1 = OpenStack.Networking.GetSubnet.Invoke(new()\n    {\n        Name = \"my-subnet\",\n    });\n\n    var lb1 = new OpenStack.LoadBalancer.LoadBalancer(\"lb_1\", new()\n    {\n        Name = \"loadbalancer\",\n        VipSubnetId = subnet1.Apply(getSubnetResult =\u003e getSubnetResult.Id),\n    });\n\n    var listener1 = new OpenStack.LoadBalancer.Listener(\"listener_1\", new()\n    {\n        Name = \"https\",\n        Protocol = \"TERMINATED_HTTPS\",\n        ProtocolPort = 443,\n        LoadbalancerId = lb1.Id,\n        DefaultTlsContainerRef = certificate1,\n        ClientAuthentication = \"OPTIONAL\",\n        ClientCaTlsContainerRef = caCertificate2.SecretRef,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/keymanager\"\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/loadbalancer\"\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFilebase64, err := std.Filebase64(ctx, \u0026std.Filebase64Args{\n\t\t\tInput: \"snakeoil.p12\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcertificate1, err := keymanager.NewSecretV1(ctx, \"certificate_1\", \u0026keymanager.SecretV1Args{\n\t\t\tName:                   pulumi.String(\"certificate\"),\n\t\t\tPayload:                pulumi.String(invokeFilebase64.Result),\n\t\t\tPayloadContentEncoding: pulumi.String(\"base64\"),\n\t\t\tPayloadContentType:     pulumi.String(\"application/octet-stream\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"CA.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = keymanager.NewSecretV1(ctx, \"ca_certificate_1\", \u0026keymanager.SecretV1Args{\n\t\t\tName:               pulumi.String(\"certificate\"),\n\t\t\tPayload:            pulumi.String(invokeFile1.Result),\n\t\t\tSecretType:         pulumi.String(\"certificate\"),\n\t\t\tPayloadContentType: pulumi.String(\"text/plain\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet1, err := networking.LookupSubnet(ctx, \u0026networking.LookupSubnetArgs{\n\t\t\tName: pulumi.StringRef(\"my-subnet\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlb1, err := loadbalancer.NewLoadBalancer(ctx, \"lb_1\", \u0026loadbalancer.LoadBalancerArgs{\n\t\t\tName:        pulumi.String(\"loadbalancer\"),\n\t\t\tVipSubnetId: pulumi.String(subnet1.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = loadbalancer.NewListener(ctx, \"listener_1\", \u0026loadbalancer.ListenerArgs{\n\t\t\tName:                    pulumi.String(\"https\"),\n\t\t\tProtocol:                pulumi.String(\"TERMINATED_HTTPS\"),\n\t\t\tProtocolPort:            pulumi.Int(443),\n\t\t\tLoadbalancerId:          lb1.ID(),\n\t\t\tDefaultTlsContainerRef:  certificate1,\n\t\t\tClientAuthentication:    pulumi.String(\"OPTIONAL\"),\n\t\t\tClientCaTlsContainerRef: pulumi.Any(caCertificate2.SecretRef),\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.openstack.keymanager.SecretV1;\nimport com.pulumi.openstack.keymanager.SecretV1Args;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.Filebase64Args;\nimport com.pulumi.std.inputs.FileArgs;\nimport com.pulumi.openstack.networking.NetworkingFunctions;\nimport com.pulumi.openstack.networking.inputs.GetSubnetArgs;\nimport com.pulumi.openstack.loadbalancer.LoadBalancer;\nimport com.pulumi.openstack.loadbalancer.LoadBalancerArgs;\nimport com.pulumi.openstack.loadbalancer.Listener;\nimport com.pulumi.openstack.loadbalancer.ListenerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 certificate1 = new SecretV1(\"certificate1\", SecretV1Args.builder()\n            .name(\"certificate\")\n            .payload(StdFunctions.filebase64(Filebase64Args.builder()\n                .input(\"snakeoil.p12\")\n                .build()).result())\n            .payloadContentEncoding(\"base64\")\n            .payloadContentType(\"application/octet-stream\")\n            .build());\n\n        var caCertificate1 = new SecretV1(\"caCertificate1\", SecretV1Args.builder()\n            .name(\"certificate\")\n            .payload(StdFunctions.file(FileArgs.builder()\n                .input(\"CA.pem\")\n                .build()).result())\n            .secretType(\"certificate\")\n            .payloadContentType(\"text/plain\")\n            .build());\n\n        final var subnet1 = NetworkingFunctions.getSubnet(GetSubnetArgs.builder()\n            .name(\"my-subnet\")\n            .build());\n\n        var lb1 = new LoadBalancer(\"lb1\", LoadBalancerArgs.builder()\n            .name(\"loadbalancer\")\n            .vipSubnetId(subnet1.id())\n            .build());\n\n        var listener1 = new Listener(\"listener1\", ListenerArgs.builder()\n            .name(\"https\")\n            .protocol(\"TERMINATED_HTTPS\")\n            .protocolPort(443)\n            .loadbalancerId(lb1.id())\n            .defaultTlsContainerRef(certificate1)\n            .clientAuthentication(\"OPTIONAL\")\n            .clientCaTlsContainerRef(caCertificate2.secretRef())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  certificate1:\n    type: openstack:keymanager:SecretV1\n    name: certificate_1\n    properties:\n      name: certificate\n      payload:\n        fn::invoke:\n          function: std:filebase64\n          arguments:\n            input: snakeoil.p12\n          return: result\n      payloadContentEncoding: base64\n      payloadContentType: application/octet-stream\n  caCertificate1:\n    type: openstack:keymanager:SecretV1\n    name: ca_certificate_1\n    properties:\n      name: certificate\n      payload:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: CA.pem\n          return: result\n      secretType: certificate\n      payloadContentType: text/plain\n  lb1:\n    type: openstack:loadbalancer:LoadBalancer\n    name: lb_1\n    properties:\n      name: loadbalancer\n      vipSubnetId: ${subnet1.id}\n  listener1:\n    type: openstack:loadbalancer:Listener\n    name: listener_1\n    properties:\n      name: https\n      protocol: TERMINATED_HTTPS\n      protocolPort: 443\n      loadbalancerId: ${lb1.id}\n      defaultTlsContainerRef: ${certificate1}\n      clientAuthentication: OPTIONAL\n      clientCaTlsContainerRef: ${caCertificate2.secretRef}\nvariables:\n  subnet1:\n    fn::invoke:\n      function: openstack:networking:getSubnet\n      arguments:\n        name: my-subnet\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nLoad Balancer Listener can be imported using the Listener ID, e.g.:\n\n```sh\n$ pulumi import openstack:loadbalancer/listener:Listener listener_1 b67ce64e-8b26-405d-afeb-4a078901f15a\n```\n","properties":{"adminStateUp":{"type":"boolean","description":"The administrative state of the Listener. A\nvalid value is true (UP) or false (DOWN).\n"},"allowedCidrs":{"type":"array","items":{"type":"string"},"description":"A list of CIDR blocks that are permitted to\nconnect to this listener, denying all other source addresses. If not present,\ndefaults to allow all.\n"},"alpnProtocols":{"type":"array","items":{"type":"string"},"description":"A list of ALPN protocols. Available protocols:\n`http/1.0`, `http/1.1`, \u003cspan pulumi-lang-nodejs=\"`h2`\" pulumi-lang-dotnet=\"`H2`\" pulumi-lang-go=\"`h2`\" pulumi-lang-python=\"`h2`\" pulumi-lang-yaml=\"`h2`\" pulumi-lang-java=\"`h2`\"\u003e`h2`\u003c/span\u003e. Supported only in **Octavia minor version \u003e=\n2.20**.\n"},"clientAuthentication":{"type":"string","description":"The TLS client authentication mode.\nAvailable options: `NONE`, `OPTIONAL` or `MANDATORY`. Requires\n`TERMINATED_HTTPS` listener protocol and the \u003cspan pulumi-lang-nodejs=\"`clientCaTlsContainerRef`\" pulumi-lang-dotnet=\"`ClientCaTlsContainerRef`\" pulumi-lang-go=\"`clientCaTlsContainerRef`\" pulumi-lang-python=\"`client_ca_tls_container_ref`\" pulumi-lang-yaml=\"`clientCaTlsContainerRef`\" pulumi-lang-java=\"`clientCaTlsContainerRef`\"\u003e`client_ca_tls_container_ref`\u003c/span\u003e.\nSupported only in **Octavia minor version \u003e= 2.8**.\n"},"clientCaTlsContainerRef":{"type":"string","description":"The ref of the key manager service\nsecret containing a PEM format client CA certificate bundle for\n`TERMINATED_HTTPS` listeners. Required if \u003cspan pulumi-lang-nodejs=\"`clientAuthentication`\" pulumi-lang-dotnet=\"`ClientAuthentication`\" pulumi-lang-go=\"`clientAuthentication`\" pulumi-lang-python=\"`client_authentication`\" pulumi-lang-yaml=\"`clientAuthentication`\" pulumi-lang-java=\"`clientAuthentication`\"\u003e`client_authentication`\u003c/span\u003e is\n`OPTIONAL` or `MANDATORY`. Supported only in **Octavia minor version \u003e=\n2.8**.\n"},"clientCrlContainerRef":{"type":"string","description":"The URI of the key manager service\nsecret containing a PEM format CA revocation list file for `TERMINATED_HTTPS`\nlisteners. Supported only in **Octavia minor version \u003e= 2.8**.\n"},"connectionLimit":{"type":"integer","description":"The maximum number of connections allowed for\nthe Listener.\n"},"defaultPoolId":{"type":"string","description":"The ID of the default pool with which the\nListener is associated.\n"},"defaultTlsContainerRef":{"type":"string","description":"A reference to a Barbican Secrets\ncontainer which stores TLS information. This is required if the protocol is\n`TERMINATED_HTTPS`. See\n[here](https://docs.openstack.org/octavia/latest/user/guides/basic-cookbook.html#deploy-a-tls-terminated-https-load-balancer)\nfor more information.\n"},"description":{"type":"string","description":"Human-readable description for the Listener.\n"},"hstsIncludeSubdomains":{"type":"boolean","description":"Defines whether the\n**includeSubDomains** directive should be added to the\nStrict-Transport-Security HTTP response header. This requires setting the\n\u003cspan pulumi-lang-nodejs=\"`hstsMaxAge`\" pulumi-lang-dotnet=\"`HstsMaxAge`\" pulumi-lang-go=\"`hstsMaxAge`\" pulumi-lang-python=\"`hsts_max_age`\" pulumi-lang-yaml=\"`hstsMaxAge`\" pulumi-lang-java=\"`hstsMaxAge`\"\u003e`hsts_max_age`\u003c/span\u003e option as well in order to become effective. Requires\n`TERMINATED_HTTPS` listener protocol. Supported only in **Octavia minor\nversion \u003e= 2.27**.\n"},"hstsMaxAge":{"type":"integer","description":"The value of the **max_age** directive for the\nStrict-Transport-Security HTTP response header. Setting this enables HTTP\nStrict Transport Security (HSTS) for the TLS-terminated listener. Requires\n`TERMINATED_HTTPS` listener protocol. Supported only in **Octavia minor\nversion \u003e= 2.27**.\n"},"hstsPreload":{"type":"boolean","description":"Defines whether the **preload** directive should\nbe added to the Strict-Transport-Security HTTP response header. This requires\nsetting the \u003cspan pulumi-lang-nodejs=\"`hstsMaxAge`\" pulumi-lang-dotnet=\"`HstsMaxAge`\" pulumi-lang-go=\"`hstsMaxAge`\" pulumi-lang-python=\"`hsts_max_age`\" pulumi-lang-yaml=\"`hstsMaxAge`\" pulumi-lang-java=\"`hstsMaxAge`\"\u003e`hsts_max_age`\u003c/span\u003e option as well in order to become effective.\nRequires `TERMINATED_HTTPS` listener protocol. Supported only in **Octavia\nminor version \u003e= 2.27**.\n"},"insertHeaders":{"type":"object","additionalProperties":{"type":"string"},"description":"The list of key value pairs representing\nheaders to insert into the request before it is sent to the backend members.\nChanging this updates the headers of the existing listener.\n"},"loadbalancerId":{"type":"string","description":"The load balancer on which to provision this\nListener. Changing this creates a new Listener.\n"},"name":{"type":"string","description":"Human-readable name for the Listener. Does not have to be\nunique.\n"},"protocol":{"type":"string","description":"The protocol can be either `TCP`, `HTTP`, `HTTPS`,\n`TERMINATED_HTTPS`, `UDP`, `SCTP` (supported only in **Octavia minor version\n\\\u003e= 2.23**), or `PROMETHEUS` (supported only in **Octavia minor version \u003e=\n2.25**). Changing this creates a new Listener.\n"},"protocolPort":{"type":"integer","description":"The port on which to listen for client traffic.\n* Changing this creates a new Listener.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a listener. If omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e\nargument of the provider is used. Changing this creates a new Listener.\n"},"sniContainerRefs":{"type":"array","items":{"type":"string"},"description":"A list of references to Barbican Secrets\ncontainers which store SNI information. See\n[here](https://docs.openstack.org/octavia/latest/user/guides/basic-cookbook.html#deploy-a-tls-terminated-https-load-balancer)\nfor more information.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of simple strings assigned to the pool. Available\nfor Octavia **minor version 2.5 or later**.\n"},"tenantId":{"type":"string","description":"Required for admins. The UUID of the tenant who owns\nthe Listener.  Only administrative users can specify a tenant UUID other than\ntheir own. Changing this creates a new Listener.\n"},"timeoutClientData":{"type":"integer","description":"The client inactivity timeout in\nmilliseconds.\n"},"timeoutMemberConnect":{"type":"integer","description":"The member connection timeout in\nmilliseconds.\n"},"timeoutMemberData":{"type":"integer","description":"The member inactivity timeout in\nmilliseconds.\n"},"timeoutTcpInspect":{"type":"integer","description":"The time in milliseconds, to wait for\nadditional TCP packets for content inspection.\n"},"tlsCiphers":{"type":"string","description":"List of ciphers in OpenSSL format\n(colon-separated). See\nhttps://www.openssl.org/docs/man1.1.1/man1/ciphers.html for more information.\nSupported only in **Octavia minor version \u003e= 2.15**.\n"},"tlsVersions":{"type":"array","items":{"type":"string"},"description":"A list of TLS protocol versions. Available\nversions: `TLSv1`, `TLSv1.1`, `TLSv1.2`, `TLSv1.3`. Supported only in\n**Octavia minor version \u003e= 2.17**.\n"}},"required":["alpnProtocols","connectionLimit","defaultPoolId","loadbalancerId","name","protocol","protocolPort","region","tenantId","timeoutClientData","timeoutMemberConnect","timeoutMemberData","timeoutTcpInspect","tlsCiphers","tlsVersions"],"inputProperties":{"adminStateUp":{"type":"boolean","description":"The administrative state of the Listener. A\nvalid value is true (UP) or false (DOWN).\n"},"allowedCidrs":{"type":"array","items":{"type":"string"},"description":"A list of CIDR blocks that are permitted to\nconnect to this listener, denying all other source addresses. If not present,\ndefaults to allow all.\n"},"alpnProtocols":{"type":"array","items":{"type":"string"},"description":"A list of ALPN protocols. Available protocols:\n`http/1.0`, `http/1.1`, \u003cspan pulumi-lang-nodejs=\"`h2`\" pulumi-lang-dotnet=\"`H2`\" pulumi-lang-go=\"`h2`\" pulumi-lang-python=\"`h2`\" pulumi-lang-yaml=\"`h2`\" pulumi-lang-java=\"`h2`\"\u003e`h2`\u003c/span\u003e. Supported only in **Octavia minor version \u003e=\n2.20**.\n"},"clientAuthentication":{"type":"string","description":"The TLS client authentication mode.\nAvailable options: `NONE`, `OPTIONAL` or `MANDATORY`. Requires\n`TERMINATED_HTTPS` listener protocol and the \u003cspan pulumi-lang-nodejs=\"`clientCaTlsContainerRef`\" pulumi-lang-dotnet=\"`ClientCaTlsContainerRef`\" pulumi-lang-go=\"`clientCaTlsContainerRef`\" pulumi-lang-python=\"`client_ca_tls_container_ref`\" pulumi-lang-yaml=\"`clientCaTlsContainerRef`\" pulumi-lang-java=\"`clientCaTlsContainerRef`\"\u003e`client_ca_tls_container_ref`\u003c/span\u003e.\nSupported only in **Octavia minor version \u003e= 2.8**.\n"},"clientCaTlsContainerRef":{"type":"string","description":"The ref of the key manager service\nsecret containing a PEM format client CA certificate bundle for\n`TERMINATED_HTTPS` listeners. Required if \u003cspan pulumi-lang-nodejs=\"`clientAuthentication`\" pulumi-lang-dotnet=\"`ClientAuthentication`\" pulumi-lang-go=\"`clientAuthentication`\" pulumi-lang-python=\"`client_authentication`\" pulumi-lang-yaml=\"`clientAuthentication`\" pulumi-lang-java=\"`clientAuthentication`\"\u003e`client_authentication`\u003c/span\u003e is\n`OPTIONAL` or `MANDATORY`. Supported only in **Octavia minor version \u003e=\n2.8**.\n"},"clientCrlContainerRef":{"type":"string","description":"The URI of the key manager service\nsecret containing a PEM format CA revocation list file for `TERMINATED_HTTPS`\nlisteners. Supported only in **Octavia minor version \u003e= 2.8**.\n"},"connectionLimit":{"type":"integer","description":"The maximum number of connections allowed for\nthe Listener.\n"},"defaultPoolId":{"type":"string","description":"The ID of the default pool with which the\nListener is associated.\n"},"defaultTlsContainerRef":{"type":"string","description":"A reference to a Barbican Secrets\ncontainer which stores TLS information. This is required if the protocol is\n`TERMINATED_HTTPS`. See\n[here](https://docs.openstack.org/octavia/latest/user/guides/basic-cookbook.html#deploy-a-tls-terminated-https-load-balancer)\nfor more information.\n"},"description":{"type":"string","description":"Human-readable description for the Listener.\n"},"hstsIncludeSubdomains":{"type":"boolean","description":"Defines whether the\n**includeSubDomains** directive should be added to the\nStrict-Transport-Security HTTP response header. This requires setting the\n\u003cspan pulumi-lang-nodejs=\"`hstsMaxAge`\" pulumi-lang-dotnet=\"`HstsMaxAge`\" pulumi-lang-go=\"`hstsMaxAge`\" pulumi-lang-python=\"`hsts_max_age`\" pulumi-lang-yaml=\"`hstsMaxAge`\" pulumi-lang-java=\"`hstsMaxAge`\"\u003e`hsts_max_age`\u003c/span\u003e option as well in order to become effective. Requires\n`TERMINATED_HTTPS` listener protocol. Supported only in **Octavia minor\nversion \u003e= 2.27**.\n"},"hstsMaxAge":{"type":"integer","description":"The value of the **max_age** directive for the\nStrict-Transport-Security HTTP response header. Setting this enables HTTP\nStrict Transport Security (HSTS) for the TLS-terminated listener. Requires\n`TERMINATED_HTTPS` listener protocol. Supported only in **Octavia minor\nversion \u003e= 2.27**.\n"},"hstsPreload":{"type":"boolean","description":"Defines whether the **preload** directive should\nbe added to the Strict-Transport-Security HTTP response header. This requires\nsetting the \u003cspan pulumi-lang-nodejs=\"`hstsMaxAge`\" pulumi-lang-dotnet=\"`HstsMaxAge`\" pulumi-lang-go=\"`hstsMaxAge`\" pulumi-lang-python=\"`hsts_max_age`\" pulumi-lang-yaml=\"`hstsMaxAge`\" pulumi-lang-java=\"`hstsMaxAge`\"\u003e`hsts_max_age`\u003c/span\u003e option as well in order to become effective.\nRequires `TERMINATED_HTTPS` listener protocol. Supported only in **Octavia\nminor version \u003e= 2.27**.\n"},"insertHeaders":{"type":"object","additionalProperties":{"type":"string"},"description":"The list of key value pairs representing\nheaders to insert into the request before it is sent to the backend members.\nChanging this updates the headers of the existing listener.\n"},"loadbalancerId":{"type":"string","description":"The load balancer on which to provision this\nListener. Changing this creates a new Listener.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"Human-readable name for the Listener. Does not have to be\nunique.\n"},"protocol":{"type":"string","description":"The protocol can be either `TCP`, `HTTP`, `HTTPS`,\n`TERMINATED_HTTPS`, `UDP`, `SCTP` (supported only in **Octavia minor version\n\\\u003e= 2.23**), or `PROMETHEUS` (supported only in **Octavia minor version \u003e=\n2.25**). Changing this creates a new Listener.\n","willReplaceOnChanges":true},"protocolPort":{"type":"integer","description":"The port on which to listen for client traffic.\n* Changing this creates a new Listener.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a listener. If omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e\nargument of the provider is used. Changing this creates a new Listener.\n","willReplaceOnChanges":true},"sniContainerRefs":{"type":"array","items":{"type":"string"},"description":"A list of references to Barbican Secrets\ncontainers which store SNI information. See\n[here](https://docs.openstack.org/octavia/latest/user/guides/basic-cookbook.html#deploy-a-tls-terminated-https-load-balancer)\nfor more information.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of simple strings assigned to the pool. Available\nfor Octavia **minor version 2.5 or later**.\n"},"tenantId":{"type":"string","description":"Required for admins. The UUID of the tenant who owns\nthe Listener.  Only administrative users can specify a tenant UUID other than\ntheir own. Changing this creates a new Listener.\n","willReplaceOnChanges":true},"timeoutClientData":{"type":"integer","description":"The client inactivity timeout in\nmilliseconds.\n"},"timeoutMemberConnect":{"type":"integer","description":"The member connection timeout in\nmilliseconds.\n"},"timeoutMemberData":{"type":"integer","description":"The member inactivity timeout in\nmilliseconds.\n"},"timeoutTcpInspect":{"type":"integer","description":"The time in milliseconds, to wait for\nadditional TCP packets for content inspection.\n"},"tlsCiphers":{"type":"string","description":"List of ciphers in OpenSSL format\n(colon-separated). See\nhttps://www.openssl.org/docs/man1.1.1/man1/ciphers.html for more information.\nSupported only in **Octavia minor version \u003e= 2.15**.\n"},"tlsVersions":{"type":"array","items":{"type":"string"},"description":"A list of TLS protocol versions. Available\nversions: `TLSv1`, `TLSv1.1`, `TLSv1.2`, `TLSv1.3`. Supported only in\n**Octavia minor version \u003e= 2.17**.\n"}},"requiredInputs":["loadbalancerId","protocol","protocolPort"],"stateInputs":{"description":"Input properties used for looking up and filtering Listener resources.\n","properties":{"adminStateUp":{"type":"boolean","description":"The administrative state of the Listener. A\nvalid value is true (UP) or false (DOWN).\n"},"allowedCidrs":{"type":"array","items":{"type":"string"},"description":"A list of CIDR blocks that are permitted to\nconnect to this listener, denying all other source addresses. If not present,\ndefaults to allow all.\n"},"alpnProtocols":{"type":"array","items":{"type":"string"},"description":"A list of ALPN protocols. Available protocols:\n`http/1.0`, `http/1.1`, \u003cspan pulumi-lang-nodejs=\"`h2`\" pulumi-lang-dotnet=\"`H2`\" pulumi-lang-go=\"`h2`\" pulumi-lang-python=\"`h2`\" pulumi-lang-yaml=\"`h2`\" pulumi-lang-java=\"`h2`\"\u003e`h2`\u003c/span\u003e. Supported only in **Octavia minor version \u003e=\n2.20**.\n"},"clientAuthentication":{"type":"string","description":"The TLS client authentication mode.\nAvailable options: `NONE`, `OPTIONAL` or `MANDATORY`. Requires\n`TERMINATED_HTTPS` listener protocol and the \u003cspan pulumi-lang-nodejs=\"`clientCaTlsContainerRef`\" pulumi-lang-dotnet=\"`ClientCaTlsContainerRef`\" pulumi-lang-go=\"`clientCaTlsContainerRef`\" pulumi-lang-python=\"`client_ca_tls_container_ref`\" pulumi-lang-yaml=\"`clientCaTlsContainerRef`\" pulumi-lang-java=\"`clientCaTlsContainerRef`\"\u003e`client_ca_tls_container_ref`\u003c/span\u003e.\nSupported only in **Octavia minor version \u003e= 2.8**.\n"},"clientCaTlsContainerRef":{"type":"string","description":"The ref of the key manager service\nsecret containing a PEM format client CA certificate bundle for\n`TERMINATED_HTTPS` listeners. Required if \u003cspan pulumi-lang-nodejs=\"`clientAuthentication`\" pulumi-lang-dotnet=\"`ClientAuthentication`\" pulumi-lang-go=\"`clientAuthentication`\" pulumi-lang-python=\"`client_authentication`\" pulumi-lang-yaml=\"`clientAuthentication`\" pulumi-lang-java=\"`clientAuthentication`\"\u003e`client_authentication`\u003c/span\u003e is\n`OPTIONAL` or `MANDATORY`. Supported only in **Octavia minor version \u003e=\n2.8**.\n"},"clientCrlContainerRef":{"type":"string","description":"The URI of the key manager service\nsecret containing a PEM format CA revocation list file for `TERMINATED_HTTPS`\nlisteners. Supported only in **Octavia minor version \u003e= 2.8**.\n"},"connectionLimit":{"type":"integer","description":"The maximum number of connections allowed for\nthe Listener.\n"},"defaultPoolId":{"type":"string","description":"The ID of the default pool with which the\nListener is associated.\n"},"defaultTlsContainerRef":{"type":"string","description":"A reference to a Barbican Secrets\ncontainer which stores TLS information. This is required if the protocol is\n`TERMINATED_HTTPS`. See\n[here](https://docs.openstack.org/octavia/latest/user/guides/basic-cookbook.html#deploy-a-tls-terminated-https-load-balancer)\nfor more information.\n"},"description":{"type":"string","description":"Human-readable description for the Listener.\n"},"hstsIncludeSubdomains":{"type":"boolean","description":"Defines whether the\n**includeSubDomains** directive should be added to the\nStrict-Transport-Security HTTP response header. This requires setting the\n\u003cspan pulumi-lang-nodejs=\"`hstsMaxAge`\" pulumi-lang-dotnet=\"`HstsMaxAge`\" pulumi-lang-go=\"`hstsMaxAge`\" pulumi-lang-python=\"`hsts_max_age`\" pulumi-lang-yaml=\"`hstsMaxAge`\" pulumi-lang-java=\"`hstsMaxAge`\"\u003e`hsts_max_age`\u003c/span\u003e option as well in order to become effective. Requires\n`TERMINATED_HTTPS` listener protocol. Supported only in **Octavia minor\nversion \u003e= 2.27**.\n"},"hstsMaxAge":{"type":"integer","description":"The value of the **max_age** directive for the\nStrict-Transport-Security HTTP response header. Setting this enables HTTP\nStrict Transport Security (HSTS) for the TLS-terminated listener. Requires\n`TERMINATED_HTTPS` listener protocol. Supported only in **Octavia minor\nversion \u003e= 2.27**.\n"},"hstsPreload":{"type":"boolean","description":"Defines whether the **preload** directive should\nbe added to the Strict-Transport-Security HTTP response header. This requires\nsetting the \u003cspan pulumi-lang-nodejs=\"`hstsMaxAge`\" pulumi-lang-dotnet=\"`HstsMaxAge`\" pulumi-lang-go=\"`hstsMaxAge`\" pulumi-lang-python=\"`hsts_max_age`\" pulumi-lang-yaml=\"`hstsMaxAge`\" pulumi-lang-java=\"`hstsMaxAge`\"\u003e`hsts_max_age`\u003c/span\u003e option as well in order to become effective.\nRequires `TERMINATED_HTTPS` listener protocol. Supported only in **Octavia\nminor version \u003e= 2.27**.\n"},"insertHeaders":{"type":"object","additionalProperties":{"type":"string"},"description":"The list of key value pairs representing\nheaders to insert into the request before it is sent to the backend members.\nChanging this updates the headers of the existing listener.\n"},"loadbalancerId":{"type":"string","description":"The load balancer on which to provision this\nListener. Changing this creates a new Listener.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"Human-readable name for the Listener. Does not have to be\nunique.\n"},"protocol":{"type":"string","description":"The protocol can be either `TCP`, `HTTP`, `HTTPS`,\n`TERMINATED_HTTPS`, `UDP`, `SCTP` (supported only in **Octavia minor version\n\\\u003e= 2.23**), or `PROMETHEUS` (supported only in **Octavia minor version \u003e=\n2.25**). Changing this creates a new Listener.\n","willReplaceOnChanges":true},"protocolPort":{"type":"integer","description":"The port on which to listen for client traffic.\n* Changing this creates a new Listener.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a listener. If omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e\nargument of the provider is used. Changing this creates a new Listener.\n","willReplaceOnChanges":true},"sniContainerRefs":{"type":"array","items":{"type":"string"},"description":"A list of references to Barbican Secrets\ncontainers which store SNI information. See\n[here](https://docs.openstack.org/octavia/latest/user/guides/basic-cookbook.html#deploy-a-tls-terminated-https-load-balancer)\nfor more information.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of simple strings assigned to the pool. Available\nfor Octavia **minor version 2.5 or later**.\n"},"tenantId":{"type":"string","description":"Required for admins. The UUID of the tenant who owns\nthe Listener.  Only administrative users can specify a tenant UUID other than\ntheir own. Changing this creates a new Listener.\n","willReplaceOnChanges":true},"timeoutClientData":{"type":"integer","description":"The client inactivity timeout in\nmilliseconds.\n"},"timeoutMemberConnect":{"type":"integer","description":"The member connection timeout in\nmilliseconds.\n"},"timeoutMemberData":{"type":"integer","description":"The member inactivity timeout in\nmilliseconds.\n"},"timeoutTcpInspect":{"type":"integer","description":"The time in milliseconds, to wait for\nadditional TCP packets for content inspection.\n"},"tlsCiphers":{"type":"string","description":"List of ciphers in OpenSSL format\n(colon-separated). See\nhttps://www.openssl.org/docs/man1.1.1/man1/ciphers.html for more information.\nSupported only in **Octavia minor version \u003e= 2.15**.\n"},"tlsVersions":{"type":"array","items":{"type":"string"},"description":"A list of TLS protocol versions. Available\nversions: `TLSv1`, `TLSv1.1`, `TLSv1.2`, `TLSv1.3`. Supported only in\n**Octavia minor version \u003e= 2.17**.\n"}},"type":"object"}},"openstack:loadbalancer/loadBalancer:LoadBalancer":{"description":"Manages a V2 loadbalancer resource within OpenStack.\n\n\u003e **Note:** This resource has attributes that depend on octavia minor versions.\nPlease ensure your Openstack cloud supports the required minor version.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst lb1 = new openstack.loadbalancer.LoadBalancer(\"lb_1\", {vipSubnetId: \"d9415786-5f1a-428b-b35f-2f1523e146d2\"});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nlb1 = openstack.loadbalancer.LoadBalancer(\"lb_1\", vip_subnet_id=\"d9415786-5f1a-428b-b35f-2f1523e146d2\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var lb1 = new OpenStack.LoadBalancer.LoadBalancer(\"lb_1\", new()\n    {\n        VipSubnetId = \"d9415786-5f1a-428b-b35f-2f1523e146d2\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/loadbalancer\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := loadbalancer.NewLoadBalancer(ctx, \"lb_1\", \u0026loadbalancer.LoadBalancerArgs{\n\t\t\tVipSubnetId: pulumi.String(\"d9415786-5f1a-428b-b35f-2f1523e146d2\"),\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.openstack.loadbalancer.LoadBalancer;\nimport com.pulumi.openstack.loadbalancer.LoadBalancerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 lb1 = new LoadBalancer(\"lb1\", LoadBalancerArgs.builder()\n            .vipSubnetId(\"d9415786-5f1a-428b-b35f-2f1523e146d2\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  lb1:\n    type: openstack:loadbalancer:LoadBalancer\n    name: lb_1\n    properties:\n      vipSubnetId: d9415786-5f1a-428b-b35f-2f1523e146d2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nLoad Balancer can be imported using the Load Balancer ID, e.g.:\n\n```sh\n$ pulumi import openstack:loadbalancer/loadBalancer:LoadBalancer loadbalancer_1 19bcfdc7-c521-4a7e-9459-6750bd16df76\n```\n","properties":{"adminStateUp":{"type":"boolean","description":"The administrative state of the Loadbalancer.\nA valid value is true (UP) or false (DOWN).\n"},"availabilityZone":{"type":"string","description":"The availability zone of the Loadbalancer.\nChanging this creates a new loadbalancer. Available only for Octavia\n**minor version 2.14 or later**.\n"},"description":{"type":"string","description":"Human-readable description for the Loadbalancer.\n"},"flavorId":{"type":"string","description":"The UUID of a flavor. Changing this creates a new\nloadbalancer.\n"},"loadbalancerProvider":{"type":"string","description":"The name of the provider. Changing this\ncreates a new loadbalancer.\n"},"name":{"type":"string","description":"Human-readable name for the Loadbalancer. Does not have\nto be unique.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an LB member. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nLB member.\n"},"securityGroupIds":{"type":"array","items":{"type":"string"},"description":"A list of security group IDs to apply to the\nloadbalancer. The security groups must be specified by ID and not name (as\nopposed to how they are configured with the Compute Instance).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of simple strings assigned to the loadbalancer.\nAvailable only for Octavia **minor version 2.5 or later**.\n"},"tenantId":{"type":"string","description":"Required for admins. The UUID of the tenant who owns\nthe Loadbalancer.  Only administrative users can specify a tenant UUID\nother than their own.  Changing this creates a new loadbalancer.\n"},"vipAddress":{"type":"string","description":"The ip address of the load balancer.\nChanging this creates a new loadbalancer.\n"},"vipNetworkId":{"type":"string","description":"The network on which to allocate the\nLoadbalancer's address. A tenant can only create Loadbalancers on networks\nauthorized by policy (e.g. networks that belong to them or networks that\nare shared).  Changing this creates a new loadbalancer. Exactly one of\n\u003cspan pulumi-lang-nodejs=\"`vipSubnetId`\" pulumi-lang-dotnet=\"`VipSubnetId`\" pulumi-lang-go=\"`vipSubnetId`\" pulumi-lang-python=\"`vip_subnet_id`\" pulumi-lang-yaml=\"`vipSubnetId`\" pulumi-lang-java=\"`vipSubnetId`\"\u003e`vip_subnet_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`vipNetworkId`\" pulumi-lang-dotnet=\"`VipNetworkId`\" pulumi-lang-go=\"`vipNetworkId`\" pulumi-lang-python=\"`vip_network_id`\" pulumi-lang-yaml=\"`vipNetworkId`\" pulumi-lang-java=\"`vipNetworkId`\"\u003e`vip_network_id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`vipPortId`\" pulumi-lang-dotnet=\"`VipPortId`\" pulumi-lang-go=\"`vipPortId`\" pulumi-lang-python=\"`vip_port_id`\" pulumi-lang-yaml=\"`vipPortId`\" pulumi-lang-java=\"`vipPortId`\"\u003e`vip_port_id`\u003c/span\u003e has to be defined.\n"},"vipPortId":{"type":"string","description":"The port UUID that the loadbalancer will use.\nChanging this creates a new loadbalancer. Exactly one of\n\u003cspan pulumi-lang-nodejs=\"`vipSubnetId`\" pulumi-lang-dotnet=\"`VipSubnetId`\" pulumi-lang-go=\"`vipSubnetId`\" pulumi-lang-python=\"`vip_subnet_id`\" pulumi-lang-yaml=\"`vipSubnetId`\" pulumi-lang-java=\"`vipSubnetId`\"\u003e`vip_subnet_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`vipNetworkId`\" pulumi-lang-dotnet=\"`VipNetworkId`\" pulumi-lang-go=\"`vipNetworkId`\" pulumi-lang-python=\"`vip_network_id`\" pulumi-lang-yaml=\"`vipNetworkId`\" pulumi-lang-java=\"`vipNetworkId`\"\u003e`vip_network_id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`vipPortId`\" pulumi-lang-dotnet=\"`VipPortId`\" pulumi-lang-go=\"`vipPortId`\" pulumi-lang-python=\"`vip_port_id`\" pulumi-lang-yaml=\"`vipPortId`\" pulumi-lang-java=\"`vipPortId`\"\u003e`vip_port_id`\u003c/span\u003e has to be defined.\n"},"vipQosPolicyId":{"type":"string","description":"The ID of the QoS Policy which will \nbe applied to the Virtual IP (VIP).\n"},"vipSubnetId":{"type":"string","description":"The subnet on which to allocate the\nLoadbalancer's address. A tenant can only create Loadbalancers on networks\nauthorized by policy (e.g. networks that belong to them or networks that\nare shared).  Changing this creates a new loadbalancer. Exactly one of\n\u003cspan pulumi-lang-nodejs=\"`vipSubnetId`\" pulumi-lang-dotnet=\"`VipSubnetId`\" pulumi-lang-go=\"`vipSubnetId`\" pulumi-lang-python=\"`vip_subnet_id`\" pulumi-lang-yaml=\"`vipSubnetId`\" pulumi-lang-java=\"`vipSubnetId`\"\u003e`vip_subnet_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`vipNetworkId`\" pulumi-lang-dotnet=\"`VipNetworkId`\" pulumi-lang-go=\"`vipNetworkId`\" pulumi-lang-python=\"`vip_network_id`\" pulumi-lang-yaml=\"`vipNetworkId`\" pulumi-lang-java=\"`vipNetworkId`\"\u003e`vip_network_id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`vipPortId`\" pulumi-lang-dotnet=\"`VipPortId`\" pulumi-lang-go=\"`vipPortId`\" pulumi-lang-python=\"`vip_port_id`\" pulumi-lang-yaml=\"`vipPortId`\" pulumi-lang-java=\"`vipPortId`\"\u003e`vip_port_id`\u003c/span\u003e has to be defined.\n"}},"required":["flavorId","loadbalancerProvider","name","region","securityGroupIds","tenantId","vipAddress","vipNetworkId","vipPortId","vipSubnetId"],"inputProperties":{"adminStateUp":{"type":"boolean","description":"The administrative state of the Loadbalancer.\nA valid value is true (UP) or false (DOWN).\n"},"availabilityZone":{"type":"string","description":"The availability zone of the Loadbalancer.\nChanging this creates a new loadbalancer. Available only for Octavia\n**minor version 2.14 or later**.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"Human-readable description for the Loadbalancer.\n"},"flavorId":{"type":"string","description":"The UUID of a flavor. Changing this creates a new\nloadbalancer.\n","willReplaceOnChanges":true},"loadbalancerProvider":{"type":"string","description":"The name of the provider. Changing this\ncreates a new loadbalancer.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"Human-readable name for the Loadbalancer. Does not have\nto be unique.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an LB member. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nLB member.\n","willReplaceOnChanges":true},"securityGroupIds":{"type":"array","items":{"type":"string"},"description":"A list of security group IDs to apply to the\nloadbalancer. The security groups must be specified by ID and not name (as\nopposed to how they are configured with the Compute Instance).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of simple strings assigned to the loadbalancer.\nAvailable only for Octavia **minor version 2.5 or later**.\n"},"tenantId":{"type":"string","description":"Required for admins. The UUID of the tenant who owns\nthe Loadbalancer.  Only administrative users can specify a tenant UUID\nother than their own.  Changing this creates a new loadbalancer.\n","willReplaceOnChanges":true},"vipAddress":{"type":"string","description":"The ip address of the load balancer.\nChanging this creates a new loadbalancer.\n","willReplaceOnChanges":true},"vipNetworkId":{"type":"string","description":"The network on which to allocate the\nLoadbalancer's address. A tenant can only create Loadbalancers on networks\nauthorized by policy (e.g. networks that belong to them or networks that\nare shared).  Changing this creates a new loadbalancer. Exactly one of\n\u003cspan pulumi-lang-nodejs=\"`vipSubnetId`\" pulumi-lang-dotnet=\"`VipSubnetId`\" pulumi-lang-go=\"`vipSubnetId`\" pulumi-lang-python=\"`vip_subnet_id`\" pulumi-lang-yaml=\"`vipSubnetId`\" pulumi-lang-java=\"`vipSubnetId`\"\u003e`vip_subnet_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`vipNetworkId`\" pulumi-lang-dotnet=\"`VipNetworkId`\" pulumi-lang-go=\"`vipNetworkId`\" pulumi-lang-python=\"`vip_network_id`\" pulumi-lang-yaml=\"`vipNetworkId`\" pulumi-lang-java=\"`vipNetworkId`\"\u003e`vip_network_id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`vipPortId`\" pulumi-lang-dotnet=\"`VipPortId`\" pulumi-lang-go=\"`vipPortId`\" pulumi-lang-python=\"`vip_port_id`\" pulumi-lang-yaml=\"`vipPortId`\" pulumi-lang-java=\"`vipPortId`\"\u003e`vip_port_id`\u003c/span\u003e has to be defined.\n","willReplaceOnChanges":true},"vipPortId":{"type":"string","description":"The port UUID that the loadbalancer will use.\nChanging this creates a new loadbalancer. Exactly one of\n\u003cspan pulumi-lang-nodejs=\"`vipSubnetId`\" pulumi-lang-dotnet=\"`VipSubnetId`\" pulumi-lang-go=\"`vipSubnetId`\" pulumi-lang-python=\"`vip_subnet_id`\" pulumi-lang-yaml=\"`vipSubnetId`\" pulumi-lang-java=\"`vipSubnetId`\"\u003e`vip_subnet_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`vipNetworkId`\" pulumi-lang-dotnet=\"`VipNetworkId`\" pulumi-lang-go=\"`vipNetworkId`\" pulumi-lang-python=\"`vip_network_id`\" pulumi-lang-yaml=\"`vipNetworkId`\" pulumi-lang-java=\"`vipNetworkId`\"\u003e`vip_network_id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`vipPortId`\" pulumi-lang-dotnet=\"`VipPortId`\" pulumi-lang-go=\"`vipPortId`\" pulumi-lang-python=\"`vip_port_id`\" pulumi-lang-yaml=\"`vipPortId`\" pulumi-lang-java=\"`vipPortId`\"\u003e`vip_port_id`\u003c/span\u003e has to be defined.\n","willReplaceOnChanges":true},"vipQosPolicyId":{"type":"string","description":"The ID of the QoS Policy which will \nbe applied to the Virtual IP (VIP).\n"},"vipSubnetId":{"type":"string","description":"The subnet on which to allocate the\nLoadbalancer's address. A tenant can only create Loadbalancers on networks\nauthorized by policy (e.g. networks that belong to them or networks that\nare shared).  Changing this creates a new loadbalancer. Exactly one of\n\u003cspan pulumi-lang-nodejs=\"`vipSubnetId`\" pulumi-lang-dotnet=\"`VipSubnetId`\" pulumi-lang-go=\"`vipSubnetId`\" pulumi-lang-python=\"`vip_subnet_id`\" pulumi-lang-yaml=\"`vipSubnetId`\" pulumi-lang-java=\"`vipSubnetId`\"\u003e`vip_subnet_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`vipNetworkId`\" pulumi-lang-dotnet=\"`VipNetworkId`\" pulumi-lang-go=\"`vipNetworkId`\" pulumi-lang-python=\"`vip_network_id`\" pulumi-lang-yaml=\"`vipNetworkId`\" pulumi-lang-java=\"`vipNetworkId`\"\u003e`vip_network_id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`vipPortId`\" pulumi-lang-dotnet=\"`VipPortId`\" pulumi-lang-go=\"`vipPortId`\" pulumi-lang-python=\"`vip_port_id`\" pulumi-lang-yaml=\"`vipPortId`\" pulumi-lang-java=\"`vipPortId`\"\u003e`vip_port_id`\u003c/span\u003e has to be defined.\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering LoadBalancer resources.\n","properties":{"adminStateUp":{"type":"boolean","description":"The administrative state of the Loadbalancer.\nA valid value is true (UP) or false (DOWN).\n"},"availabilityZone":{"type":"string","description":"The availability zone of the Loadbalancer.\nChanging this creates a new loadbalancer. Available only for Octavia\n**minor version 2.14 or later**.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"Human-readable description for the Loadbalancer.\n"},"flavorId":{"type":"string","description":"The UUID of a flavor. Changing this creates a new\nloadbalancer.\n","willReplaceOnChanges":true},"loadbalancerProvider":{"type":"string","description":"The name of the provider. Changing this\ncreates a new loadbalancer.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"Human-readable name for the Loadbalancer. Does not have\nto be unique.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an LB member. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nLB member.\n","willReplaceOnChanges":true},"securityGroupIds":{"type":"array","items":{"type":"string"},"description":"A list of security group IDs to apply to the\nloadbalancer. The security groups must be specified by ID and not name (as\nopposed to how they are configured with the Compute Instance).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of simple strings assigned to the loadbalancer.\nAvailable only for Octavia **minor version 2.5 or later**.\n"},"tenantId":{"type":"string","description":"Required for admins. The UUID of the tenant who owns\nthe Loadbalancer.  Only administrative users can specify a tenant UUID\nother than their own.  Changing this creates a new loadbalancer.\n","willReplaceOnChanges":true},"vipAddress":{"type":"string","description":"The ip address of the load balancer.\nChanging this creates a new loadbalancer.\n","willReplaceOnChanges":true},"vipNetworkId":{"type":"string","description":"The network on which to allocate the\nLoadbalancer's address. A tenant can only create Loadbalancers on networks\nauthorized by policy (e.g. networks that belong to them or networks that\nare shared).  Changing this creates a new loadbalancer. Exactly one of\n\u003cspan pulumi-lang-nodejs=\"`vipSubnetId`\" pulumi-lang-dotnet=\"`VipSubnetId`\" pulumi-lang-go=\"`vipSubnetId`\" pulumi-lang-python=\"`vip_subnet_id`\" pulumi-lang-yaml=\"`vipSubnetId`\" pulumi-lang-java=\"`vipSubnetId`\"\u003e`vip_subnet_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`vipNetworkId`\" pulumi-lang-dotnet=\"`VipNetworkId`\" pulumi-lang-go=\"`vipNetworkId`\" pulumi-lang-python=\"`vip_network_id`\" pulumi-lang-yaml=\"`vipNetworkId`\" pulumi-lang-java=\"`vipNetworkId`\"\u003e`vip_network_id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`vipPortId`\" pulumi-lang-dotnet=\"`VipPortId`\" pulumi-lang-go=\"`vipPortId`\" pulumi-lang-python=\"`vip_port_id`\" pulumi-lang-yaml=\"`vipPortId`\" pulumi-lang-java=\"`vipPortId`\"\u003e`vip_port_id`\u003c/span\u003e has to be defined.\n","willReplaceOnChanges":true},"vipPortId":{"type":"string","description":"The port UUID that the loadbalancer will use.\nChanging this creates a new loadbalancer. Exactly one of\n\u003cspan pulumi-lang-nodejs=\"`vipSubnetId`\" pulumi-lang-dotnet=\"`VipSubnetId`\" pulumi-lang-go=\"`vipSubnetId`\" pulumi-lang-python=\"`vip_subnet_id`\" pulumi-lang-yaml=\"`vipSubnetId`\" pulumi-lang-java=\"`vipSubnetId`\"\u003e`vip_subnet_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`vipNetworkId`\" pulumi-lang-dotnet=\"`VipNetworkId`\" pulumi-lang-go=\"`vipNetworkId`\" pulumi-lang-python=\"`vip_network_id`\" pulumi-lang-yaml=\"`vipNetworkId`\" pulumi-lang-java=\"`vipNetworkId`\"\u003e`vip_network_id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`vipPortId`\" pulumi-lang-dotnet=\"`VipPortId`\" pulumi-lang-go=\"`vipPortId`\" pulumi-lang-python=\"`vip_port_id`\" pulumi-lang-yaml=\"`vipPortId`\" pulumi-lang-java=\"`vipPortId`\"\u003e`vip_port_id`\u003c/span\u003e has to be defined.\n","willReplaceOnChanges":true},"vipQosPolicyId":{"type":"string","description":"The ID of the QoS Policy which will \nbe applied to the Virtual IP (VIP).\n"},"vipSubnetId":{"type":"string","description":"The subnet on which to allocate the\nLoadbalancer's address. A tenant can only create Loadbalancers on networks\nauthorized by policy (e.g. networks that belong to them or networks that\nare shared).  Changing this creates a new loadbalancer. Exactly one of\n\u003cspan pulumi-lang-nodejs=\"`vipSubnetId`\" pulumi-lang-dotnet=\"`VipSubnetId`\" pulumi-lang-go=\"`vipSubnetId`\" pulumi-lang-python=\"`vip_subnet_id`\" pulumi-lang-yaml=\"`vipSubnetId`\" pulumi-lang-java=\"`vipSubnetId`\"\u003e`vip_subnet_id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`vipNetworkId`\" pulumi-lang-dotnet=\"`VipNetworkId`\" pulumi-lang-go=\"`vipNetworkId`\" pulumi-lang-python=\"`vip_network_id`\" pulumi-lang-yaml=\"`vipNetworkId`\" pulumi-lang-java=\"`vipNetworkId`\"\u003e`vip_network_id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`vipPortId`\" pulumi-lang-dotnet=\"`VipPortId`\" pulumi-lang-go=\"`vipPortId`\" pulumi-lang-python=\"`vip_port_id`\" pulumi-lang-yaml=\"`vipPortId`\" pulumi-lang-java=\"`vipPortId`\"\u003e`vip_port_id`\u003c/span\u003e has to be defined.\n","willReplaceOnChanges":true}},"type":"object"},"aliases":[{"type":"openstack:index/lbLoadbalancerV2:LbLoadbalancerV2"}]},"openstack:loadbalancer/member:Member":{"description":"Manages a V2 member resource within OpenStack.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst member1 = new openstack.loadbalancer.Member(\"member_1\", {\n    poolId: \"935685fb-a896-40f9-9ff4-ae531a3a00fe\",\n    address: \"192.168.199.23\",\n    protocolPort: 8080,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nmember1 = openstack.loadbalancer.Member(\"member_1\",\n    pool_id=\"935685fb-a896-40f9-9ff4-ae531a3a00fe\",\n    address=\"192.168.199.23\",\n    protocol_port=8080)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var member1 = new OpenStack.LoadBalancer.Member(\"member_1\", new()\n    {\n        PoolId = \"935685fb-a896-40f9-9ff4-ae531a3a00fe\",\n        Address = \"192.168.199.23\",\n        ProtocolPort = 8080,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/loadbalancer\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := loadbalancer.NewMember(ctx, \"member_1\", \u0026loadbalancer.MemberArgs{\n\t\t\tPoolId:       pulumi.String(\"935685fb-a896-40f9-9ff4-ae531a3a00fe\"),\n\t\t\tAddress:      pulumi.String(\"192.168.199.23\"),\n\t\t\tProtocolPort: pulumi.Int(8080),\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.openstack.loadbalancer.Member;\nimport com.pulumi.openstack.loadbalancer.MemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 member1 = new Member(\"member1\", MemberArgs.builder()\n            .poolId(\"935685fb-a896-40f9-9ff4-ae531a3a00fe\")\n            .address(\"192.168.199.23\")\n            .protocolPort(8080)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  member1:\n    type: openstack:loadbalancer:Member\n    name: member_1\n    properties:\n      poolId: 935685fb-a896-40f9-9ff4-ae531a3a00fe\n      address: 192.168.199.23\n      protocolPort: 8080\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nLoad Balancer Pool Member can be imported using the Pool ID and Member ID\nseparated by a slash, e.g.:\n\n```sh\n$ pulumi import openstack:loadbalancer/member:Member member_1 c22974d2-4c95-4bcb-9819-0afc5ed303d5/9563b79c-8460-47da-8a95-2711b746510f\n```\n","properties":{"address":{"type":"string","description":"The IP address of the member to receive traffic from\nthe load balancer. Changing this creates a new member.\n"},"adminStateUp":{"type":"boolean","description":"The administrative state of the member.\nA valid value is true (UP) or false (DOWN). Defaults to true.\n"},"backup":{"type":"boolean","description":"Boolean that indicates whether that member works as a backup or not. Available \nonly for Octavia \u003e= 2.1.\n"},"monitorAddress":{"type":"string","description":"An alternate IP address used for health monitoring a backend member.\nAvailable only for Octavia\n"},"monitorPort":{"type":"integer","description":"An alternate protocol port used for health monitoring a backend member.\nAvailable only for Octavia\n"},"name":{"type":"string","description":"Human-readable name for the member.\n"},"poolId":{"type":"string","description":"The id of the pool that this member will be assigned\nto. Changing this creates a new member.\n"},"protocolPort":{"type":"integer","description":"The port on which to listen for client traffic.\nChanging this creates a new member.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a member. If omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e\nargument of the provider is used. Changing this creates a new member.\n"},"subnetId":{"type":"string","description":"The subnet in which to access the member. Changing\nthis creates a new member.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of simple strings assigned to the member.\nAvailable only for Octavia \u003e= 2.5.\n"},"tenantId":{"type":"string","description":"Required for admins. The UUID of the tenant who owns\nthe member.  Only administrative users can specify a tenant UUID\nother than their own. Changing this creates a new member.\n"},"weight":{"type":"integer","description":"A positive integer value that indicates the relative\nportion of traffic that this member should receive from the pool. For\nexample, a member with a weight of 10 receives five times as much traffic\nas a member with a weight of 2. Defaults to 1.\n"}},"required":["address","name","poolId","protocolPort","region","tenantId","weight"],"inputProperties":{"address":{"type":"string","description":"The IP address of the member to receive traffic from\nthe load balancer. Changing this creates a new member.\n","willReplaceOnChanges":true},"adminStateUp":{"type":"boolean","description":"The administrative state of the member.\nA valid value is true (UP) or false (DOWN). Defaults to true.\n"},"backup":{"type":"boolean","description":"Boolean that indicates whether that member works as a backup or not. Available \nonly for Octavia \u003e= 2.1.\n"},"monitorAddress":{"type":"string","description":"An alternate IP address used for health monitoring a backend member.\nAvailable only for Octavia\n"},"monitorPort":{"type":"integer","description":"An alternate protocol port used for health monitoring a backend member.\nAvailable only for Octavia\n"},"name":{"type":"string","description":"Human-readable name for the member.\n"},"poolId":{"type":"string","description":"The id of the pool that this member will be assigned\nto. Changing this creates a new member.\n","willReplaceOnChanges":true},"protocolPort":{"type":"integer","description":"The port on which to listen for client traffic.\nChanging this creates a new member.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a member. If omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e\nargument of the provider is used. Changing this creates a new member.\n","willReplaceOnChanges":true},"subnetId":{"type":"string","description":"The subnet in which to access the member. Changing\nthis creates a new member.\n","willReplaceOnChanges":true},"tags":{"type":"array","items":{"type":"string"},"description":"A list of simple strings assigned to the member.\nAvailable only for Octavia \u003e= 2.5.\n"},"tenantId":{"type":"string","description":"Required for admins. The UUID of the tenant who owns\nthe member.  Only administrative users can specify a tenant UUID\nother than their own. Changing this creates a new member.\n","willReplaceOnChanges":true},"weight":{"type":"integer","description":"A positive integer value that indicates the relative\nportion of traffic that this member should receive from the pool. For\nexample, a member with a weight of 10 receives five times as much traffic\nas a member with a weight of 2. Defaults to 1.\n"}},"requiredInputs":["address","poolId","protocolPort"],"stateInputs":{"description":"Input properties used for looking up and filtering Member resources.\n","properties":{"address":{"type":"string","description":"The IP address of the member to receive traffic from\nthe load balancer. Changing this creates a new member.\n","willReplaceOnChanges":true},"adminStateUp":{"type":"boolean","description":"The administrative state of the member.\nA valid value is true (UP) or false (DOWN). Defaults to true.\n"},"backup":{"type":"boolean","description":"Boolean that indicates whether that member works as a backup or not. Available \nonly for Octavia \u003e= 2.1.\n"},"monitorAddress":{"type":"string","description":"An alternate IP address used for health monitoring a backend member.\nAvailable only for Octavia\n"},"monitorPort":{"type":"integer","description":"An alternate protocol port used for health monitoring a backend member.\nAvailable only for Octavia\n"},"name":{"type":"string","description":"Human-readable name for the member.\n"},"poolId":{"type":"string","description":"The id of the pool that this member will be assigned\nto. Changing this creates a new member.\n","willReplaceOnChanges":true},"protocolPort":{"type":"integer","description":"The port on which to listen for client traffic.\nChanging this creates a new member.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a member. If omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e\nargument of the provider is used. Changing this creates a new member.\n","willReplaceOnChanges":true},"subnetId":{"type":"string","description":"The subnet in which to access the member. Changing\nthis creates a new member.\n","willReplaceOnChanges":true},"tags":{"type":"array","items":{"type":"string"},"description":"A list of simple strings assigned to the member.\nAvailable only for Octavia \u003e= 2.5.\n"},"tenantId":{"type":"string","description":"Required for admins. The UUID of the tenant who owns\nthe member.  Only administrative users can specify a tenant UUID\nother than their own. Changing this creates a new member.\n","willReplaceOnChanges":true},"weight":{"type":"integer","description":"A positive integer value that indicates the relative\nportion of traffic that this member should receive from the pool. For\nexample, a member with a weight of 10 receives five times as much traffic\nas a member with a weight of 2. Defaults to 1.\n"}},"type":"object"}},"openstack:loadbalancer/members:Members":{"description":"Manages a V2 members resource within OpenStack (batch members update).\n\n\u003e **Note:** This resource has attributes that depend on octavia minor versions.\nPlease ensure your Openstack cloud supports the required minor version.\n\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst members1 = new openstack.loadbalancer.Members(\"members_1\", {\n    poolId: \"935685fb-a896-40f9-9ff4-ae531a3a00fe\",\n    members: [\n        {\n            address: \"192.168.199.23\",\n            protocolPort: 8080,\n        },\n        {\n            address: \"192.168.199.24\",\n            protocolPort: 8080,\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nmembers1 = openstack.loadbalancer.Members(\"members_1\",\n    pool_id=\"935685fb-a896-40f9-9ff4-ae531a3a00fe\",\n    members=[\n        {\n            \"address\": \"192.168.199.23\",\n            \"protocol_port\": 8080,\n        },\n        {\n            \"address\": \"192.168.199.24\",\n            \"protocol_port\": 8080,\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var members1 = new OpenStack.LoadBalancer.Members(\"members_1\", new()\n    {\n        PoolId = \"935685fb-a896-40f9-9ff4-ae531a3a00fe\",\n        MemberList = new[]\n        {\n            new OpenStack.LoadBalancer.Inputs.MembersMemberArgs\n            {\n                Address = \"192.168.199.23\",\n                ProtocolPort = 8080,\n            },\n            new OpenStack.LoadBalancer.Inputs.MembersMemberArgs\n            {\n                Address = \"192.168.199.24\",\n                ProtocolPort = 8080,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/loadbalancer\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := loadbalancer.NewMembers(ctx, \"members_1\", \u0026loadbalancer.MembersArgs{\n\t\t\tPoolId: pulumi.String(\"935685fb-a896-40f9-9ff4-ae531a3a00fe\"),\n\t\t\tMembers: loadbalancer.MembersMemberArray{\n\t\t\t\t\u0026loadbalancer.MembersMemberArgs{\n\t\t\t\t\tAddress:      pulumi.String(\"192.168.199.23\"),\n\t\t\t\t\tProtocolPort: pulumi.Int(8080),\n\t\t\t\t},\n\t\t\t\t\u0026loadbalancer.MembersMemberArgs{\n\t\t\t\t\tAddress:      pulumi.String(\"192.168.199.24\"),\n\t\t\t\t\tProtocolPort: pulumi.Int(8080),\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.openstack.loadbalancer.Members;\nimport com.pulumi.openstack.loadbalancer.MembersArgs;\nimport com.pulumi.openstack.loadbalancer.inputs.MembersMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 members1 = new Members(\"members1\", MembersArgs.builder()\n            .poolId(\"935685fb-a896-40f9-9ff4-ae531a3a00fe\")\n            .members(            \n                MembersMemberArgs.builder()\n                    .address(\"192.168.199.23\")\n                    .protocolPort(8080)\n                    .build(),\n                MembersMemberArgs.builder()\n                    .address(\"192.168.199.24\")\n                    .protocolPort(8080)\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  members1:\n    type: openstack:loadbalancer:Members\n    name: members_1\n    properties:\n      poolId: 935685fb-a896-40f9-9ff4-ae531a3a00fe\n      members:\n        - address: 192.168.199.23\n          protocolPort: 8080\n        - address: 192.168.199.24\n          protocolPort: 8080\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nLoad Balancer Pool Members can be imported using the Pool ID, e.g.:\n\n```sh\n$ pulumi import openstack:loadbalancer/members:Members members_1 c22974d2-4c95-4bcb-9819-0afc5ed303d5\n```\n","properties":{"members":{"type":"array","items":{"$ref":"#/types/openstack:loadbalancer/MembersMember:MembersMember"},"description":"A set of dictionaries containing member parameters. The\nstructure is described below.\n","language":{"csharp":{"name":"MemberList"}}},"poolId":{"type":"string","description":"The id of the pool that members will be assigned to.\nChanging this creates a new members resource.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create pool members. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nmembers resource.\n"}},"required":["poolId","region"],"inputProperties":{"members":{"type":"array","items":{"$ref":"#/types/openstack:loadbalancer/MembersMember:MembersMember"},"description":"A set of dictionaries containing member parameters. The\nstructure is described below.\n","language":{"csharp":{"name":"MemberList"}}},"poolId":{"type":"string","description":"The id of the pool that members will be assigned to.\nChanging this creates a new members resource.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create pool members. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nmembers resource.\n","willReplaceOnChanges":true}},"requiredInputs":["poolId"],"stateInputs":{"description":"Input properties used for looking up and filtering Members resources.\n","properties":{"members":{"type":"array","items":{"$ref":"#/types/openstack:loadbalancer/MembersMember:MembersMember"},"description":"A set of dictionaries containing member parameters. The\nstructure is described below.\n","language":{"csharp":{"name":"MemberList"}}},"poolId":{"type":"string","description":"The id of the pool that members will be assigned to.\nChanging this creates a new members resource.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create pool members. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nmembers resource.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:loadbalancer/monitor:Monitor":{"description":"Manages a V2 monitor resource within OpenStack.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst monitor1 = new openstack.loadbalancer.Monitor(\"monitor_1\", {\n    poolId: pool1.id,\n    type: \"PING\",\n    delay: 20,\n    timeout: 10,\n    maxRetries: 5,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nmonitor1 = openstack.loadbalancer.Monitor(\"monitor_1\",\n    pool_id=pool1[\"id\"],\n    type=\"PING\",\n    delay=20,\n    timeout=10,\n    max_retries=5)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var monitor1 = new OpenStack.LoadBalancer.Monitor(\"monitor_1\", new()\n    {\n        PoolId = pool1.Id,\n        Type = \"PING\",\n        Delay = 20,\n        Timeout = 10,\n        MaxRetries = 5,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/loadbalancer\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := loadbalancer.NewMonitor(ctx, \"monitor_1\", \u0026loadbalancer.MonitorArgs{\n\t\t\tPoolId:     pulumi.Any(pool1.Id),\n\t\t\tType:       pulumi.String(\"PING\"),\n\t\t\tDelay:      pulumi.Int(20),\n\t\t\tTimeout:    pulumi.Int(10),\n\t\t\tMaxRetries: pulumi.Int(5),\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.openstack.loadbalancer.Monitor;\nimport com.pulumi.openstack.loadbalancer.MonitorArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 monitor1 = new Monitor(\"monitor1\", MonitorArgs.builder()\n            .poolId(pool1.id())\n            .type(\"PING\")\n            .delay(20)\n            .timeout(10)\n            .maxRetries(5)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  monitor1:\n    type: openstack:loadbalancer:Monitor\n    name: monitor_1\n    properties:\n      poolId: ${pool1.id}\n      type: PING\n      delay: 20\n      timeout: 10\n      maxRetries: 5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nLoad Balancer Pool Monitor can be imported using the Monitor ID, e.g.:\n\n```sh\n$ pulumi import openstack:loadbalancer/monitor:Monitor monitor_1 47c26fc3-2403-427a-8c79-1589bd0533c2\n```\nIn case of using OpenContrail, the import may not work properly. If you face an issue, try to import the monitor providing its parent pool ID:\n\n```sh\n$ pulumi import openstack:loadbalancer/monitor:Monitor monitor_1 47c26fc3-2403-427a-8c79-1589bd0533c2/708bc224-0f8c-4981-ac82-97095fe051b6\n```\n","properties":{"adminStateUp":{"type":"boolean","description":"The administrative state of the monitor.\nA valid value is true (UP) or false (DOWN).\n"},"delay":{"type":"integer","description":"The time, in seconds, between sending probes to members.\n"},"domainName":{"type":"string","description":"The domain name to use in the HTTP host header\nhealth monitor requests. Supported in Octavia API version 2.10 or later.\n"},"expectedCodes":{"type":"string","description":"Required for HTTP(S) types. Expected HTTP codes\nfor a passing HTTP(S) monitor. You can either specify a single status like\n\"200\", a list like \"200, 202\" or a range like \"200-202\". Default is \"200\".\n"},"httpMethod":{"type":"string","description":"Required for HTTP(S) types. The HTTP method that \nthe health monitor uses for requests. One of CONNECT, DELETE, GET, HEAD,\nOPTIONS, PATCH, POST, PUT, or TRACE. The default is GET.\n"},"httpVersion":{"type":"string","description":"Required for HTTP(S) types. The HTTP version that\nthe health monitor uses for requests. One of `1.0` or 1.1` is supported\nfor HTTP(S) monitors. The default is `1.0`. Supported in Octavia API version\n2.10 or later.\n"},"maxRetries":{"type":"integer","description":"Number of permissible ping failures before\nchanging the member's status to INACTIVE. Must be a number between 1\nand 10.\n"},"maxRetriesDown":{"type":"integer","description":"Number of permissible ping failures before \nchanging the member's status to ERROR. Must be a number between 1 and 10.\nThe default is 3. Changing this updates the\u003cspan pulumi-lang-nodejs=\" maxRetriesDown \" pulumi-lang-dotnet=\" MaxRetriesDown \" pulumi-lang-go=\" maxRetriesDown \" pulumi-lang-python=\" max_retries_down \" pulumi-lang-yaml=\" maxRetriesDown \" pulumi-lang-java=\" maxRetriesDown \"\u003e max_retries_down \u003c/span\u003eof the\nexisting monitor.\n"},"name":{"type":"string","description":"The Name of the Monitor.\n"},"poolId":{"type":"string","description":"The id of the pool that this monitor will be assigned to.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a monitor. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nmonitor.\n"},"tenantId":{"type":"string","description":"Required for admins. The UUID of the tenant who owns\nthe monitor.  Only administrative users can specify a tenant UUID\nother than their own. Changing this creates a new monitor.\n"},"timeout":{"type":"integer","description":"Maximum number of seconds for a monitor to wait for a\nping reply before it times out. The value must be less than the delay\nvalue.\n"},"type":{"type":"string","description":"The type of probe, which is PING, TCP, HTTP, HTTPS,\nTLS-HELLO, SCTP or UDP-CONNECT, that is sent by the loadbalancer to\nverify the member state. Changing this creates a new monitor.\n"},"urlPath":{"type":"string","description":"Required for HTTP(S) types. URI path that will be\naccessed if monitor type is HTTP or HTTPS. Default is `/`.\n"}},"required":["delay","expectedCodes","httpMethod","maxRetries","maxRetriesDown","name","poolId","region","tenantId","timeout","type","urlPath"],"inputProperties":{"adminStateUp":{"type":"boolean","description":"The administrative state of the monitor.\nA valid value is true (UP) or false (DOWN).\n"},"delay":{"type":"integer","description":"The time, in seconds, between sending probes to members.\n"},"domainName":{"type":"string","description":"The domain name to use in the HTTP host header\nhealth monitor requests. Supported in Octavia API version 2.10 or later.\n"},"expectedCodes":{"type":"string","description":"Required for HTTP(S) types. Expected HTTP codes\nfor a passing HTTP(S) monitor. You can either specify a single status like\n\"200\", a list like \"200, 202\" or a range like \"200-202\". Default is \"200\".\n"},"httpMethod":{"type":"string","description":"Required for HTTP(S) types. The HTTP method that \nthe health monitor uses for requests. One of CONNECT, DELETE, GET, HEAD,\nOPTIONS, PATCH, POST, PUT, or TRACE. The default is GET.\n"},"httpVersion":{"type":"string","description":"Required for HTTP(S) types. The HTTP version that\nthe health monitor uses for requests. One of `1.0` or 1.1` is supported\nfor HTTP(S) monitors. The default is `1.0`. Supported in Octavia API version\n2.10 or later.\n"},"maxRetries":{"type":"integer","description":"Number of permissible ping failures before\nchanging the member's status to INACTIVE. Must be a number between 1\nand 10.\n"},"maxRetriesDown":{"type":"integer","description":"Number of permissible ping failures before \nchanging the member's status to ERROR. Must be a number between 1 and 10.\nThe default is 3. Changing this updates the\u003cspan pulumi-lang-nodejs=\" maxRetriesDown \" pulumi-lang-dotnet=\" MaxRetriesDown \" pulumi-lang-go=\" maxRetriesDown \" pulumi-lang-python=\" max_retries_down \" pulumi-lang-yaml=\" maxRetriesDown \" pulumi-lang-java=\" maxRetriesDown \"\u003e max_retries_down \u003c/span\u003eof the\nexisting monitor.\n"},"name":{"type":"string","description":"The Name of the Monitor.\n"},"poolId":{"type":"string","description":"The id of the pool that this monitor will be assigned to.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a monitor. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nmonitor.\n","willReplaceOnChanges":true},"tenantId":{"type":"string","description":"Required for admins. The UUID of the tenant who owns\nthe monitor.  Only administrative users can specify a tenant UUID\nother than their own. Changing this creates a new monitor.\n","willReplaceOnChanges":true},"timeout":{"type":"integer","description":"Maximum number of seconds for a monitor to wait for a\nping reply before it times out. The value must be less than the delay\nvalue.\n"},"type":{"type":"string","description":"The type of probe, which is PING, TCP, HTTP, HTTPS,\nTLS-HELLO, SCTP or UDP-CONNECT, that is sent by the loadbalancer to\nverify the member state. Changing this creates a new monitor.\n","willReplaceOnChanges":true},"urlPath":{"type":"string","description":"Required for HTTP(S) types. URI path that will be\naccessed if monitor type is HTTP or HTTPS. Default is `/`.\n"}},"requiredInputs":["delay","maxRetries","poolId","timeout","type"],"stateInputs":{"description":"Input properties used for looking up and filtering Monitor resources.\n","properties":{"adminStateUp":{"type":"boolean","description":"The administrative state of the monitor.\nA valid value is true (UP) or false (DOWN).\n"},"delay":{"type":"integer","description":"The time, in seconds, between sending probes to members.\n"},"domainName":{"type":"string","description":"The domain name to use in the HTTP host header\nhealth monitor requests. Supported in Octavia API version 2.10 or later.\n"},"expectedCodes":{"type":"string","description":"Required for HTTP(S) types. Expected HTTP codes\nfor a passing HTTP(S) monitor. You can either specify a single status like\n\"200\", a list like \"200, 202\" or a range like \"200-202\". Default is \"200\".\n"},"httpMethod":{"type":"string","description":"Required for HTTP(S) types. The HTTP method that \nthe health monitor uses for requests. One of CONNECT, DELETE, GET, HEAD,\nOPTIONS, PATCH, POST, PUT, or TRACE. The default is GET.\n"},"httpVersion":{"type":"string","description":"Required for HTTP(S) types. The HTTP version that\nthe health monitor uses for requests. One of `1.0` or 1.1` is supported\nfor HTTP(S) monitors. The default is `1.0`. Supported in Octavia API version\n2.10 or later.\n"},"maxRetries":{"type":"integer","description":"Number of permissible ping failures before\nchanging the member's status to INACTIVE. Must be a number between 1\nand 10.\n"},"maxRetriesDown":{"type":"integer","description":"Number of permissible ping failures before \nchanging the member's status to ERROR. Must be a number between 1 and 10.\nThe default is 3. Changing this updates the\u003cspan pulumi-lang-nodejs=\" maxRetriesDown \" pulumi-lang-dotnet=\" MaxRetriesDown \" pulumi-lang-go=\" maxRetriesDown \" pulumi-lang-python=\" max_retries_down \" pulumi-lang-yaml=\" maxRetriesDown \" pulumi-lang-java=\" maxRetriesDown \"\u003e max_retries_down \u003c/span\u003eof the\nexisting monitor.\n"},"name":{"type":"string","description":"The Name of the Monitor.\n"},"poolId":{"type":"string","description":"The id of the pool that this monitor will be assigned to.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a monitor. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nmonitor.\n","willReplaceOnChanges":true},"tenantId":{"type":"string","description":"Required for admins. The UUID of the tenant who owns\nthe monitor.  Only administrative users can specify a tenant UUID\nother than their own. Changing this creates a new monitor.\n","willReplaceOnChanges":true},"timeout":{"type":"integer","description":"Maximum number of seconds for a monitor to wait for a\nping reply before it times out. The value must be less than the delay\nvalue.\n"},"type":{"type":"string","description":"The type of probe, which is PING, TCP, HTTP, HTTPS,\nTLS-HELLO, SCTP or UDP-CONNECT, that is sent by the loadbalancer to\nverify the member state. Changing this creates a new monitor.\n","willReplaceOnChanges":true},"urlPath":{"type":"string","description":"Required for HTTP(S) types. URI path that will be\naccessed if monitor type is HTTP or HTTPS. Default is `/`.\n"}},"type":"object"}},"openstack:loadbalancer/pool:Pool":{"description":"Manages a V2 pool resource within OpenStack.\n\n\u003e **Note:** This resource has attributes that depend on octavia minor versions.\nPlease ensure your Openstack cloud supports the required minor version.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst pool1 = new openstack.loadbalancer.Pool(\"pool_1\", {\n    protocol: \"HTTP\",\n    lbMethod: \"ROUND_ROBIN\",\n    listenerId: \"d9415786-5f1a-428b-b35f-2f1523e146d2\",\n    persistence: {\n        type: \"APP_COOKIE\",\n        cookieName: \"testCookie\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\npool1 = openstack.loadbalancer.Pool(\"pool_1\",\n    protocol=\"HTTP\",\n    lb_method=\"ROUND_ROBIN\",\n    listener_id=\"d9415786-5f1a-428b-b35f-2f1523e146d2\",\n    persistence={\n        \"type\": \"APP_COOKIE\",\n        \"cookie_name\": \"testCookie\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var pool1 = new OpenStack.LoadBalancer.Pool(\"pool_1\", new()\n    {\n        Protocol = \"HTTP\",\n        LbMethod = \"ROUND_ROBIN\",\n        ListenerId = \"d9415786-5f1a-428b-b35f-2f1523e146d2\",\n        Persistence = new OpenStack.LoadBalancer.Inputs.PoolPersistenceArgs\n        {\n            Type = \"APP_COOKIE\",\n            CookieName = \"testCookie\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/loadbalancer\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := loadbalancer.NewPool(ctx, \"pool_1\", \u0026loadbalancer.PoolArgs{\n\t\t\tProtocol:   pulumi.String(\"HTTP\"),\n\t\t\tLbMethod:   pulumi.String(\"ROUND_ROBIN\"),\n\t\t\tListenerId: pulumi.String(\"d9415786-5f1a-428b-b35f-2f1523e146d2\"),\n\t\t\tPersistence: \u0026loadbalancer.PoolPersistenceArgs{\n\t\t\t\tType:       pulumi.String(\"APP_COOKIE\"),\n\t\t\t\tCookieName: pulumi.String(\"testCookie\"),\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.openstack.loadbalancer.Pool;\nimport com.pulumi.openstack.loadbalancer.PoolArgs;\nimport com.pulumi.openstack.loadbalancer.inputs.PoolPersistenceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 pool1 = new Pool(\"pool1\", PoolArgs.builder()\n            .protocol(\"HTTP\")\n            .lbMethod(\"ROUND_ROBIN\")\n            .listenerId(\"d9415786-5f1a-428b-b35f-2f1523e146d2\")\n            .persistence(PoolPersistenceArgs.builder()\n                .type(\"APP_COOKIE\")\n                .cookieName(\"testCookie\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  pool1:\n    type: openstack:loadbalancer:Pool\n    name: pool_1\n    properties:\n      protocol: HTTP\n      lbMethod: ROUND_ROBIN\n      listenerId: d9415786-5f1a-428b-b35f-2f1523e146d2\n      persistence:\n        type: APP_COOKIE\n        cookieName: testCookie\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nLoad Balancer Pool can be imported using the Pool ID, e.g.:\n\n```sh\n$ pulumi import openstack:loadbalancer/pool:Pool pool_1 60ad9ee4-249a-4d60-a45b-aa60e046c513\n```\n","properties":{"adminStateUp":{"type":"boolean","description":"The administrative state of the pool. A valid\nvalue is true (UP) or false (DOWN).\n"},"alpnProtocols":{"type":"array","items":{"type":"string"},"description":"A list of ALPN protocols. Available protocols:\n`http/1.0`, `http/1.1`, \u003cspan pulumi-lang-nodejs=\"`h2`\" pulumi-lang-dotnet=\"`H2`\" pulumi-lang-go=\"`h2`\" pulumi-lang-python=\"`h2`\" pulumi-lang-yaml=\"`h2`\" pulumi-lang-java=\"`h2`\"\u003e`h2`\u003c/span\u003e. Supported only in **Octavia minor version \u003e=\n2.24**.\n"},"caTlsContainerRef":{"type":"string","description":"The reference of the key manager service\nsecret containing a PEM format CA certificate bundle for \u003cspan pulumi-lang-nodejs=\"`tlsEnabled`\" pulumi-lang-dotnet=\"`TlsEnabled`\" pulumi-lang-go=\"`tlsEnabled`\" pulumi-lang-python=\"`tls_enabled`\" pulumi-lang-yaml=\"`tlsEnabled`\" pulumi-lang-java=\"`tlsEnabled`\"\u003e`tls_enabled`\u003c/span\u003e pools.\nSupported only in **Octavia minor version \u003e= 2.8**.\n"},"crlContainerRef":{"type":"string","description":"The reference of the key manager service\nsecret containing a PEM format CA revocation list file for \u003cspan pulumi-lang-nodejs=\"`tlsEnabled`\" pulumi-lang-dotnet=\"`TlsEnabled`\" pulumi-lang-go=\"`tlsEnabled`\" pulumi-lang-python=\"`tls_enabled`\" pulumi-lang-yaml=\"`tlsEnabled`\" pulumi-lang-java=\"`tlsEnabled`\"\u003e`tls_enabled`\u003c/span\u003e\npools. Supported only in **Octavia minor version \u003e= 2.8**.\n"},"description":{"type":"string","description":"Human-readable description for the pool.\n"},"lbMethod":{"type":"string","description":"The load balancing algorithm to distribute traffic\nto the pool's members. Must be one of ROUND_ROBIN, LEAST_CONNECTIONS,\nSOURCE_IP, or SOURCE_IP_PORT.\n"},"listenerId":{"type":"string","description":"The Listener on which the members of the pool will\nbe associated with. Changing this creates a new pool. Note: One of\nLoadbalancerID or ListenerID must be provided.\n"},"loadbalancerId":{"type":"string","description":"The load balancer on which to provision this\npool. Changing this creates a new pool. Note: One of LoadbalancerID or\nListenerID must be provided.\n"},"name":{"type":"string","description":"Human-readable name for the pool.\n"},"persistence":{"$ref":"#/types/openstack:loadbalancer/PoolPersistence:PoolPersistence","description":"Omit this field to prevent session persistence.\nIndicates whether connections in the same session will be processed by the\nsame Pool member or not. Changing this creates a new pool.\n"},"protocol":{"type":"string","description":"The protocol - can either be TCP, HTTP, HTTPS, PROXY,\nUDP, PROXYV2 (**Octavia minor version \u003e= 2.22**) or SCTP (**Octavia minor\nversion \u003e= 2.23**). Changing this creates a new pool.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a pool. If omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e\nargument of the provider is used. Changing this creates a new pool.\n"},"tags":{"type":"array","items":{"type":"string"}},"tenantId":{"type":"string","description":"Required for admins. The UUID of the tenant who owns\nthe pool.  Only administrative users can specify a tenant UUID other than\ntheir own. Changing this creates a new pool.\n"},"tlsCiphers":{"type":"string","description":"List of ciphers in OpenSSL format\n(colon-separated). See\nhttps://www.openssl.org/docs/man1.1.1/man1/ciphers.html for more information.\nSupported only in **Octavia minor version \u003e= 2.15**.\n"},"tlsContainerRef":{"type":"string","description":"The reference to the key manager service\nsecret containing a PKCS12 format certificate/key bundle for \u003cspan pulumi-lang-nodejs=\"`tlsEnabled`\" pulumi-lang-dotnet=\"`TlsEnabled`\" pulumi-lang-go=\"`tlsEnabled`\" pulumi-lang-python=\"`tls_enabled`\" pulumi-lang-yaml=\"`tlsEnabled`\" pulumi-lang-java=\"`tlsEnabled`\"\u003e`tls_enabled`\u003c/span\u003e\npools for TLS client authentication to the member servers. Supported only in\n**Octavia minor version \u003e= 2.8**.\n"},"tlsEnabled":{"type":"boolean","description":"When true connections to backend member servers\nwill use TLS encryption. Default is false. Supported only in **Octavia minor\nversion \u003e= 2.8**.\n"},"tlsVersions":{"type":"array","items":{"type":"string"},"description":"A list of TLS protocol versions. Available\nversions: `TLSv1`, `TLSv1.1`, `TLSv1.2`, `TLSv1.3`. Supported only in\n**Octavia minor version \u003e= 2.17**.\n"}},"required":["alpnProtocols","lbMethod","name","protocol","region","tenantId","tlsCiphers","tlsVersions"],"inputProperties":{"adminStateUp":{"type":"boolean","description":"The administrative state of the pool. A valid\nvalue is true (UP) or false (DOWN).\n"},"alpnProtocols":{"type":"array","items":{"type":"string"},"description":"A list of ALPN protocols. Available protocols:\n`http/1.0`, `http/1.1`, \u003cspan pulumi-lang-nodejs=\"`h2`\" pulumi-lang-dotnet=\"`H2`\" pulumi-lang-go=\"`h2`\" pulumi-lang-python=\"`h2`\" pulumi-lang-yaml=\"`h2`\" pulumi-lang-java=\"`h2`\"\u003e`h2`\u003c/span\u003e. Supported only in **Octavia minor version \u003e=\n2.24**.\n"},"caTlsContainerRef":{"type":"string","description":"The reference of the key manager service\nsecret containing a PEM format CA certificate bundle for \u003cspan pulumi-lang-nodejs=\"`tlsEnabled`\" pulumi-lang-dotnet=\"`TlsEnabled`\" pulumi-lang-go=\"`tlsEnabled`\" pulumi-lang-python=\"`tls_enabled`\" pulumi-lang-yaml=\"`tlsEnabled`\" pulumi-lang-java=\"`tlsEnabled`\"\u003e`tls_enabled`\u003c/span\u003e pools.\nSupported only in **Octavia minor version \u003e= 2.8**.\n"},"crlContainerRef":{"type":"string","description":"The reference of the key manager service\nsecret containing a PEM format CA revocation list file for \u003cspan pulumi-lang-nodejs=\"`tlsEnabled`\" pulumi-lang-dotnet=\"`TlsEnabled`\" pulumi-lang-go=\"`tlsEnabled`\" pulumi-lang-python=\"`tls_enabled`\" pulumi-lang-yaml=\"`tlsEnabled`\" pulumi-lang-java=\"`tlsEnabled`\"\u003e`tls_enabled`\u003c/span\u003e\npools. Supported only in **Octavia minor version \u003e= 2.8**.\n"},"description":{"type":"string","description":"Human-readable description for the pool.\n"},"lbMethod":{"type":"string","description":"The load balancing algorithm to distribute traffic\nto the pool's members. Must be one of ROUND_ROBIN, LEAST_CONNECTIONS,\nSOURCE_IP, or SOURCE_IP_PORT.\n"},"listenerId":{"type":"string","description":"The Listener on which the members of the pool will\nbe associated with. Changing this creates a new pool. Note: One of\nLoadbalancerID or ListenerID must be provided.\n","willReplaceOnChanges":true},"loadbalancerId":{"type":"string","description":"The load balancer on which to provision this\npool. Changing this creates a new pool. Note: One of LoadbalancerID or\nListenerID must be provided.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"Human-readable name for the pool.\n"},"persistence":{"$ref":"#/types/openstack:loadbalancer/PoolPersistence:PoolPersistence","description":"Omit this field to prevent session persistence.\nIndicates whether connections in the same session will be processed by the\nsame Pool member or not. Changing this creates a new pool.\n"},"protocol":{"type":"string","description":"The protocol - can either be TCP, HTTP, HTTPS, PROXY,\nUDP, PROXYV2 (**Octavia minor version \u003e= 2.22**) or SCTP (**Octavia minor\nversion \u003e= 2.23**). Changing this creates a new pool.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a pool. If omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e\nargument of the provider is used. Changing this creates a new pool.\n","willReplaceOnChanges":true},"tags":{"type":"array","items":{"type":"string"}},"tenantId":{"type":"string","description":"Required for admins. The UUID of the tenant who owns\nthe pool.  Only administrative users can specify a tenant UUID other than\ntheir own. Changing this creates a new pool.\n","willReplaceOnChanges":true},"tlsCiphers":{"type":"string","description":"List of ciphers in OpenSSL format\n(colon-separated). See\nhttps://www.openssl.org/docs/man1.1.1/man1/ciphers.html for more information.\nSupported only in **Octavia minor version \u003e= 2.15**.\n"},"tlsContainerRef":{"type":"string","description":"The reference to the key manager service\nsecret containing a PKCS12 format certificate/key bundle for \u003cspan pulumi-lang-nodejs=\"`tlsEnabled`\" pulumi-lang-dotnet=\"`TlsEnabled`\" pulumi-lang-go=\"`tlsEnabled`\" pulumi-lang-python=\"`tls_enabled`\" pulumi-lang-yaml=\"`tlsEnabled`\" pulumi-lang-java=\"`tlsEnabled`\"\u003e`tls_enabled`\u003c/span\u003e\npools for TLS client authentication to the member servers. Supported only in\n**Octavia minor version \u003e= 2.8**.\n"},"tlsEnabled":{"type":"boolean","description":"When true connections to backend member servers\nwill use TLS encryption. Default is false. Supported only in **Octavia minor\nversion \u003e= 2.8**.\n"},"tlsVersions":{"type":"array","items":{"type":"string"},"description":"A list of TLS protocol versions. Available\nversions: `TLSv1`, `TLSv1.1`, `TLSv1.2`, `TLSv1.3`. Supported only in\n**Octavia minor version \u003e= 2.17**.\n"}},"requiredInputs":["lbMethod","protocol"],"stateInputs":{"description":"Input properties used for looking up and filtering Pool resources.\n","properties":{"adminStateUp":{"type":"boolean","description":"The administrative state of the pool. A valid\nvalue is true (UP) or false (DOWN).\n"},"alpnProtocols":{"type":"array","items":{"type":"string"},"description":"A list of ALPN protocols. Available protocols:\n`http/1.0`, `http/1.1`, \u003cspan pulumi-lang-nodejs=\"`h2`\" pulumi-lang-dotnet=\"`H2`\" pulumi-lang-go=\"`h2`\" pulumi-lang-python=\"`h2`\" pulumi-lang-yaml=\"`h2`\" pulumi-lang-java=\"`h2`\"\u003e`h2`\u003c/span\u003e. Supported only in **Octavia minor version \u003e=\n2.24**.\n"},"caTlsContainerRef":{"type":"string","description":"The reference of the key manager service\nsecret containing a PEM format CA certificate bundle for \u003cspan pulumi-lang-nodejs=\"`tlsEnabled`\" pulumi-lang-dotnet=\"`TlsEnabled`\" pulumi-lang-go=\"`tlsEnabled`\" pulumi-lang-python=\"`tls_enabled`\" pulumi-lang-yaml=\"`tlsEnabled`\" pulumi-lang-java=\"`tlsEnabled`\"\u003e`tls_enabled`\u003c/span\u003e pools.\nSupported only in **Octavia minor version \u003e= 2.8**.\n"},"crlContainerRef":{"type":"string","description":"The reference of the key manager service\nsecret containing a PEM format CA revocation list file for \u003cspan pulumi-lang-nodejs=\"`tlsEnabled`\" pulumi-lang-dotnet=\"`TlsEnabled`\" pulumi-lang-go=\"`tlsEnabled`\" pulumi-lang-python=\"`tls_enabled`\" pulumi-lang-yaml=\"`tlsEnabled`\" pulumi-lang-java=\"`tlsEnabled`\"\u003e`tls_enabled`\u003c/span\u003e\npools. Supported only in **Octavia minor version \u003e= 2.8**.\n"},"description":{"type":"string","description":"Human-readable description for the pool.\n"},"lbMethod":{"type":"string","description":"The load balancing algorithm to distribute traffic\nto the pool's members. Must be one of ROUND_ROBIN, LEAST_CONNECTIONS,\nSOURCE_IP, or SOURCE_IP_PORT.\n"},"listenerId":{"type":"string","description":"The Listener on which the members of the pool will\nbe associated with. Changing this creates a new pool. Note: One of\nLoadbalancerID or ListenerID must be provided.\n","willReplaceOnChanges":true},"loadbalancerId":{"type":"string","description":"The load balancer on which to provision this\npool. Changing this creates a new pool. Note: One of LoadbalancerID or\nListenerID must be provided.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"Human-readable name for the pool.\n"},"persistence":{"$ref":"#/types/openstack:loadbalancer/PoolPersistence:PoolPersistence","description":"Omit this field to prevent session persistence.\nIndicates whether connections in the same session will be processed by the\nsame Pool member or not. Changing this creates a new pool.\n"},"protocol":{"type":"string","description":"The protocol - can either be TCP, HTTP, HTTPS, PROXY,\nUDP, PROXYV2 (**Octavia minor version \u003e= 2.22**) or SCTP (**Octavia minor\nversion \u003e= 2.23**). Changing this creates a new pool.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a pool. If omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e\nargument of the provider is used. Changing this creates a new pool.\n","willReplaceOnChanges":true},"tags":{"type":"array","items":{"type":"string"}},"tenantId":{"type":"string","description":"Required for admins. The UUID of the tenant who owns\nthe pool.  Only administrative users can specify a tenant UUID other than\ntheir own. Changing this creates a new pool.\n","willReplaceOnChanges":true},"tlsCiphers":{"type":"string","description":"List of ciphers in OpenSSL format\n(colon-separated). See\nhttps://www.openssl.org/docs/man1.1.1/man1/ciphers.html for more information.\nSupported only in **Octavia minor version \u003e= 2.15**.\n"},"tlsContainerRef":{"type":"string","description":"The reference to the key manager service\nsecret containing a PKCS12 format certificate/key bundle for \u003cspan pulumi-lang-nodejs=\"`tlsEnabled`\" pulumi-lang-dotnet=\"`TlsEnabled`\" pulumi-lang-go=\"`tlsEnabled`\" pulumi-lang-python=\"`tls_enabled`\" pulumi-lang-yaml=\"`tlsEnabled`\" pulumi-lang-java=\"`tlsEnabled`\"\u003e`tls_enabled`\u003c/span\u003e\npools for TLS client authentication to the member servers. Supported only in\n**Octavia minor version \u003e= 2.8**.\n"},"tlsEnabled":{"type":"boolean","description":"When true connections to backend member servers\nwill use TLS encryption. Default is false. Supported only in **Octavia minor\nversion \u003e= 2.8**.\n"},"tlsVersions":{"type":"array","items":{"type":"string"},"description":"A list of TLS protocol versions. Available\nversions: `TLSv1`, `TLSv1.1`, `TLSv1.2`, `TLSv1.3`. Supported only in\n**Octavia minor version \u003e= 2.17**.\n"}},"type":"object"}},"openstack:loadbalancer/quota:Quota":{"description":"Manages a V2 load balancer quota resource within OpenStack.\n\n\u003e **Note:** This usually requires admin privileges.\n\n\u003e **Note:** This resource has a no-op deletion so no actual actions will be done against the OpenStack\n   API in case of delete call.\n\n\u003e **Note:** This resource has attributes that depend on octavia minor versions.\nPlease ensure your Openstack cloud supports the required minor version.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst project1 = new openstack.identity.Project(\"project_1\", {name: \"project_1\"});\nconst quota1 = new openstack.loadbalancer.Quota(\"quota_1\", {\n    projectId: project1.id,\n    loadbalancer: 6,\n    listener: 7,\n    member: 8,\n    pool: 9,\n    healthMonitor: 10,\n    l7Policy: 11,\n    l7Rule: 12,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nproject1 = openstack.identity.Project(\"project_1\", name=\"project_1\")\nquota1 = openstack.loadbalancer.Quota(\"quota_1\",\n    project_id=project1.id,\n    loadbalancer=6,\n    listener=7,\n    member=8,\n    pool=9,\n    health_monitor=10,\n    l7_policy=11,\n    l7_rule=12)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var project1 = new OpenStack.Identity.Project(\"project_1\", new()\n    {\n        Name = \"project_1\",\n    });\n\n    var quota1 = new OpenStack.LoadBalancer.Quota(\"quota_1\", new()\n    {\n        ProjectId = project1.Id,\n        Loadbalancer = 6,\n        Listener = 7,\n        Member = 8,\n        Pool = 9,\n        HealthMonitor = 10,\n        L7Policy = 11,\n        L7Rule = 12,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/identity\"\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/loadbalancer\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject1, err := identity.NewProject(ctx, \"project_1\", \u0026identity.ProjectArgs{\n\t\t\tName: pulumi.String(\"project_1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = loadbalancer.NewQuota(ctx, \"quota_1\", \u0026loadbalancer.QuotaArgs{\n\t\t\tProjectId:     project1.ID(),\n\t\t\tLoadbalancer:  pulumi.Int(6),\n\t\t\tListener:      pulumi.Int(7),\n\t\t\tMember:        pulumi.Int(8),\n\t\t\tPool:          pulumi.Int(9),\n\t\t\tHealthMonitor: pulumi.Int(10),\n\t\t\tL7Policy:      pulumi.Int(11),\n\t\t\tL7Rule:        pulumi.Int(12),\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.openstack.identity.Project;\nimport com.pulumi.openstack.identity.ProjectArgs;\nimport com.pulumi.openstack.loadbalancer.Quota;\nimport com.pulumi.openstack.loadbalancer.QuotaArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 project1 = new Project(\"project1\", ProjectArgs.builder()\n            .name(\"project_1\")\n            .build());\n\n        var quota1 = new Quota(\"quota1\", QuotaArgs.builder()\n            .projectId(project1.id())\n            .loadbalancer(6)\n            .listener(7)\n            .member(8)\n            .pool(9)\n            .healthMonitor(10)\n            .l7Policy(11)\n            .l7Rule(12)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  project1:\n    type: openstack:identity:Project\n    name: project_1\n    properties:\n      name: project_1\n  quota1:\n    type: openstack:loadbalancer:Quota\n    name: quota_1\n    properties:\n      projectId: ${project1.id}\n      loadbalancer: 6\n      listener: 7\n      member: 8\n      pool: 9\n      healthMonitor: 10\n      l7Policy: 11\n      l7Rule: 12\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nQuotas can be imported using the `project_id/region_name`, where region_name is the\none defined is the Openstack credentials that are in use. E.g.\n\n```sh\n$ pulumi import openstack:loadbalancer/quota:Quota quota_1 2a0f2240-c5e6-41de-896d-e80d97428d6b/region_1\n```\n","properties":{"healthMonitor":{"type":"integer","description":"Quota value for health_monitors. Changing\nthis updates the existing quota. Omitting it sets it to 0.\n"},"l7Policy":{"type":"integer","description":"Quota value for l7_policies. Changing this\nupdates the existing quota. Omitting it sets it to 0. Available in\n**Octavia minor version 2.19**.\n"},"l7Rule":{"type":"integer","description":"Quota value for l7_rules. Changing this\nupdates the existing quota. Omitting it sets it to 0. Available in\n**Octavia minor version 2.19**.\n"},"listener":{"type":"integer","description":"Quota value for listeners. Changing this updates\nthe existing quota. Omitting it sets it to 0.\n"},"loadbalancer":{"type":"integer","description":"Quota value for loadbalancers. Changing this\nupdates the existing quota. Omitting it sets it to 0.\n"},"member":{"type":"integer","description":"Quota value for members. Changing this updates\nthe existing quota. Omitting it sets it to 0.\n"},"pool":{"type":"integer","description":"Quota value for pools. Changing this updates the\nthe existing quota. Omitting it sets it to 0.\n"},"projectId":{"type":"string","description":"ID of the project to manage quotas. Changing this\ncreates a new quota.\n"},"region":{"type":"string","description":"Region in which to manage quotas. Changing this\ncreates a new quota. If ommited, the region of the credentials is used.\n"}},"required":["healthMonitor","l7Policy","l7Rule","listener","loadbalancer","member","pool","projectId","region"],"inputProperties":{"healthMonitor":{"type":"integer","description":"Quota value for health_monitors. Changing\nthis updates the existing quota. Omitting it sets it to 0.\n"},"l7Policy":{"type":"integer","description":"Quota value for l7_policies. Changing this\nupdates the existing quota. Omitting it sets it to 0. Available in\n**Octavia minor version 2.19**.\n"},"l7Rule":{"type":"integer","description":"Quota value for l7_rules. Changing this\nupdates the existing quota. Omitting it sets it to 0. Available in\n**Octavia minor version 2.19**.\n"},"listener":{"type":"integer","description":"Quota value for listeners. Changing this updates\nthe existing quota. Omitting it sets it to 0.\n"},"loadbalancer":{"type":"integer","description":"Quota value for loadbalancers. Changing this\nupdates the existing quota. Omitting it sets it to 0.\n"},"member":{"type":"integer","description":"Quota value for members. Changing this updates\nthe existing quota. Omitting it sets it to 0.\n"},"pool":{"type":"integer","description":"Quota value for pools. Changing this updates the\nthe existing quota. Omitting it sets it to 0.\n"},"projectId":{"type":"string","description":"ID of the project to manage quotas. Changing this\ncreates a new quota.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"Region in which to manage quotas. Changing this\ncreates a new quota. If ommited, the region of the credentials is used.\n","willReplaceOnChanges":true}},"requiredInputs":["projectId"],"stateInputs":{"description":"Input properties used for looking up and filtering Quota resources.\n","properties":{"healthMonitor":{"type":"integer","description":"Quota value for health_monitors. Changing\nthis updates the existing quota. Omitting it sets it to 0.\n"},"l7Policy":{"type":"integer","description":"Quota value for l7_policies. Changing this\nupdates the existing quota. Omitting it sets it to 0. Available in\n**Octavia minor version 2.19**.\n"},"l7Rule":{"type":"integer","description":"Quota value for l7_rules. Changing this\nupdates the existing quota. Omitting it sets it to 0. Available in\n**Octavia minor version 2.19**.\n"},"listener":{"type":"integer","description":"Quota value for listeners. Changing this updates\nthe existing quota. Omitting it sets it to 0.\n"},"loadbalancer":{"type":"integer","description":"Quota value for loadbalancers. Changing this\nupdates the existing quota. Omitting it sets it to 0.\n"},"member":{"type":"integer","description":"Quota value for members. Changing this updates\nthe existing quota. Omitting it sets it to 0.\n"},"pool":{"type":"integer","description":"Quota value for pools. Changing this updates the\nthe existing quota. Omitting it sets it to 0.\n"},"projectId":{"type":"string","description":"ID of the project to manage quotas. Changing this\ncreates a new quota.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"Region in which to manage quotas. Changing this\ncreates a new quota. If ommited, the region of the credentials is used.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:networking/addressGroupV2:AddressGroupV2":{"description":"Manages a V2 neutron address group resource within OpenStack.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst group1 = new openstack.networking.AddressGroupV2(\"group_1\", {\n    name: \"group_1\",\n    description: \"My neutron address group\",\n    addresses: [\n        \"192.168.0.1/32\",\n        \"2001:db8::1/128\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\ngroup1 = openstack.networking.AddressGroupV2(\"group_1\",\n    name=\"group_1\",\n    description=\"My neutron address group\",\n    addresses=[\n        \"192.168.0.1/32\",\n        \"2001:db8::1/128\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var group1 = new OpenStack.Networking.AddressGroupV2(\"group_1\", new()\n    {\n        Name = \"group_1\",\n        Description = \"My neutron address group\",\n        Addresses = new[]\n        {\n            \"192.168.0.1/32\",\n            \"2001:db8::1/128\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networking.NewAddressGroupV2(ctx, \"group_1\", \u0026networking.AddressGroupV2Args{\n\t\t\tName:        pulumi.String(\"group_1\"),\n\t\t\tDescription: pulumi.String(\"My neutron address group\"),\n\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.0.1/32\"),\n\t\t\t\tpulumi.String(\"2001:db8::1/128\"),\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.openstack.networking.AddressGroupV2;\nimport com.pulumi.openstack.networking.AddressGroupV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 group1 = new AddressGroupV2(\"group1\", AddressGroupV2Args.builder()\n            .name(\"group_1\")\n            .description(\"My neutron address group\")\n            .addresses(            \n                \"192.168.0.1/32\",\n                \"2001:db8::1/128\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  group1:\n    type: openstack:networking:AddressGroupV2\n    name: group_1\n    properties:\n      name: group_1\n      description: My neutron address group\n      addresses:\n        - 192.168.0.1/32\n        - 2001:db8::1/128\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAddress Groups can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:networking/addressGroupV2:AddressGroupV2 group_1 782fef9c-d03c-400a-9735-2f9af5681cb3\n```\n","properties":{"addresses":{"type":"array","items":{"type":"string"},"description":"A list of CIDR blocks that define the addresses in\nthe address group. Each address must be a valid IPv4 or IPv6 CIDR block.\n"},"description":{"type":"string","description":"A description of the address group.\n"},"name":{"type":"string","description":"A name of the address group.\n"},"projectId":{"type":"string","description":"The owner of the address group. Required if admin\nwants to create a group for a specific project. Changing this creates a new\naddress group.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new address group.\n"}},"required":["addresses","name","projectId","region"],"inputProperties":{"addresses":{"type":"array","items":{"type":"string"},"description":"A list of CIDR blocks that define the addresses in\nthe address group. Each address must be a valid IPv4 or IPv6 CIDR block.\n"},"description":{"type":"string","description":"A description of the address group.\n"},"name":{"type":"string","description":"A name of the address group.\n"},"projectId":{"type":"string","description":"The owner of the address group. Required if admin\nwants to create a group for a specific project. Changing this creates a new\naddress group.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new address group.\n","willReplaceOnChanges":true}},"requiredInputs":["addresses"],"stateInputs":{"description":"Input properties used for looking up and filtering AddressGroupV2 resources.\n","properties":{"addresses":{"type":"array","items":{"type":"string"},"description":"A list of CIDR blocks that define the addresses in\nthe address group. Each address must be a valid IPv4 or IPv6 CIDR block.\n"},"description":{"type":"string","description":"A description of the address group.\n"},"name":{"type":"string","description":"A name of the address group.\n"},"projectId":{"type":"string","description":"The owner of the address group. Required if admin\nwants to create a group for a specific project. Changing this creates a new\naddress group.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new address group.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:networking/addressScope:AddressScope":{"description":"Manages a V2 Neutron addressscope resource within OpenStack.\n\n## Example Usage\n\n### Create an Address-scope\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst addressscope1 = new openstack.networking.AddressScope(\"addressscope_1\", {\n    name: \"addressscope_1\",\n    ipVersion: 6,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\naddressscope1 = openstack.networking.AddressScope(\"addressscope_1\",\n    name=\"addressscope_1\",\n    ip_version=6)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var addressscope1 = new OpenStack.Networking.AddressScope(\"addressscope_1\", new()\n    {\n        Name = \"addressscope_1\",\n        IpVersion = 6,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networking.NewAddressScope(ctx, \"addressscope_1\", \u0026networking.AddressScopeArgs{\n\t\t\tName:      pulumi.String(\"addressscope_1\"),\n\t\t\tIpVersion: pulumi.Int(6),\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.openstack.networking.AddressScope;\nimport com.pulumi.openstack.networking.AddressScopeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 addressscope1 = new AddressScope(\"addressscope1\", AddressScopeArgs.builder()\n            .name(\"addressscope_1\")\n            .ipVersion(6)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  addressscope1:\n    type: openstack:networking:AddressScope\n    name: addressscope_1\n    properties:\n      name: addressscope_1\n      ipVersion: 6\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a Subnet Pool from an Address-scope\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst addressscope1 = new openstack.networking.AddressScope(\"addressscope_1\", {\n    name: \"addressscope_1\",\n    ipVersion: 6,\n});\nconst subnetpool1 = new openstack.networking.SubnetPool(\"subnetpool_1\", {\n    name: \"subnetpool_1\",\n    prefixes: [\n        \"fdf7:b13d:dead:beef::/64\",\n        \"fd65:86cc:a334:39b7::/64\",\n    ],\n    addressScopeId: addressscope1.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\naddressscope1 = openstack.networking.AddressScope(\"addressscope_1\",\n    name=\"addressscope_1\",\n    ip_version=6)\nsubnetpool1 = openstack.networking.SubnetPool(\"subnetpool_1\",\n    name=\"subnetpool_1\",\n    prefixes=[\n        \"fdf7:b13d:dead:beef::/64\",\n        \"fd65:86cc:a334:39b7::/64\",\n    ],\n    address_scope_id=addressscope1.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var addressscope1 = new OpenStack.Networking.AddressScope(\"addressscope_1\", new()\n    {\n        Name = \"addressscope_1\",\n        IpVersion = 6,\n    });\n\n    var subnetpool1 = new OpenStack.Networking.SubnetPool(\"subnetpool_1\", new()\n    {\n        Name = \"subnetpool_1\",\n        Prefixes = new[]\n        {\n            \"fdf7:b13d:dead:beef::/64\",\n            \"fd65:86cc:a334:39b7::/64\",\n        },\n        AddressScopeId = addressscope1.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taddressscope1, err := networking.NewAddressScope(ctx, \"addressscope_1\", \u0026networking.AddressScopeArgs{\n\t\t\tName:      pulumi.String(\"addressscope_1\"),\n\t\t\tIpVersion: pulumi.Int(6),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networking.NewSubnetPool(ctx, \"subnetpool_1\", \u0026networking.SubnetPoolArgs{\n\t\t\tName: pulumi.String(\"subnetpool_1\"),\n\t\t\tPrefixes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fdf7:b13d:dead:beef::/64\"),\n\t\t\t\tpulumi.String(\"fd65:86cc:a334:39b7::/64\"),\n\t\t\t},\n\t\t\tAddressScopeId: addressscope1.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.openstack.networking.AddressScope;\nimport com.pulumi.openstack.networking.AddressScopeArgs;\nimport com.pulumi.openstack.networking.SubnetPool;\nimport com.pulumi.openstack.networking.SubnetPoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 addressscope1 = new AddressScope(\"addressscope1\", AddressScopeArgs.builder()\n            .name(\"addressscope_1\")\n            .ipVersion(6)\n            .build());\n\n        var subnetpool1 = new SubnetPool(\"subnetpool1\", SubnetPoolArgs.builder()\n            .name(\"subnetpool_1\")\n            .prefixes(            \n                \"fdf7:b13d:dead:beef::/64\",\n                \"fd65:86cc:a334:39b7::/64\")\n            .addressScopeId(addressscope1.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  addressscope1:\n    type: openstack:networking:AddressScope\n    name: addressscope_1\n    properties:\n      name: addressscope_1\n      ipVersion: 6\n  subnetpool1:\n    type: openstack:networking:SubnetPool\n    name: subnetpool_1\n    properties:\n      name: subnetpool_1\n      prefixes:\n        - fdf7:b13d:dead:beef::/64\n        - fd65:86cc:a334:39b7::/64\n      addressScopeId: ${addressscope1.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAddress-scopes can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:networking/addressScope:AddressScope addressscope_1 9cc35860-522a-4d35-974d-51d4b011801e\n```\n","properties":{"ipVersion":{"type":"integer","description":"IP version, either 4 (default) or 6. Changing this\ncreates a new address-scope.\n"},"name":{"type":"string","description":"The name of the address-scope. Changing this updates the\nname of the existing address-scope.\n"},"projectId":{"type":"string","description":"The owner of the address-scope. Required if admin\nwants to create a address-scope for another project. Changing this creates a\nnew address-scope.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron address-scope. If omitted,\nthe \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\naddress-scope.\n"},"shared":{"type":"boolean","description":"Indicates whether this address-scope is shared across\nall projects. Changing this updates the shared status of the existing\naddress-scope.\n"}},"required":["name","projectId","region","shared"],"inputProperties":{"ipVersion":{"type":"integer","description":"IP version, either 4 (default) or 6. Changing this\ncreates a new address-scope.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"The name of the address-scope. Changing this updates the\nname of the existing address-scope.\n"},"projectId":{"type":"string","description":"The owner of the address-scope. Required if admin\nwants to create a address-scope for another project. Changing this creates a\nnew address-scope.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron address-scope. If omitted,\nthe \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\naddress-scope.\n","willReplaceOnChanges":true},"shared":{"type":"boolean","description":"Indicates whether this address-scope is shared across\nall projects. Changing this updates the shared status of the existing\naddress-scope.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering AddressScope resources.\n","properties":{"ipVersion":{"type":"integer","description":"IP version, either 4 (default) or 6. Changing this\ncreates a new address-scope.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"The name of the address-scope. Changing this updates the\nname of the existing address-scope.\n"},"projectId":{"type":"string","description":"The owner of the address-scope. Required if admin\nwants to create a address-scope for another project. Changing this creates a\nnew address-scope.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron address-scope. If omitted,\nthe \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\naddress-scope.\n","willReplaceOnChanges":true},"shared":{"type":"boolean","description":"Indicates whether this address-scope is shared across\nall projects. Changing this updates the shared status of the existing\naddress-scope.\n"}},"type":"object"}},"openstack:networking/bgpPeerV2:BgpPeerV2":{"description":"Manages a V2 Neutron BGP Peer resource within OpenStack.\n\nThis resource allows you to configure a BGP peer that can be associated with a\nBGP speaker to exchange routing information.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst peer1 = new openstack.networking.BgpPeerV2(\"peer_1\", {\n    name: \"bgp_peer_1\",\n    peerIp: \"192.0.2.10\",\n    remoteAs: 65001,\n    authType: \"md5\",\n    password: \"supersecret\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\npeer1 = openstack.networking.BgpPeerV2(\"peer_1\",\n    name=\"bgp_peer_1\",\n    peer_ip=\"192.0.2.10\",\n    remote_as=65001,\n    auth_type=\"md5\",\n    password=\"supersecret\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var peer1 = new OpenStack.Networking.BgpPeerV2(\"peer_1\", new()\n    {\n        Name = \"bgp_peer_1\",\n        PeerIp = \"192.0.2.10\",\n        RemoteAs = 65001,\n        AuthType = \"md5\",\n        Password = \"supersecret\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networking.NewBgpPeerV2(ctx, \"peer_1\", \u0026networking.BgpPeerV2Args{\n\t\t\tName:     pulumi.String(\"bgp_peer_1\"),\n\t\t\tPeerIp:   pulumi.String(\"192.0.2.10\"),\n\t\t\tRemoteAs: pulumi.Int(65001),\n\t\t\tAuthType: pulumi.String(\"md5\"),\n\t\t\tPassword: pulumi.String(\"supersecret\"),\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.openstack.networking.BgpPeerV2;\nimport com.pulumi.openstack.networking.BgpPeerV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 peer1 = new BgpPeerV2(\"peer1\", BgpPeerV2Args.builder()\n            .name(\"bgp_peer_1\")\n            .peerIp(\"192.0.2.10\")\n            .remoteAs(65001)\n            .authType(\"md5\")\n            .password(\"supersecret\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  peer1:\n    type: openstack:networking:BgpPeerV2\n    name: peer_1\n    properties:\n      name: bgp_peer_1\n      peerIp: 192.0.2.10\n      remoteAs: 65001\n      authType: md5\n      password: supersecret\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBGP peers can be imported using their ID:\n\n```sh\n$ pulumi import openstack:networking/bgpPeerV2:BgpPeerV2 peer1 a1b2c3d4-e5f6-7890-abcd-1234567890ef\n```\n\n","properties":{"authType":{"type":"string","description":"The authentication type to use. Can be one of \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e\nor \u003cspan pulumi-lang-nodejs=\"`md5`\" pulumi-lang-dotnet=\"`Md5`\" pulumi-lang-go=\"`md5`\" pulumi-lang-python=\"`md5`\" pulumi-lang-yaml=\"`md5`\" pulumi-lang-java=\"`md5`\"\u003e`md5`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e. If set to not \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e, the \u003cspan pulumi-lang-nodejs=\"`password`\" pulumi-lang-dotnet=\"`Password`\" pulumi-lang-go=\"`password`\" pulumi-lang-python=\"`password`\" pulumi-lang-yaml=\"`password`\" pulumi-lang-java=\"`password`\"\u003e`password`\u003c/span\u003e argument\nmust also be provided. Changing this creates a new BGP peer.\n"},"name":{"type":"string","description":"A name for the BGP peer.\n"},"password":{"type":"string","description":"The password used for MD5 authentication. Must be set\nonly when \u003cspan pulumi-lang-nodejs=\"`authType`\" pulumi-lang-dotnet=\"`AuthType`\" pulumi-lang-go=\"`authType`\" pulumi-lang-python=\"`auth_type`\" pulumi-lang-yaml=\"`authType`\" pulumi-lang-java=\"`authType`\"\u003e`auth_type`\u003c/span\u003e is not \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e.\n","secret":true},"peerIp":{"type":"string","description":"The IP address of the BGP peer. Must be a valid IP\naddress. Changing this creates a new BGP peer.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron network. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new BGP\npeer.\n"},"remoteAs":{"type":"integer","description":"The AS number of the BGP peer. Changing this\ncreates a new BGP peer.\n"},"tenantId":{"type":"string","description":"The tenant/project ID. Required if admin privileges\nare used. Changing this creates a new BGP peer.\n"}},"required":["name","peerIp","region","remoteAs","tenantId"],"inputProperties":{"authType":{"type":"string","description":"The authentication type to use. Can be one of \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e\nor \u003cspan pulumi-lang-nodejs=\"`md5`\" pulumi-lang-dotnet=\"`Md5`\" pulumi-lang-go=\"`md5`\" pulumi-lang-python=\"`md5`\" pulumi-lang-yaml=\"`md5`\" pulumi-lang-java=\"`md5`\"\u003e`md5`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e. If set to not \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e, the \u003cspan pulumi-lang-nodejs=\"`password`\" pulumi-lang-dotnet=\"`Password`\" pulumi-lang-go=\"`password`\" pulumi-lang-python=\"`password`\" pulumi-lang-yaml=\"`password`\" pulumi-lang-java=\"`password`\"\u003e`password`\u003c/span\u003e argument\nmust also be provided. Changing this creates a new BGP peer.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"A name for the BGP peer.\n"},"password":{"type":"string","description":"The password used for MD5 authentication. Must be set\nonly when \u003cspan pulumi-lang-nodejs=\"`authType`\" pulumi-lang-dotnet=\"`AuthType`\" pulumi-lang-go=\"`authType`\" pulumi-lang-python=\"`auth_type`\" pulumi-lang-yaml=\"`authType`\" pulumi-lang-java=\"`authType`\"\u003e`auth_type`\u003c/span\u003e is not \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e.\n","secret":true},"peerIp":{"type":"string","description":"The IP address of the BGP peer. Must be a valid IP\naddress. Changing this creates a new BGP peer.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron network. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new BGP\npeer.\n","willReplaceOnChanges":true},"remoteAs":{"type":"integer","description":"The AS number of the BGP peer. Changing this\ncreates a new BGP peer.\n","willReplaceOnChanges":true},"tenantId":{"type":"string","description":"The tenant/project ID. Required if admin privileges\nare used. Changing this creates a new BGP peer.\n","willReplaceOnChanges":true}},"requiredInputs":["peerIp","remoteAs"],"stateInputs":{"description":"Input properties used for looking up and filtering BgpPeerV2 resources.\n","properties":{"authType":{"type":"string","description":"The authentication type to use. Can be one of \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e\nor \u003cspan pulumi-lang-nodejs=\"`md5`\" pulumi-lang-dotnet=\"`Md5`\" pulumi-lang-go=\"`md5`\" pulumi-lang-python=\"`md5`\" pulumi-lang-yaml=\"`md5`\" pulumi-lang-java=\"`md5`\"\u003e`md5`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e. If set to not \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e, the \u003cspan pulumi-lang-nodejs=\"`password`\" pulumi-lang-dotnet=\"`Password`\" pulumi-lang-go=\"`password`\" pulumi-lang-python=\"`password`\" pulumi-lang-yaml=\"`password`\" pulumi-lang-java=\"`password`\"\u003e`password`\u003c/span\u003e argument\nmust also be provided. Changing this creates a new BGP peer.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"A name for the BGP peer.\n"},"password":{"type":"string","description":"The password used for MD5 authentication. Must be set\nonly when \u003cspan pulumi-lang-nodejs=\"`authType`\" pulumi-lang-dotnet=\"`AuthType`\" pulumi-lang-go=\"`authType`\" pulumi-lang-python=\"`auth_type`\" pulumi-lang-yaml=\"`authType`\" pulumi-lang-java=\"`authType`\"\u003e`auth_type`\u003c/span\u003e is not \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e.\n","secret":true},"peerIp":{"type":"string","description":"The IP address of the BGP peer. Must be a valid IP\naddress. Changing this creates a new BGP peer.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron network. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new BGP\npeer.\n","willReplaceOnChanges":true},"remoteAs":{"type":"integer","description":"The AS number of the BGP peer. Changing this\ncreates a new BGP peer.\n","willReplaceOnChanges":true},"tenantId":{"type":"string","description":"The tenant/project ID. Required if admin privileges\nare used. Changing this creates a new BGP peer.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:networking/bgpSpeakerV2:BgpSpeakerV2":{"description":"Manages a V2 Neutron BGP Speaker resource within OpenStack.\n\nThis resource allows you to configure a BGP speaker that can be associated with\na BGP peer to exchange routing information.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst network1 = new openstack.networking.Network(\"network1\", {name: \"network1\"});\nconst peer1 = new openstack.networking.BgpPeerV2(\"peer_1\", {\n    name: \"bgp_peer_1\",\n    peerIp: \"192.0.2.10\",\n    remoteAs: 65001,\n    authType: \"md5\",\n    password: \"supersecret\",\n});\nconst speaker1 = new openstack.networking.BgpSpeakerV2(\"speaker_1\", {\n    name: \"bgp_speaker_1\",\n    ipVersion: 4,\n    localAs: 65000,\n    networks: [network1.id],\n    peers: [peer1OpestackNetworkingBgpPeerV2.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nnetwork1 = openstack.networking.Network(\"network1\", name=\"network1\")\npeer1 = openstack.networking.BgpPeerV2(\"peer_1\",\n    name=\"bgp_peer_1\",\n    peer_ip=\"192.0.2.10\",\n    remote_as=65001,\n    auth_type=\"md5\",\n    password=\"supersecret\")\nspeaker1 = openstack.networking.BgpSpeakerV2(\"speaker_1\",\n    name=\"bgp_speaker_1\",\n    ip_version=4,\n    local_as=65000,\n    networks=[network1.id],\n    peers=[peer1_opestack_networking_bgp_peer_v2[\"id\"]])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var network1 = new OpenStack.Networking.Network(\"network1\", new()\n    {\n        Name = \"network1\",\n    });\n\n    var peer1 = new OpenStack.Networking.BgpPeerV2(\"peer_1\", new()\n    {\n        Name = \"bgp_peer_1\",\n        PeerIp = \"192.0.2.10\",\n        RemoteAs = 65001,\n        AuthType = \"md5\",\n        Password = \"supersecret\",\n    });\n\n    var speaker1 = new OpenStack.Networking.BgpSpeakerV2(\"speaker_1\", new()\n    {\n        Name = \"bgp_speaker_1\",\n        IpVersion = 4,\n        LocalAs = 65000,\n        Networks = new[]\n        {\n            network1.Id,\n        },\n        Peers = new[]\n        {\n            peer1OpestackNetworkingBgpPeerV2.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork1, err := networking.NewNetwork(ctx, \"network1\", \u0026networking.NetworkArgs{\n\t\t\tName: pulumi.String(\"network1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networking.NewBgpPeerV2(ctx, \"peer_1\", \u0026networking.BgpPeerV2Args{\n\t\t\tName:     pulumi.String(\"bgp_peer_1\"),\n\t\t\tPeerIp:   pulumi.String(\"192.0.2.10\"),\n\t\t\tRemoteAs: pulumi.Int(65001),\n\t\t\tAuthType: pulumi.String(\"md5\"),\n\t\t\tPassword: pulumi.String(\"supersecret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networking.NewBgpSpeakerV2(ctx, \"speaker_1\", \u0026networking.BgpSpeakerV2Args{\n\t\t\tName:      pulumi.String(\"bgp_speaker_1\"),\n\t\t\tIpVersion: pulumi.Int(4),\n\t\t\tLocalAs:   pulumi.Int(65000),\n\t\t\tNetworks: pulumi.StringArray{\n\t\t\t\tnetwork1.ID(),\n\t\t\t},\n\t\t\tPeers: pulumi.StringArray{\n\t\t\t\tpeer1OpestackNetworkingBgpPeerV2.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.openstack.networking.Network;\nimport com.pulumi.openstack.networking.NetworkArgs;\nimport com.pulumi.openstack.networking.BgpPeerV2;\nimport com.pulumi.openstack.networking.BgpPeerV2Args;\nimport com.pulumi.openstack.networking.BgpSpeakerV2;\nimport com.pulumi.openstack.networking.BgpSpeakerV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 network1 = new Network(\"network1\", NetworkArgs.builder()\n            .name(\"network1\")\n            .build());\n\n        var peer1 = new BgpPeerV2(\"peer1\", BgpPeerV2Args.builder()\n            .name(\"bgp_peer_1\")\n            .peerIp(\"192.0.2.10\")\n            .remoteAs(65001)\n            .authType(\"md5\")\n            .password(\"supersecret\")\n            .build());\n\n        var speaker1 = new BgpSpeakerV2(\"speaker1\", BgpSpeakerV2Args.builder()\n            .name(\"bgp_speaker_1\")\n            .ipVersion(4)\n            .localAs(65000)\n            .networks(network1.id())\n            .peers(peer1OpestackNetworkingBgpPeerV2.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  network1:\n    type: openstack:networking:Network\n    properties:\n      name: network1\n  peer1:\n    type: openstack:networking:BgpPeerV2\n    name: peer_1\n    properties:\n      name: bgp_peer_1\n      peerIp: 192.0.2.10\n      remoteAs: 65001\n      authType: md5\n      password: supersecret\n  speaker1:\n    type: openstack:networking:BgpSpeakerV2\n    name: speaker_1\n    properties:\n      name: bgp_speaker_1\n      ipVersion: 4\n      localAs: 65000\n      networks:\n        - ${network1.id}\n      peers:\n        - ${peer1OpestackNetworkingBgpPeerV2.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBGP speakers can be imported using their ID:\n\n```sh\n$ pulumi import openstack:networking/bgpSpeakerV2:BgpSpeakerV2 speaker_1 8a2ad402-b805-46bf-a60b-008573ca2844\n```\n\n","properties":{"advertiseFloatingIpHostRoutes":{"type":"boolean","description":"A boolean value indicating\nwhether to advertise floating IP host routes. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"},"advertiseTenantNetworks":{"type":"boolean","description":"A boolean value indicating whether to\nadvertise tenant networks. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"},"advertisedRoutes":{"type":"array","items":{"$ref":"#/types/openstack:networking/BgpSpeakerV2AdvertisedRoute:BgpSpeakerV2AdvertisedRoute"},"description":"A list of dictionaries containing the \u003cspan pulumi-lang-nodejs=\"`destination`\" pulumi-lang-dotnet=\"`Destination`\" pulumi-lang-go=\"`destination`\" pulumi-lang-python=\"`destination`\" pulumi-lang-yaml=\"`destination`\" pulumi-lang-java=\"`destination`\"\u003e`destination`\u003c/span\u003e and\n\u003cspan pulumi-lang-nodejs=\"`nextHop`\" pulumi-lang-dotnet=\"`NextHop`\" pulumi-lang-go=\"`nextHop`\" pulumi-lang-python=\"`next_hop`\" pulumi-lang-yaml=\"`nextHop`\" pulumi-lang-java=\"`nextHop`\"\u003e`next_hop`\u003c/span\u003e for each route advertised by the BGP speaker. This attribute is\nonly populated after the BGP speaker has been created and has established BGP\nsessions with its peers.\n"},"ipVersion":{"type":"integer","description":"The IP version of the BGP speaker. Valid values are\n\u003cspan pulumi-lang-nodejs=\"`4`\" pulumi-lang-dotnet=\"`4`\" pulumi-lang-go=\"`4`\" pulumi-lang-python=\"`4`\" pulumi-lang-yaml=\"`4`\" pulumi-lang-java=\"`4`\"\u003e`4`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`6`\" pulumi-lang-dotnet=\"`6`\" pulumi-lang-go=\"`6`\" pulumi-lang-python=\"`6`\" pulumi-lang-yaml=\"`6`\" pulumi-lang-java=\"`6`\"\u003e`6`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`4`\" pulumi-lang-dotnet=\"`4`\" pulumi-lang-go=\"`4`\" pulumi-lang-python=\"`4`\" pulumi-lang-yaml=\"`4`\" pulumi-lang-java=\"`4`\"\u003e`4`\u003c/span\u003e. Changing this creates a new BGP speaker.\n"},"localAs":{"type":"integer","description":"The local autonomous system number (ASN) for the BGP\nspeaker. This is a mandatory field and must be specified. Changing this\ncreates a new BGP speaker.\n"},"name":{"type":"string","description":"A name for the BGP speaker.\n"},"networks":{"type":"array","items":{"type":"string"},"description":"A list of network IDs to associate with the BGP speaker.\n"},"peers":{"type":"array","items":{"type":"string"},"description":"A list of BGP peer IDs to associate with the BGP speaker.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron network. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new BGP\nspeaker.\n"},"tenantId":{"type":"string","description":"The tenant/project ID. Required if admin privileges\nare used. Changing this creates a new BGP speaker.\n"}},"required":["advertiseFloatingIpHostRoutes","advertiseTenantNetworks","advertisedRoutes","localAs","name","region","tenantId"],"inputProperties":{"advertiseFloatingIpHostRoutes":{"type":"boolean","description":"A boolean value indicating\nwhether to advertise floating IP host routes. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"},"advertiseTenantNetworks":{"type":"boolean","description":"A boolean value indicating whether to\nadvertise tenant networks. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"},"ipVersion":{"type":"integer","description":"The IP version of the BGP speaker. Valid values are\n\u003cspan pulumi-lang-nodejs=\"`4`\" pulumi-lang-dotnet=\"`4`\" pulumi-lang-go=\"`4`\" pulumi-lang-python=\"`4`\" pulumi-lang-yaml=\"`4`\" pulumi-lang-java=\"`4`\"\u003e`4`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`6`\" pulumi-lang-dotnet=\"`6`\" pulumi-lang-go=\"`6`\" pulumi-lang-python=\"`6`\" pulumi-lang-yaml=\"`6`\" pulumi-lang-java=\"`6`\"\u003e`6`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`4`\" pulumi-lang-dotnet=\"`4`\" pulumi-lang-go=\"`4`\" pulumi-lang-python=\"`4`\" pulumi-lang-yaml=\"`4`\" pulumi-lang-java=\"`4`\"\u003e`4`\u003c/span\u003e. Changing this creates a new BGP speaker.\n","willReplaceOnChanges":true},"localAs":{"type":"integer","description":"The local autonomous system number (ASN) for the BGP\nspeaker. This is a mandatory field and must be specified. Changing this\ncreates a new BGP speaker.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"A name for the BGP speaker.\n"},"networks":{"type":"array","items":{"type":"string"},"description":"A list of network IDs to associate with the BGP speaker.\n"},"peers":{"type":"array","items":{"type":"string"},"description":"A list of BGP peer IDs to associate with the BGP speaker.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron network. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new BGP\nspeaker.\n","willReplaceOnChanges":true},"tenantId":{"type":"string","description":"The tenant/project ID. Required if admin privileges\nare used. Changing this creates a new BGP speaker.\n","willReplaceOnChanges":true}},"requiredInputs":["localAs"],"stateInputs":{"description":"Input properties used for looking up and filtering BgpSpeakerV2 resources.\n","properties":{"advertiseFloatingIpHostRoutes":{"type":"boolean","description":"A boolean value indicating\nwhether to advertise floating IP host routes. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"},"advertiseTenantNetworks":{"type":"boolean","description":"A boolean value indicating whether to\nadvertise tenant networks. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"},"advertisedRoutes":{"type":"array","items":{"$ref":"#/types/openstack:networking/BgpSpeakerV2AdvertisedRoute:BgpSpeakerV2AdvertisedRoute"},"description":"A list of dictionaries containing the \u003cspan pulumi-lang-nodejs=\"`destination`\" pulumi-lang-dotnet=\"`Destination`\" pulumi-lang-go=\"`destination`\" pulumi-lang-python=\"`destination`\" pulumi-lang-yaml=\"`destination`\" pulumi-lang-java=\"`destination`\"\u003e`destination`\u003c/span\u003e and\n\u003cspan pulumi-lang-nodejs=\"`nextHop`\" pulumi-lang-dotnet=\"`NextHop`\" pulumi-lang-go=\"`nextHop`\" pulumi-lang-python=\"`next_hop`\" pulumi-lang-yaml=\"`nextHop`\" pulumi-lang-java=\"`nextHop`\"\u003e`next_hop`\u003c/span\u003e for each route advertised by the BGP speaker. This attribute is\nonly populated after the BGP speaker has been created and has established BGP\nsessions with its peers.\n"},"ipVersion":{"type":"integer","description":"The IP version of the BGP speaker. Valid values are\n\u003cspan pulumi-lang-nodejs=\"`4`\" pulumi-lang-dotnet=\"`4`\" pulumi-lang-go=\"`4`\" pulumi-lang-python=\"`4`\" pulumi-lang-yaml=\"`4`\" pulumi-lang-java=\"`4`\"\u003e`4`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`6`\" pulumi-lang-dotnet=\"`6`\" pulumi-lang-go=\"`6`\" pulumi-lang-python=\"`6`\" pulumi-lang-yaml=\"`6`\" pulumi-lang-java=\"`6`\"\u003e`6`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`4`\" pulumi-lang-dotnet=\"`4`\" pulumi-lang-go=\"`4`\" pulumi-lang-python=\"`4`\" pulumi-lang-yaml=\"`4`\" pulumi-lang-java=\"`4`\"\u003e`4`\u003c/span\u003e. Changing this creates a new BGP speaker.\n","willReplaceOnChanges":true},"localAs":{"type":"integer","description":"The local autonomous system number (ASN) for the BGP\nspeaker. This is a mandatory field and must be specified. Changing this\ncreates a new BGP speaker.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"A name for the BGP speaker.\n"},"networks":{"type":"array","items":{"type":"string"},"description":"A list of network IDs to associate with the BGP speaker.\n"},"peers":{"type":"array","items":{"type":"string"},"description":"A list of BGP peer IDs to associate with the BGP speaker.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron network. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new BGP\nspeaker.\n","willReplaceOnChanges":true},"tenantId":{"type":"string","description":"The tenant/project ID. Required if admin privileges\nare used. Changing this creates a new BGP speaker.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:networking/floatingIp:FloatingIp":{"description":"\n\n## Import\n\nFloating IPs can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:networking/floatingIp:FloatingIp floatip_1 2c7f39f3-702b-48d1-940c-b50384177ee1\n```\n","properties":{"address":{"type":"string","description":"The actual/specific floating IP to obtain. By default,\nnon-admin users are not able to specify a floating IP, so you must either be\nan admin user or have had a custom policy or role applied to your OpenStack\nuser or project.\n"},"allTags":{"type":"array","items":{"type":"string"},"description":"The collection of tags assigned on the floating IP, which have\nbeen explicitly and implicitly added.\n"},"description":{"type":"string","description":"Human-readable description for the floating IP.\n"},"dnsDomain":{"type":"string","description":"The floating IP DNS domain. Available, when Neutron\nDNS extension is enabled. The data in this attribute will be published in an\nexternal DNS service when Neutron is configured to integrate with such a\nservice. Changing this creates a new floating IP.\n"},"dnsName":{"type":"string","description":"The floating IP DNS name. Available, when Neutron DNS\nextension is enabled. The data in this attribute will be published in an\nexternal DNS service when Neutron is configured to integrate with such a\nservice. Changing this creates a new floating IP.\n"},"fixedIp":{"type":"string","description":"Fixed IP of the port to associate with this floating IP. Required if\nthe port has multiple fixed IPs.\n"},"pool":{"type":"string","description":"The name of the pool from which to obtain the floating\nIP. Changing this creates a new floating IP.\n"},"portId":{"type":"string","description":"ID of an existing port with at least one IP address to\nassociate with this floating IP.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a floating IP that can be used with\nanother networking resource, such as a load balancer. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nfloating IP (which may or may not have a different address).\n"},"subnetId":{"type":"string","description":"The subnet ID of the floating IP pool. Specify this if\nthe floating IP network has multiple subnets.\n"},"subnetIds":{"type":"array","items":{"type":"string"},"description":"A list of external subnet IDs to try over each to\nallocate a floating IP address. If a subnet ID in a list has exhausted\nfloating IP pool, the next subnet ID will be tried. This argument is used only\nduring the resource creation. Conflicts with a \u003cspan pulumi-lang-nodejs=\"`subnetId`\" pulumi-lang-dotnet=\"`SubnetId`\" pulumi-lang-go=\"`subnetId`\" pulumi-lang-python=\"`subnet_id`\" pulumi-lang-yaml=\"`subnetId`\" pulumi-lang-java=\"`subnetId`\"\u003e`subnet_id`\u003c/span\u003e argument.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A set of string tags for the floating IP.\n"},"tenantId":{"type":"string","description":"The target tenant ID in which to allocate the floating\nIP, if you specify this together with a port_id, make sure the target port\nbelongs to the same tenant. Changing this creates a new floating IP (which\nmay or may not have a different address)\n"},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n"}},"required":["address","allTags","dnsDomain","dnsName","fixedIp","pool","portId","region","subnetId","tenantId"],"inputProperties":{"address":{"type":"string","description":"The actual/specific floating IP to obtain. By default,\nnon-admin users are not able to specify a floating IP, so you must either be\nan admin user or have had a custom policy or role applied to your OpenStack\nuser or project.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"Human-readable description for the floating IP.\n"},"dnsDomain":{"type":"string","description":"The floating IP DNS domain. Available, when Neutron\nDNS extension is enabled. The data in this attribute will be published in an\nexternal DNS service when Neutron is configured to integrate with such a\nservice. Changing this creates a new floating IP.\n","willReplaceOnChanges":true},"dnsName":{"type":"string","description":"The floating IP DNS name. Available, when Neutron DNS\nextension is enabled. The data in this attribute will be published in an\nexternal DNS service when Neutron is configured to integrate with such a\nservice. Changing this creates a new floating IP.\n","willReplaceOnChanges":true},"fixedIp":{"type":"string","description":"Fixed IP of the port to associate with this floating IP. Required if\nthe port has multiple fixed IPs.\n"},"pool":{"type":"string","description":"The name of the pool from which to obtain the floating\nIP. Changing this creates a new floating IP.\n","willReplaceOnChanges":true},"portId":{"type":"string","description":"ID of an existing port with at least one IP address to\nassociate with this floating IP.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a floating IP that can be used with\nanother networking resource, such as a load balancer. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nfloating IP (which may or may not have a different address).\n","willReplaceOnChanges":true},"subnetId":{"type":"string","description":"The subnet ID of the floating IP pool. Specify this if\nthe floating IP network has multiple subnets.\n"},"subnetIds":{"type":"array","items":{"type":"string"},"description":"A list of external subnet IDs to try over each to\nallocate a floating IP address. If a subnet ID in a list has exhausted\nfloating IP pool, the next subnet ID will be tried. This argument is used only\nduring the resource creation. Conflicts with a \u003cspan pulumi-lang-nodejs=\"`subnetId`\" pulumi-lang-dotnet=\"`SubnetId`\" pulumi-lang-go=\"`subnetId`\" pulumi-lang-python=\"`subnet_id`\" pulumi-lang-yaml=\"`subnetId`\" pulumi-lang-java=\"`subnetId`\"\u003e`subnet_id`\u003c/span\u003e argument.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A set of string tags for the floating IP.\n"},"tenantId":{"type":"string","description":"The target tenant ID in which to allocate the floating\nIP, if you specify this together with a port_id, make sure the target port\nbelongs to the same tenant. Changing this creates a new floating IP (which\nmay or may not have a different address)\n","willReplaceOnChanges":true},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering FloatingIp resources.\n","properties":{"address":{"type":"string","description":"The actual/specific floating IP to obtain. By default,\nnon-admin users are not able to specify a floating IP, so you must either be\nan admin user or have had a custom policy or role applied to your OpenStack\nuser or project.\n","willReplaceOnChanges":true},"allTags":{"type":"array","items":{"type":"string"},"description":"The collection of tags assigned on the floating IP, which have\nbeen explicitly and implicitly added.\n"},"description":{"type":"string","description":"Human-readable description for the floating IP.\n"},"dnsDomain":{"type":"string","description":"The floating IP DNS domain. Available, when Neutron\nDNS extension is enabled. The data in this attribute will be published in an\nexternal DNS service when Neutron is configured to integrate with such a\nservice. Changing this creates a new floating IP.\n","willReplaceOnChanges":true},"dnsName":{"type":"string","description":"The floating IP DNS name. Available, when Neutron DNS\nextension is enabled. The data in this attribute will be published in an\nexternal DNS service when Neutron is configured to integrate with such a\nservice. Changing this creates a new floating IP.\n","willReplaceOnChanges":true},"fixedIp":{"type":"string","description":"Fixed IP of the port to associate with this floating IP. Required if\nthe port has multiple fixed IPs.\n"},"pool":{"type":"string","description":"The name of the pool from which to obtain the floating\nIP. Changing this creates a new floating IP.\n","willReplaceOnChanges":true},"portId":{"type":"string","description":"ID of an existing port with at least one IP address to\nassociate with this floating IP.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a floating IP that can be used with\nanother networking resource, such as a load balancer. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nfloating IP (which may or may not have a different address).\n","willReplaceOnChanges":true},"subnetId":{"type":"string","description":"The subnet ID of the floating IP pool. Specify this if\nthe floating IP network has multiple subnets.\n"},"subnetIds":{"type":"array","items":{"type":"string"},"description":"A list of external subnet IDs to try over each to\nallocate a floating IP address. If a subnet ID in a list has exhausted\nfloating IP pool, the next subnet ID will be tried. This argument is used only\nduring the resource creation. Conflicts with a \u003cspan pulumi-lang-nodejs=\"`subnetId`\" pulumi-lang-dotnet=\"`SubnetId`\" pulumi-lang-go=\"`subnetId`\" pulumi-lang-python=\"`subnet_id`\" pulumi-lang-yaml=\"`subnetId`\" pulumi-lang-java=\"`subnetId`\"\u003e`subnet_id`\u003c/span\u003e argument.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A set of string tags for the floating IP.\n"},"tenantId":{"type":"string","description":"The target tenant ID in which to allocate the floating\nIP, if you specify this together with a port_id, make sure the target port\nbelongs to the same tenant. Changing this creates a new floating IP (which\nmay or may not have a different address)\n","willReplaceOnChanges":true},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:networking/floatingIpAssociate:FloatingIpAssociate":{"description":"Associates a floating IP to a port. This is useful for situations\nwhere you have a pre-allocated floating IP or are unable to use the\n\u003cspan pulumi-lang-nodejs=\"`openstack.networking.FloatingIp`\" pulumi-lang-dotnet=\"`openstack.networking.FloatingIp`\" pulumi-lang-go=\"`networking.FloatingIp`\" pulumi-lang-python=\"`networking.FloatingIp`\" pulumi-lang-yaml=\"`openstack.networking.FloatingIp`\" pulumi-lang-java=\"`openstack.networking.FloatingIp`\"\u003e`openstack.networking.FloatingIp`\u003c/span\u003e resource to create a floating IP.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst port1 = new openstack.networking.Port(\"port_1\", {networkId: \"a5bbd213-e1d3-49b6-aed1-9df60ea94b9a\"});\nconst fip1 = new openstack.networking.FloatingIpAssociate(\"fip_1\", {\n    floatingIp: \"1.2.3.4\",\n    portId: port1.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nport1 = openstack.networking.Port(\"port_1\", network_id=\"a5bbd213-e1d3-49b6-aed1-9df60ea94b9a\")\nfip1 = openstack.networking.FloatingIpAssociate(\"fip_1\",\n    floating_ip=\"1.2.3.4\",\n    port_id=port1.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var port1 = new OpenStack.Networking.Port(\"port_1\", new()\n    {\n        NetworkId = \"a5bbd213-e1d3-49b6-aed1-9df60ea94b9a\",\n    });\n\n    var fip1 = new OpenStack.Networking.FloatingIpAssociate(\"fip_1\", new()\n    {\n        FloatingIp = \"1.2.3.4\",\n        PortId = port1.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tport1, err := networking.NewPort(ctx, \"port_1\", \u0026networking.PortArgs{\n\t\t\tNetworkId: pulumi.String(\"a5bbd213-e1d3-49b6-aed1-9df60ea94b9a\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networking.NewFloatingIpAssociate(ctx, \"fip_1\", \u0026networking.FloatingIpAssociateArgs{\n\t\t\tFloatingIp: pulumi.String(\"1.2.3.4\"),\n\t\t\tPortId:     port1.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.openstack.networking.Port;\nimport com.pulumi.openstack.networking.PortArgs;\nimport com.pulumi.openstack.networking.FloatingIpAssociate;\nimport com.pulumi.openstack.networking.FloatingIpAssociateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 port1 = new Port(\"port1\", PortArgs.builder()\n            .networkId(\"a5bbd213-e1d3-49b6-aed1-9df60ea94b9a\")\n            .build());\n\n        var fip1 = new FloatingIpAssociate(\"fip1\", FloatingIpAssociateArgs.builder()\n            .floatingIp(\"1.2.3.4\")\n            .portId(port1.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  port1:\n    type: openstack:networking:Port\n    name: port_1\n    properties:\n      networkId: a5bbd213-e1d3-49b6-aed1-9df60ea94b9a\n  fip1:\n    type: openstack:networking:FloatingIpAssociate\n    name: fip_1\n    properties:\n      floatingIp: 1.2.3.4\n      portId: ${port1.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFloating IP associations can be imported using the `id` of the floating IP, e.g.\n\n```sh\n$ pulumi import openstack:networking/floatingIpAssociate:FloatingIpAssociate fip 2c7f39f3-702b-48d1-940c-b50384177ee1\n```\n","properties":{"fixedIp":{"type":"string"},"floatingIp":{"type":"string","description":"IP Address of an existing floating IP.\n"},"portId":{"type":"string","description":"ID of an existing port with at least one IP address to\nassociate with this floating IP.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a floating IP that can be used with\nanother networking resource, such as a load balancer. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nfloating IP (which may or may not have a different address).\n"}},"required":["fixedIp","floatingIp","portId","region"],"inputProperties":{"fixedIp":{"type":"string"},"floatingIp":{"type":"string","description":"IP Address of an existing floating IP.\n","willReplaceOnChanges":true},"portId":{"type":"string","description":"ID of an existing port with at least one IP address to\nassociate with this floating IP.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a floating IP that can be used with\nanother networking resource, such as a load balancer. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nfloating IP (which may or may not have a different address).\n","willReplaceOnChanges":true}},"requiredInputs":["floatingIp","portId"],"stateInputs":{"description":"Input properties used for looking up and filtering FloatingIpAssociate resources.\n","properties":{"fixedIp":{"type":"string"},"floatingIp":{"type":"string","description":"IP Address of an existing floating IP.\n","willReplaceOnChanges":true},"portId":{"type":"string","description":"ID of an existing port with at least one IP address to\nassociate with this floating IP.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a floating IP that can be used with\nanother networking resource, such as a load balancer. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nfloating IP (which may or may not have a different address).\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:networking/network:Network":{"description":"Manages a V2 Neutron network resource within OpenStack.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst network1 = new openstack.networking.Network(\"network_1\", {\n    name: \"network_1\",\n    adminStateUp: true,\n});\nconst subnet1 = new openstack.networking.Subnet(\"subnet_1\", {\n    name: \"subnet_1\",\n    networkId: network1.id,\n    cidr: \"192.168.199.0/24\",\n    ipVersion: 4,\n});\nconst secgroup1 = new openstack.networking.SecGroup(\"secgroup_1\", {\n    name: \"secgroup_1\",\n    description: \"a security group\",\n});\nconst secgroupRule1 = new openstack.networking.SecGroupRule(\"secgroup_rule_1\", {\n    direction: \"ingress\",\n    ethertype: \"IPv4\",\n    protocol: \"tcp\",\n    portRangeMin: 22,\n    portRangeMax: 22,\n    remoteIpPrefix: \"0.0.0.0/0\",\n    securityGroupId: secgroup1.id,\n});\nconst port1 = new openstack.networking.Port(\"port_1\", {\n    name: \"port_1\",\n    networkId: network1.id,\n    adminStateUp: true,\n    securityGroupIds: [secgroup1.id],\n    fixedIps: [{\n        subnetId: subnet1.id,\n        ipAddress: \"192.168.199.10\",\n    }],\n});\nconst instance1 = new openstack.compute.Instance(\"instance_1\", {\n    name: \"instance_1\",\n    securityGroups: [secgroup1.name],\n    networks: [{\n        port: port1.id,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nnetwork1 = openstack.networking.Network(\"network_1\",\n    name=\"network_1\",\n    admin_state_up=True)\nsubnet1 = openstack.networking.Subnet(\"subnet_1\",\n    name=\"subnet_1\",\n    network_id=network1.id,\n    cidr=\"192.168.199.0/24\",\n    ip_version=4)\nsecgroup1 = openstack.networking.SecGroup(\"secgroup_1\",\n    name=\"secgroup_1\",\n    description=\"a security group\")\nsecgroup_rule1 = openstack.networking.SecGroupRule(\"secgroup_rule_1\",\n    direction=\"ingress\",\n    ethertype=\"IPv4\",\n    protocol=\"tcp\",\n    port_range_min=22,\n    port_range_max=22,\n    remote_ip_prefix=\"0.0.0.0/0\",\n    security_group_id=secgroup1.id)\nport1 = openstack.networking.Port(\"port_1\",\n    name=\"port_1\",\n    network_id=network1.id,\n    admin_state_up=True,\n    security_group_ids=[secgroup1.id],\n    fixed_ips=[{\n        \"subnet_id\": subnet1.id,\n        \"ip_address\": \"192.168.199.10\",\n    }])\ninstance1 = openstack.compute.Instance(\"instance_1\",\n    name=\"instance_1\",\n    security_groups=[secgroup1.name],\n    networks=[{\n        \"port\": port1.id,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var network1 = new OpenStack.Networking.Network(\"network_1\", new()\n    {\n        Name = \"network_1\",\n        AdminStateUp = true,\n    });\n\n    var subnet1 = new OpenStack.Networking.Subnet(\"subnet_1\", new()\n    {\n        Name = \"subnet_1\",\n        NetworkId = network1.Id,\n        Cidr = \"192.168.199.0/24\",\n        IpVersion = 4,\n    });\n\n    var secgroup1 = new OpenStack.Networking.SecGroup(\"secgroup_1\", new()\n    {\n        Name = \"secgroup_1\",\n        Description = \"a security group\",\n    });\n\n    var secgroupRule1 = new OpenStack.Networking.SecGroupRule(\"secgroup_rule_1\", new()\n    {\n        Direction = \"ingress\",\n        Ethertype = \"IPv4\",\n        Protocol = \"tcp\",\n        PortRangeMin = 22,\n        PortRangeMax = 22,\n        RemoteIpPrefix = \"0.0.0.0/0\",\n        SecurityGroupId = secgroup1.Id,\n    });\n\n    var port1 = new OpenStack.Networking.Port(\"port_1\", new()\n    {\n        Name = \"port_1\",\n        NetworkId = network1.Id,\n        AdminStateUp = true,\n        SecurityGroupIds = new[]\n        {\n            secgroup1.Id,\n        },\n        FixedIps = new[]\n        {\n            new OpenStack.Networking.Inputs.PortFixedIpArgs\n            {\n                SubnetId = subnet1.Id,\n                IpAddress = \"192.168.199.10\",\n            },\n        },\n    });\n\n    var instance1 = new OpenStack.Compute.Instance(\"instance_1\", new()\n    {\n        Name = \"instance_1\",\n        SecurityGroups = new[]\n        {\n            secgroup1.Name,\n        },\n        Networks = new[]\n        {\n            new OpenStack.Compute.Inputs.InstanceNetworkArgs\n            {\n                Port = port1.Id,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/compute\"\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork1, err := networking.NewNetwork(ctx, \"network_1\", \u0026networking.NetworkArgs{\n\t\t\tName:         pulumi.String(\"network_1\"),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet1, err := networking.NewSubnet(ctx, \"subnet_1\", \u0026networking.SubnetArgs{\n\t\t\tName:      pulumi.String(\"subnet_1\"),\n\t\t\tNetworkId: network1.ID(),\n\t\t\tCidr:      pulumi.String(\"192.168.199.0/24\"),\n\t\t\tIpVersion: pulumi.Int(4),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecgroup1, err := networking.NewSecGroup(ctx, \"secgroup_1\", \u0026networking.SecGroupArgs{\n\t\t\tName:        pulumi.String(\"secgroup_1\"),\n\t\t\tDescription: pulumi.String(\"a security group\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networking.NewSecGroupRule(ctx, \"secgroup_rule_1\", \u0026networking.SecGroupRuleArgs{\n\t\t\tDirection:       pulumi.String(\"ingress\"),\n\t\t\tEthertype:       pulumi.String(\"IPv4\"),\n\t\t\tProtocol:        pulumi.String(\"tcp\"),\n\t\t\tPortRangeMin:    pulumi.Int(22),\n\t\t\tPortRangeMax:    pulumi.Int(22),\n\t\t\tRemoteIpPrefix:  pulumi.String(\"0.0.0.0/0\"),\n\t\t\tSecurityGroupId: secgroup1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tport1, err := networking.NewPort(ctx, \"port_1\", \u0026networking.PortArgs{\n\t\t\tName:         pulumi.String(\"port_1\"),\n\t\t\tNetworkId:    network1.ID(),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\tsecgroup1.ID(),\n\t\t\t},\n\t\t\tFixedIps: networking.PortFixedIpArray{\n\t\t\t\t\u0026networking.PortFixedIpArgs{\n\t\t\t\t\tSubnetId:  subnet1.ID(),\n\t\t\t\t\tIpAddress: pulumi.String(\"192.168.199.10\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"instance_1\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"instance_1\"),\n\t\t\tSecurityGroups: pulumi.StringArray{\n\t\t\t\tsecgroup1.Name,\n\t\t\t},\n\t\t\tNetworks: compute.InstanceNetworkArray{\n\t\t\t\t\u0026compute.InstanceNetworkArgs{\n\t\t\t\t\tPort: port1.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.openstack.networking.Network;\nimport com.pulumi.openstack.networking.NetworkArgs;\nimport com.pulumi.openstack.networking.Subnet;\nimport com.pulumi.openstack.networking.SubnetArgs;\nimport com.pulumi.openstack.networking.SecGroup;\nimport com.pulumi.openstack.networking.SecGroupArgs;\nimport com.pulumi.openstack.networking.SecGroupRule;\nimport com.pulumi.openstack.networking.SecGroupRuleArgs;\nimport com.pulumi.openstack.networking.Port;\nimport com.pulumi.openstack.networking.PortArgs;\nimport com.pulumi.openstack.networking.inputs.PortFixedIpArgs;\nimport com.pulumi.openstack.compute.Instance;\nimport com.pulumi.openstack.compute.InstanceArgs;\nimport com.pulumi.openstack.compute.inputs.InstanceNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 network1 = new Network(\"network1\", NetworkArgs.builder()\n            .name(\"network_1\")\n            .adminStateUp(true)\n            .build());\n\n        var subnet1 = new Subnet(\"subnet1\", SubnetArgs.builder()\n            .name(\"subnet_1\")\n            .networkId(network1.id())\n            .cidr(\"192.168.199.0/24\")\n            .ipVersion(4)\n            .build());\n\n        var secgroup1 = new SecGroup(\"secgroup1\", SecGroupArgs.builder()\n            .name(\"secgroup_1\")\n            .description(\"a security group\")\n            .build());\n\n        var secgroupRule1 = new SecGroupRule(\"secgroupRule1\", SecGroupRuleArgs.builder()\n            .direction(\"ingress\")\n            .ethertype(\"IPv4\")\n            .protocol(\"tcp\")\n            .portRangeMin(22)\n            .portRangeMax(22)\n            .remoteIpPrefix(\"0.0.0.0/0\")\n            .securityGroupId(secgroup1.id())\n            .build());\n\n        var port1 = new Port(\"port1\", PortArgs.builder()\n            .name(\"port_1\")\n            .networkId(network1.id())\n            .adminStateUp(true)\n            .securityGroupIds(secgroup1.id())\n            .fixedIps(PortFixedIpArgs.builder()\n                .subnetId(subnet1.id())\n                .ipAddress(\"192.168.199.10\")\n                .build())\n            .build());\n\n        var instance1 = new Instance(\"instance1\", InstanceArgs.builder()\n            .name(\"instance_1\")\n            .securityGroups(secgroup1.name())\n            .networks(InstanceNetworkArgs.builder()\n                .port(port1.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  network1:\n    type: openstack:networking:Network\n    name: network_1\n    properties:\n      name: network_1\n      adminStateUp: 'true'\n  subnet1:\n    type: openstack:networking:Subnet\n    name: subnet_1\n    properties:\n      name: subnet_1\n      networkId: ${network1.id}\n      cidr: 192.168.199.0/24\n      ipVersion: 4\n  secgroup1:\n    type: openstack:networking:SecGroup\n    name: secgroup_1\n    properties:\n      name: secgroup_1\n      description: a security group\n  secgroupRule1:\n    type: openstack:networking:SecGroupRule\n    name: secgroup_rule_1\n    properties:\n      direction: ingress\n      ethertype: IPv4\n      protocol: tcp\n      portRangeMin: 22\n      portRangeMax: 22\n      remoteIpPrefix: 0.0.0.0/0\n      securityGroupId: ${secgroup1.id}\n  port1:\n    type: openstack:networking:Port\n    name: port_1\n    properties:\n      name: port_1\n      networkId: ${network1.id}\n      adminStateUp: 'true'\n      securityGroupIds:\n        - ${secgroup1.id}\n      fixedIps:\n        - subnetId: ${subnet1.id}\n          ipAddress: 192.168.199.10\n  instance1:\n    type: openstack:compute:Instance\n    name: instance_1\n    properties:\n      name: instance_1\n      securityGroups:\n        - ${secgroup1.name}\n      networks:\n        - port: ${port1.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetworks can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:networking/network:Network network_1 d90ce693-5ccf-4136-a0ed-152ce412b6b9\n```\n","properties":{"adminStateUp":{"type":"boolean","description":"The administrative state of the network.\nAcceptable values are \"true\" and \"false\". Changing this value updates the\nstate of the existing network.\n"},"allTags":{"type":"array","items":{"type":"string"},"description":"The collection of tags assigned on the network, which have been\nexplicitly and implicitly added.\n"},"availabilityZoneHints":{"type":"array","items":{"type":"string"},"description":"An availability zone is used to make\nnetwork resources highly available. Used for resources with high availability\nso that they are scheduled on different availability zones. Changing this\ncreates a new network.\n"},"description":{"type":"string","description":"Human-readable description of the network. Changing this\nupdates the name of the existing network.\n"},"dnsDomain":{"type":"string","description":"The network DNS domain. Available, when Neutron DNS\nextension is enabled. The \u003cspan pulumi-lang-nodejs=\"`dnsDomain`\" pulumi-lang-dotnet=\"`DnsDomain`\" pulumi-lang-go=\"`dnsDomain`\" pulumi-lang-python=\"`dns_domain`\" pulumi-lang-yaml=\"`dnsDomain`\" pulumi-lang-java=\"`dnsDomain`\"\u003e`dns_domain`\u003c/span\u003e of a network in conjunction with the\n\u003cspan pulumi-lang-nodejs=\"`dnsName`\" pulumi-lang-dotnet=\"`DnsName`\" pulumi-lang-go=\"`dnsName`\" pulumi-lang-python=\"`dns_name`\" pulumi-lang-yaml=\"`dnsName`\" pulumi-lang-java=\"`dnsName`\"\u003e`dns_name`\u003c/span\u003e attribute of its ports will be published in an external DNS\nservice when Neutron is configured to integrate with such a service.\n"},"external":{"type":"boolean","description":"Specifies whether the network resource has the\nexternal routing facility. Valid values are true and false. Defaults to\nfalse. Changing this updates the external attribute of the existing network.\n"},"mtu":{"type":"integer","description":"The network MTU. Available for read-only, when Neutron\n`net-mtu` extension is enabled. Available for the modification, when\nNeutron `net-mtu-writable` extension is enabled.\n"},"name":{"type":"string","description":"The name of the network. Changing this updates the name of\nthe existing network.\n"},"portSecurityEnabled":{"type":"boolean","description":"Whether to explicitly enable or disable\nport security on the network. Port Security is usually enabled by default, so\nomitting this argument will usually result in a value of \"true\". Setting this\nexplicitly to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e will disable port security. Valid values are \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and\n\u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"qosPolicyId":{"type":"string","description":"Reference to the associated QoS policy.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron network. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nnetwork.\n"},"segments":{"type":"array","items":{"$ref":"#/types/openstack:networking/NetworkSegment:NetworkSegment"},"description":"An array of one or more provider segment objects.\nNote: most Networking plug-ins (e.g. ML2 Plugin) and drivers do not support\nupdating any provider related segments attributes. Check your plug-in whether\nit supports updating.\n"},"shared":{"type":"boolean","description":"Specifies whether the network resource can be accessed\nby any tenant or not. Changing this updates the sharing capabilities of the\nexisting network.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A set of string tags for the network.\n"},"tenantId":{"type":"string","description":"The owner of the network. Required if admin wants to\ncreate a network for another tenant. Changing this creates a new network.\n"},"transparentVlan":{"type":"boolean","description":"Specifies whether the network resource has the\nVLAN transparent attribute set. Valid values are true and false. Defaults to\nfalse. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`transparentVlan`\" pulumi-lang-dotnet=\"`TransparentVlan`\" pulumi-lang-go=\"`transparentVlan`\" pulumi-lang-python=\"`transparent_vlan`\" pulumi-lang-yaml=\"`transparentVlan`\" pulumi-lang-java=\"`transparentVlan`\"\u003e`transparent_vlan`\u003c/span\u003e attribute of the existing\nnetwork.\n"},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n"}},"required":["adminStateUp","allTags","availabilityZoneHints","dnsDomain","external","mtu","name","portSecurityEnabled","qosPolicyId","region","segments","shared","tenantId","transparentVlan"],"inputProperties":{"adminStateUp":{"type":"boolean","description":"The administrative state of the network.\nAcceptable values are \"true\" and \"false\". Changing this value updates the\nstate of the existing network.\n"},"availabilityZoneHints":{"type":"array","items":{"type":"string"},"description":"An availability zone is used to make\nnetwork resources highly available. Used for resources with high availability\nso that they are scheduled on different availability zones. Changing this\ncreates a new network.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"Human-readable description of the network. Changing this\nupdates the name of the existing network.\n"},"dnsDomain":{"type":"string","description":"The network DNS domain. Available, when Neutron DNS\nextension is enabled. The \u003cspan pulumi-lang-nodejs=\"`dnsDomain`\" pulumi-lang-dotnet=\"`DnsDomain`\" pulumi-lang-go=\"`dnsDomain`\" pulumi-lang-python=\"`dns_domain`\" pulumi-lang-yaml=\"`dnsDomain`\" pulumi-lang-java=\"`dnsDomain`\"\u003e`dns_domain`\u003c/span\u003e of a network in conjunction with the\n\u003cspan pulumi-lang-nodejs=\"`dnsName`\" pulumi-lang-dotnet=\"`DnsName`\" pulumi-lang-go=\"`dnsName`\" pulumi-lang-python=\"`dns_name`\" pulumi-lang-yaml=\"`dnsName`\" pulumi-lang-java=\"`dnsName`\"\u003e`dns_name`\u003c/span\u003e attribute of its ports will be published in an external DNS\nservice when Neutron is configured to integrate with such a service.\n"},"external":{"type":"boolean","description":"Specifies whether the network resource has the\nexternal routing facility. Valid values are true and false. Defaults to\nfalse. Changing this updates the external attribute of the existing network.\n"},"mtu":{"type":"integer","description":"The network MTU. Available for read-only, when Neutron\n`net-mtu` extension is enabled. Available for the modification, when\nNeutron `net-mtu-writable` extension is enabled.\n"},"name":{"type":"string","description":"The name of the network. Changing this updates the name of\nthe existing network.\n"},"portSecurityEnabled":{"type":"boolean","description":"Whether to explicitly enable or disable\nport security on the network. Port Security is usually enabled by default, so\nomitting this argument will usually result in a value of \"true\". Setting this\nexplicitly to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e will disable port security. Valid values are \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and\n\u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"qosPolicyId":{"type":"string","description":"Reference to the associated QoS policy.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron network. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nnetwork.\n","willReplaceOnChanges":true},"segments":{"type":"array","items":{"$ref":"#/types/openstack:networking/NetworkSegment:NetworkSegment"},"description":"An array of one or more provider segment objects.\nNote: most Networking plug-ins (e.g. ML2 Plugin) and drivers do not support\nupdating any provider related segments attributes. Check your plug-in whether\nit supports updating.\n"},"shared":{"type":"boolean","description":"Specifies whether the network resource can be accessed\nby any tenant or not. Changing this updates the sharing capabilities of the\nexisting network.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A set of string tags for the network.\n"},"tenantId":{"type":"string","description":"The owner of the network. Required if admin wants to\ncreate a network for another tenant. Changing this creates a new network.\n","willReplaceOnChanges":true},"transparentVlan":{"type":"boolean","description":"Specifies whether the network resource has the\nVLAN transparent attribute set. Valid values are true and false. Defaults to\nfalse. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`transparentVlan`\" pulumi-lang-dotnet=\"`TransparentVlan`\" pulumi-lang-go=\"`transparentVlan`\" pulumi-lang-python=\"`transparent_vlan`\" pulumi-lang-yaml=\"`transparentVlan`\" pulumi-lang-java=\"`transparentVlan`\"\u003e`transparent_vlan`\u003c/span\u003e attribute of the existing\nnetwork.\n","willReplaceOnChanges":true},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering Network resources.\n","properties":{"adminStateUp":{"type":"boolean","description":"The administrative state of the network.\nAcceptable values are \"true\" and \"false\". Changing this value updates the\nstate of the existing network.\n"},"allTags":{"type":"array","items":{"type":"string"},"description":"The collection of tags assigned on the network, which have been\nexplicitly and implicitly added.\n"},"availabilityZoneHints":{"type":"array","items":{"type":"string"},"description":"An availability zone is used to make\nnetwork resources highly available. Used for resources with high availability\nso that they are scheduled on different availability zones. Changing this\ncreates a new network.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"Human-readable description of the network. Changing this\nupdates the name of the existing network.\n"},"dnsDomain":{"type":"string","description":"The network DNS domain. Available, when Neutron DNS\nextension is enabled. The \u003cspan pulumi-lang-nodejs=\"`dnsDomain`\" pulumi-lang-dotnet=\"`DnsDomain`\" pulumi-lang-go=\"`dnsDomain`\" pulumi-lang-python=\"`dns_domain`\" pulumi-lang-yaml=\"`dnsDomain`\" pulumi-lang-java=\"`dnsDomain`\"\u003e`dns_domain`\u003c/span\u003e of a network in conjunction with the\n\u003cspan pulumi-lang-nodejs=\"`dnsName`\" pulumi-lang-dotnet=\"`DnsName`\" pulumi-lang-go=\"`dnsName`\" pulumi-lang-python=\"`dns_name`\" pulumi-lang-yaml=\"`dnsName`\" pulumi-lang-java=\"`dnsName`\"\u003e`dns_name`\u003c/span\u003e attribute of its ports will be published in an external DNS\nservice when Neutron is configured to integrate with such a service.\n"},"external":{"type":"boolean","description":"Specifies whether the network resource has the\nexternal routing facility. Valid values are true and false. Defaults to\nfalse. Changing this updates the external attribute of the existing network.\n"},"mtu":{"type":"integer","description":"The network MTU. Available for read-only, when Neutron\n`net-mtu` extension is enabled. Available for the modification, when\nNeutron `net-mtu-writable` extension is enabled.\n"},"name":{"type":"string","description":"The name of the network. Changing this updates the name of\nthe existing network.\n"},"portSecurityEnabled":{"type":"boolean","description":"Whether to explicitly enable or disable\nport security on the network. Port Security is usually enabled by default, so\nomitting this argument will usually result in a value of \"true\". Setting this\nexplicitly to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e will disable port security. Valid values are \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and\n\u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"qosPolicyId":{"type":"string","description":"Reference to the associated QoS policy.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron network. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nnetwork.\n","willReplaceOnChanges":true},"segments":{"type":"array","items":{"$ref":"#/types/openstack:networking/NetworkSegment:NetworkSegment"},"description":"An array of one or more provider segment objects.\nNote: most Networking plug-ins (e.g. ML2 Plugin) and drivers do not support\nupdating any provider related segments attributes. Check your plug-in whether\nit supports updating.\n"},"shared":{"type":"boolean","description":"Specifies whether the network resource can be accessed\nby any tenant or not. Changing this updates the sharing capabilities of the\nexisting network.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A set of string tags for the network.\n"},"tenantId":{"type":"string","description":"The owner of the network. Required if admin wants to\ncreate a network for another tenant. Changing this creates a new network.\n","willReplaceOnChanges":true},"transparentVlan":{"type":"boolean","description":"Specifies whether the network resource has the\nVLAN transparent attribute set. Valid values are true and false. Defaults to\nfalse. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`transparentVlan`\" pulumi-lang-dotnet=\"`TransparentVlan`\" pulumi-lang-go=\"`transparentVlan`\" pulumi-lang-python=\"`transparent_vlan`\" pulumi-lang-yaml=\"`transparentVlan`\" pulumi-lang-java=\"`transparentVlan`\"\u003e`transparent_vlan`\u003c/span\u003e attribute of the existing\nnetwork.\n","willReplaceOnChanges":true},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:networking/port:Port":{"description":"Manages a V2 port resource within OpenStack.\n\n\u003e **Note:** Ports do not get an IP if the network they are attached\nto does not have a subnet. If you create the subnet resource in the\nsame run as the port, make sure to use `fixed_ip.subnet_id` or \n\u003cspan pulumi-lang-nodejs=\"`dependsOn`\" pulumi-lang-dotnet=\"`DependsOn`\" pulumi-lang-go=\"`dependsOn`\" pulumi-lang-python=\"`depends_on`\" pulumi-lang-yaml=\"`dependsOn`\" pulumi-lang-java=\"`dependsOn`\"\u003e`depends_on`\u003c/span\u003e to enforce the subnet resource creation before the port\ncreation is triggered. More info here\n\n## Example Usage\n\n### Simple port\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst network1 = new openstack.networking.Network(\"network_1\", {\n    name: \"network_1\",\n    adminStateUp: true,\n});\nconst port1 = new openstack.networking.Port(\"port_1\", {\n    name: \"port_1\",\n    networkId: network1.id,\n    adminStateUp: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nnetwork1 = openstack.networking.Network(\"network_1\",\n    name=\"network_1\",\n    admin_state_up=True)\nport1 = openstack.networking.Port(\"port_1\",\n    name=\"port_1\",\n    network_id=network1.id,\n    admin_state_up=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var network1 = new OpenStack.Networking.Network(\"network_1\", new()\n    {\n        Name = \"network_1\",\n        AdminStateUp = true,\n    });\n\n    var port1 = new OpenStack.Networking.Port(\"port_1\", new()\n    {\n        Name = \"port_1\",\n        NetworkId = network1.Id,\n        AdminStateUp = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork1, err := networking.NewNetwork(ctx, \"network_1\", \u0026networking.NetworkArgs{\n\t\t\tName:         pulumi.String(\"network_1\"),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networking.NewPort(ctx, \"port_1\", \u0026networking.PortArgs{\n\t\t\tName:         pulumi.String(\"port_1\"),\n\t\t\tNetworkId:    network1.ID(),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openstack.networking.Network;\nimport com.pulumi.openstack.networking.NetworkArgs;\nimport com.pulumi.openstack.networking.Port;\nimport com.pulumi.openstack.networking.PortArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 network1 = new Network(\"network1\", NetworkArgs.builder()\n            .name(\"network_1\")\n            .adminStateUp(true)\n            .build());\n\n        var port1 = new Port(\"port1\", PortArgs.builder()\n            .name(\"port_1\")\n            .networkId(network1.id())\n            .adminStateUp(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  network1:\n    type: openstack:networking:Network\n    name: network_1\n    properties:\n      name: network_1\n      adminStateUp: 'true'\n  port1:\n    type: openstack:networking:Port\n    name: port_1\n    properties:\n      name: port_1\n      networkId: ${network1.id}\n      adminStateUp: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Port defining fixed_ip.subnet_id\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst network1 = new openstack.networking.Network(\"network_1\", {\n    name: \"network_1\",\n    adminStateUp: true,\n});\nconst subnet1 = new openstack.networking.Subnet(\"subnet_1\", {\n    name: \"subnet_1\",\n    networkId: network1.id,\n    cidr: \"192.168.199.0/24\",\n});\nconst port1 = new openstack.networking.Port(\"port_1\", {\n    name: \"port_1\",\n    networkId: network1.id,\n    adminStateUp: true,\n    fixedIps: [{\n        subnetId: subnet1.id,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nnetwork1 = openstack.networking.Network(\"network_1\",\n    name=\"network_1\",\n    admin_state_up=True)\nsubnet1 = openstack.networking.Subnet(\"subnet_1\",\n    name=\"subnet_1\",\n    network_id=network1.id,\n    cidr=\"192.168.199.0/24\")\nport1 = openstack.networking.Port(\"port_1\",\n    name=\"port_1\",\n    network_id=network1.id,\n    admin_state_up=True,\n    fixed_ips=[{\n        \"subnet_id\": subnet1.id,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var network1 = new OpenStack.Networking.Network(\"network_1\", new()\n    {\n        Name = \"network_1\",\n        AdminStateUp = true,\n    });\n\n    var subnet1 = new OpenStack.Networking.Subnet(\"subnet_1\", new()\n    {\n        Name = \"subnet_1\",\n        NetworkId = network1.Id,\n        Cidr = \"192.168.199.0/24\",\n    });\n\n    var port1 = new OpenStack.Networking.Port(\"port_1\", new()\n    {\n        Name = \"port_1\",\n        NetworkId = network1.Id,\n        AdminStateUp = true,\n        FixedIps = new[]\n        {\n            new OpenStack.Networking.Inputs.PortFixedIpArgs\n            {\n                SubnetId = subnet1.Id,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork1, err := networking.NewNetwork(ctx, \"network_1\", \u0026networking.NetworkArgs{\n\t\t\tName:         pulumi.String(\"network_1\"),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet1, err := networking.NewSubnet(ctx, \"subnet_1\", \u0026networking.SubnetArgs{\n\t\t\tName:      pulumi.String(\"subnet_1\"),\n\t\t\tNetworkId: network1.ID(),\n\t\t\tCidr:      pulumi.String(\"192.168.199.0/24\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networking.NewPort(ctx, \"port_1\", \u0026networking.PortArgs{\n\t\t\tName:         pulumi.String(\"port_1\"),\n\t\t\tNetworkId:    network1.ID(),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t\tFixedIps: networking.PortFixedIpArray{\n\t\t\t\t\u0026networking.PortFixedIpArgs{\n\t\t\t\t\tSubnetId: subnet1.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.openstack.networking.Network;\nimport com.pulumi.openstack.networking.NetworkArgs;\nimport com.pulumi.openstack.networking.Subnet;\nimport com.pulumi.openstack.networking.SubnetArgs;\nimport com.pulumi.openstack.networking.Port;\nimport com.pulumi.openstack.networking.PortArgs;\nimport com.pulumi.openstack.networking.inputs.PortFixedIpArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 network1 = new Network(\"network1\", NetworkArgs.builder()\n            .name(\"network_1\")\n            .adminStateUp(true)\n            .build());\n\n        var subnet1 = new Subnet(\"subnet1\", SubnetArgs.builder()\n            .name(\"subnet_1\")\n            .networkId(network1.id())\n            .cidr(\"192.168.199.0/24\")\n            .build());\n\n        var port1 = new Port(\"port1\", PortArgs.builder()\n            .name(\"port_1\")\n            .networkId(network1.id())\n            .adminStateUp(true)\n            .fixedIps(PortFixedIpArgs.builder()\n                .subnetId(subnet1.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  network1:\n    type: openstack:networking:Network\n    name: network_1\n    properties:\n      name: network_1\n      adminStateUp: 'true'\n  subnet1:\n    type: openstack:networking:Subnet\n    name: subnet_1\n    properties:\n      name: subnet_1\n      networkId: ${network1.id}\n      cidr: 192.168.199.0/24\n  port1:\n    type: openstack:networking:Port\n    name: port_1\n    properties:\n      name: port_1\n      networkId: ${network1.id}\n      adminStateUp: 'true'\n      fixedIps:\n        - subnetId: ${subnet1.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Port with physical binding information\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst network1 = new openstack.networking.Network(\"network_1\", {\n    name: \"network_1\",\n    adminStateUp: true,\n});\nconst port1 = new openstack.networking.Port(\"port_1\", {\n    name: \"port_1\",\n    networkId: network1.id,\n    deviceId: \"cdf70fcf-c161-4f24-9c70-96b3f5a54b71\",\n    deviceOwner: \"baremetal:none\",\n    adminStateUp: true,\n    binding: {\n        hostId: \"b080b9cf-46e0-4ce8-ad47-0fd4accc872b\",\n        vnicType: \"baremetal\",\n        profile: `{\n  \\\\\"local_link_information\\\\\": [\n    {\n      \\\\\"switch_info\\\\\": \\\\\"info1\\\\\",\n      \\\\\"port_id\\\\\": \\\\\"Ethernet3/4\\\\\",\n      \\\\\"switch_id\\\\\": \\\\\"12:34:56:78:9A:BC\\\\\"\n    },\n    {\n      \\\\\"switch_info\\\\\": \\\\\"info2\\\\\",\n      \\\\\"port_id\\\\\": \\\\\"Ethernet3/4\\\\\",\n      \\\\\"switch_id\\\\\": \\\\\"12:34:56:78:9A:BD\\\\\"\n    }\n  ],\n  \\\\\"vlan_type\\\\\": \\\\\"allowed\\\\\"\n}\n`,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nnetwork1 = openstack.networking.Network(\"network_1\",\n    name=\"network_1\",\n    admin_state_up=True)\nport1 = openstack.networking.Port(\"port_1\",\n    name=\"port_1\",\n    network_id=network1.id,\n    device_id=\"cdf70fcf-c161-4f24-9c70-96b3f5a54b71\",\n    device_owner=\"baremetal:none\",\n    admin_state_up=True,\n    binding={\n        \"host_id\": \"b080b9cf-46e0-4ce8-ad47-0fd4accc872b\",\n        \"vnic_type\": \"baremetal\",\n        \"profile\": \"\"\"{\n  \\\"local_link_information\\\": [\n    {\n      \\\"switch_info\\\": \\\"info1\\\",\n      \\\"port_id\\\": \\\"Ethernet3/4\\\",\n      \\\"switch_id\\\": \\\"12:34:56:78:9A:BC\\\"\n    },\n    {\n      \\\"switch_info\\\": \\\"info2\\\",\n      \\\"port_id\\\": \\\"Ethernet3/4\\\",\n      \\\"switch_id\\\": \\\"12:34:56:78:9A:BD\\\"\n    }\n  ],\n  \\\"vlan_type\\\": \\\"allowed\\\"\n}\n\"\"\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var network1 = new OpenStack.Networking.Network(\"network_1\", new()\n    {\n        Name = \"network_1\",\n        AdminStateUp = true,\n    });\n\n    var port1 = new OpenStack.Networking.Port(\"port_1\", new()\n    {\n        Name = \"port_1\",\n        NetworkId = network1.Id,\n        DeviceId = \"cdf70fcf-c161-4f24-9c70-96b3f5a54b71\",\n        DeviceOwner = \"baremetal:none\",\n        AdminStateUp = true,\n        Binding = new OpenStack.Networking.Inputs.PortBindingArgs\n        {\n            HostId = \"b080b9cf-46e0-4ce8-ad47-0fd4accc872b\",\n            VnicType = \"baremetal\",\n            Profile = @\"{\n  \\\"\"local_link_information\\\"\": [\n    {\n      \\\"\"switch_info\\\"\": \\\"\"info1\\\"\",\n      \\\"\"port_id\\\"\": \\\"\"Ethernet3/4\\\"\",\n      \\\"\"switch_id\\\"\": \\\"\"12:34:56:78:9A:BC\\\"\"\n    },\n    {\n      \\\"\"switch_info\\\"\": \\\"\"info2\\\"\",\n      \\\"\"port_id\\\"\": \\\"\"Ethernet3/4\\\"\",\n      \\\"\"switch_id\\\"\": \\\"\"12:34:56:78:9A:BD\\\"\"\n    }\n  ],\n  \\\"\"vlan_type\\\"\": \\\"\"allowed\\\"\"\n}\n\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork1, err := networking.NewNetwork(ctx, \"network_1\", \u0026networking.NetworkArgs{\n\t\t\tName:         pulumi.String(\"network_1\"),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networking.NewPort(ctx, \"port_1\", \u0026networking.PortArgs{\n\t\t\tName:         pulumi.String(\"port_1\"),\n\t\t\tNetworkId:    network1.ID(),\n\t\t\tDeviceId:     pulumi.String(\"cdf70fcf-c161-4f24-9c70-96b3f5a54b71\"),\n\t\t\tDeviceOwner:  pulumi.String(\"baremetal:none\"),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t\tBinding: \u0026networking.PortBindingArgs{\n\t\t\t\tHostId:   pulumi.String(\"b080b9cf-46e0-4ce8-ad47-0fd4accc872b\"),\n\t\t\t\tVnicType: pulumi.String(\"baremetal\"),\n\t\t\t\tProfile: pulumi.String(`{\n  \\\"local_link_information\\\": [\n    {\n      \\\"switch_info\\\": \\\"info1\\\",\n      \\\"port_id\\\": \\\"Ethernet3/4\\\",\n      \\\"switch_id\\\": \\\"12:34:56:78:9A:BC\\\"\n    },\n    {\n      \\\"switch_info\\\": \\\"info2\\\",\n      \\\"port_id\\\": \\\"Ethernet3/4\\\",\n      \\\"switch_id\\\": \\\"12:34:56:78:9A:BD\\\"\n    }\n  ],\n  \\\"vlan_type\\\": \\\"allowed\\\"\n}\n`),\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.openstack.networking.Network;\nimport com.pulumi.openstack.networking.NetworkArgs;\nimport com.pulumi.openstack.networking.Port;\nimport com.pulumi.openstack.networking.PortArgs;\nimport com.pulumi.openstack.networking.inputs.PortBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 network1 = new Network(\"network1\", NetworkArgs.builder()\n            .name(\"network_1\")\n            .adminStateUp(true)\n            .build());\n\n        var port1 = new Port(\"port1\", PortArgs.builder()\n            .name(\"port_1\")\n            .networkId(network1.id())\n            .deviceId(\"cdf70fcf-c161-4f24-9c70-96b3f5a54b71\")\n            .deviceOwner(\"baremetal:none\")\n            .adminStateUp(true)\n            .binding(PortBindingArgs.builder()\n                .hostId(\"b080b9cf-46e0-4ce8-ad47-0fd4accc872b\")\n                .vnicType(\"baremetal\")\n                .profile(\"\"\"\n{\n  \\\"local_link_information\\\": [\n    {\n      \\\"switch_info\\\": \\\"info1\\\",\n      \\\"port_id\\\": \\\"Ethernet3/4\\\",\n      \\\"switch_id\\\": \\\"12:34:56:78:9A:BC\\\"\n    },\n    {\n      \\\"switch_info\\\": \\\"info2\\\",\n      \\\"port_id\\\": \\\"Ethernet3/4\\\",\n      \\\"switch_id\\\": \\\"12:34:56:78:9A:BD\\\"\n    }\n  ],\n  \\\"vlan_type\\\": \\\"allowed\\\"\n}\n                \"\"\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  network1:\n    type: openstack:networking:Network\n    name: network_1\n    properties:\n      name: network_1\n      adminStateUp: 'true'\n  port1:\n    type: openstack:networking:Port\n    name: port_1\n    properties:\n      name: port_1\n      networkId: ${network1.id}\n      deviceId: cdf70fcf-c161-4f24-9c70-96b3f5a54b71\n      deviceOwner: baremetal:none\n      adminStateUp: 'true'\n      binding:\n        hostId: b080b9cf-46e0-4ce8-ad47-0fd4accc872b\n        vnicType: baremetal\n        profile: |\n          {\n            \\\"local_link_information\\\": [\n              {\n                \\\"switch_info\\\": \\\"info1\\\",\n                \\\"port_id\\\": \\\"Ethernet3/4\\\",\n                \\\"switch_id\\\": \\\"12:34:56:78:9A:BC\\\"\n              },\n              {\n                \\\"switch_info\\\": \\\"info2\\\",\n                \\\"port_id\\\": \\\"Ethernet3/4\\\",\n                \\\"switch_id\\\": \\\"12:34:56:78:9A:BD\\\"\n              }\n            ],\n            \\\"vlan_type\\\": \\\"allowed\\\"\n          }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Notes\n\n### Ports and Instances\n\nThere are some notes to consider when connecting Instances to networks using\nPorts. Please see the \u003cspan pulumi-lang-nodejs=\"`openstack.compute.Instance`\" pulumi-lang-dotnet=\"`openstack.compute.Instance`\" pulumi-lang-go=\"`compute.Instance`\" pulumi-lang-python=\"`compute.Instance`\" pulumi-lang-yaml=\"`openstack.compute.Instance`\" pulumi-lang-java=\"`openstack.compute.Instance`\"\u003e`openstack.compute.Instance`\u003c/span\u003e documentation for further\ndocumentation.\n\n## Import\n\nPorts can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:networking/port:Port port_1 eae26a3e-1c33-4cc1-9c31-0cd729c438a1\n```\n","properties":{"adminStateUp":{"type":"boolean","description":"Administrative up/down status for the port\n(must be \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e if provided). Changing this updates the\n\u003cspan pulumi-lang-nodejs=\"`adminStateUp`\" pulumi-lang-dotnet=\"`AdminStateUp`\" pulumi-lang-go=\"`adminStateUp`\" pulumi-lang-python=\"`admin_state_up`\" pulumi-lang-yaml=\"`adminStateUp`\" pulumi-lang-java=\"`adminStateUp`\"\u003e`admin_state_up`\u003c/span\u003e of an existing port.\n"},"allFixedIps":{"type":"array","items":{"type":"string"},"description":"The collection of Fixed IP addresses on the port in the\norder returned by the Network v2 API.\n"},"allSecurityGroupIds":{"type":"array","items":{"type":"string"},"description":"The collection of Security Group IDs on the port\nwhich have been explicitly and implicitly added.\n"},"allTags":{"type":"array","items":{"type":"string"},"description":"The collection of tags assigned on the port, which have been\nexplicitly and implicitly added.\n"},"allowedAddressPairs":{"type":"array","items":{"$ref":"#/types/openstack:networking/PortAllowedAddressPair:PortAllowedAddressPair"},"description":"An IP/MAC Address pair of additional IP\naddresses that can be active on this port. The structure is described\nbelow.\n"},"binding":{"$ref":"#/types/openstack:networking/PortBinding:PortBinding","description":"The port binding allows to specify binding information\nfor the port. The structure is described below.\n"},"description":{"type":"string","description":"Human-readable description of the port. Changing\nthis updates the \u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\"\u003e`description`\u003c/span\u003e of an existing port.\n"},"deviceId":{"type":"string","description":"The ID of the device attached to the port. Changing this\ncreates a new port.\n"},"deviceOwner":{"type":"string","description":"The device owner of the port. Changing this creates\na new port.\n"},"dnsAssignments":{"type":"array","items":{"type":"object","additionalProperties":{"type":"string"}},"description":"The list of maps representing port DNS assignments.\n"},"dnsName":{"type":"string","description":"The port DNS name. Available, when Neutron DNS extension\nis enabled.\n"},"extraDhcpOptions":{"type":"array","items":{"$ref":"#/types/openstack:networking/PortExtraDhcpOption:PortExtraDhcpOption"},"description":"An extra DHCP option that needs to be configured\non the port. The structure is described below. Can be specified multiple\ntimes.\n"},"fixedIps":{"type":"array","items":{"$ref":"#/types/openstack:networking/PortFixedIp:PortFixedIp"},"description":"An array of desired IPs for\nthis port. The structure is described below.\n"},"macAddress":{"type":"string","description":"Specify a specific MAC address for the port. Changing\nthis creates a new port.\n"},"name":{"type":"string","description":"A unique name for the port. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e of an existing port.\n"},"networkId":{"type":"string","description":"The ID of the network to attach the port to. Changing\nthis creates a new port.\n"},"noFixedIp":{"type":"boolean","description":"Create a port with no fixed\nIP address. This will also remove any fixed IPs previously set on a port. \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e\nis the only valid value for this argument.\n"},"noSecurityGroups":{"type":"boolean","description":"If set to\n\u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, then no security groups are applied to the port. If set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e and\nno \u003cspan pulumi-lang-nodejs=\"`securityGroupIds`\" pulumi-lang-dotnet=\"`SecurityGroupIds`\" pulumi-lang-go=\"`securityGroupIds`\" pulumi-lang-python=\"`security_group_ids`\" pulumi-lang-yaml=\"`securityGroupIds`\" pulumi-lang-java=\"`securityGroupIds`\"\u003e`security_group_ids`\u003c/span\u003e are specified, then the port will yield to the default\nbehavior of the Networking service, which is to usually apply the \"default\"\nsecurity group.\n"},"portSecurityEnabled":{"type":"boolean","description":"Whether to explicitly enable or disable\nport security on the port. Port Security is usually enabled by default, so\nomitting argument will usually result in a value of \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e. Setting this\nexplicitly to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e will disable port security. In order to disable port\nsecurity, the port must not have any security groups. Valid values are \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e\nand \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"qosPolicyId":{"type":"string","description":"Reference to the associated QoS policy.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a port. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nport.\n"},"securityGroupIds":{"type":"array","items":{"type":"string"},"description":"A list\nof security group IDs to apply to the port. The security groups must be\nspecified by ID and not name (as opposed to how they are configured with\nthe Compute Instance).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A set of string tags for the port.\n"},"tenantId":{"type":"string","description":"The owner of the port. Required if admin wants\nto create a port for another tenant. Changing this creates a new port.\n"},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n"}},"required":["adminStateUp","allFixedIps","allSecurityGroupIds","allTags","binding","deviceId","deviceOwner","dnsAssignments","dnsName","macAddress","name","networkId","portSecurityEnabled","qosPolicyId","region","tenantId"],"inputProperties":{"adminStateUp":{"type":"boolean","description":"Administrative up/down status for the port\n(must be \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e if provided). Changing this updates the\n\u003cspan pulumi-lang-nodejs=\"`adminStateUp`\" pulumi-lang-dotnet=\"`AdminStateUp`\" pulumi-lang-go=\"`adminStateUp`\" pulumi-lang-python=\"`admin_state_up`\" pulumi-lang-yaml=\"`adminStateUp`\" pulumi-lang-java=\"`adminStateUp`\"\u003e`admin_state_up`\u003c/span\u003e of an existing port.\n"},"allowedAddressPairs":{"type":"array","items":{"$ref":"#/types/openstack:networking/PortAllowedAddressPair:PortAllowedAddressPair"},"description":"An IP/MAC Address pair of additional IP\naddresses that can be active on this port. The structure is described\nbelow.\n"},"binding":{"$ref":"#/types/openstack:networking/PortBinding:PortBinding","description":"The port binding allows to specify binding information\nfor the port. The structure is described below.\n"},"description":{"type":"string","description":"Human-readable description of the port. Changing\nthis updates the \u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\"\u003e`description`\u003c/span\u003e of an existing port.\n"},"deviceId":{"type":"string","description":"The ID of the device attached to the port. Changing this\ncreates a new port.\n","willReplaceOnChanges":true},"deviceOwner":{"type":"string","description":"The device owner of the port. Changing this creates\na new port.\n","willReplaceOnChanges":true},"dnsName":{"type":"string","description":"The port DNS name. Available, when Neutron DNS extension\nis enabled.\n"},"extraDhcpOptions":{"type":"array","items":{"$ref":"#/types/openstack:networking/PortExtraDhcpOption:PortExtraDhcpOption"},"description":"An extra DHCP option that needs to be configured\non the port. The structure is described below. Can be specified multiple\ntimes.\n"},"fixedIps":{"type":"array","items":{"$ref":"#/types/openstack:networking/PortFixedIp:PortFixedIp"},"description":"An array of desired IPs for\nthis port. The structure is described below.\n"},"macAddress":{"type":"string","description":"Specify a specific MAC address for the port. Changing\nthis creates a new port.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"A unique name for the port. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e of an existing port.\n"},"networkId":{"type":"string","description":"The ID of the network to attach the port to. Changing\nthis creates a new port.\n","willReplaceOnChanges":true},"noFixedIp":{"type":"boolean","description":"Create a port with no fixed\nIP address. This will also remove any fixed IPs previously set on a port. \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e\nis the only valid value for this argument.\n"},"noSecurityGroups":{"type":"boolean","description":"If set to\n\u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, then no security groups are applied to the port. If set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e and\nno \u003cspan pulumi-lang-nodejs=\"`securityGroupIds`\" pulumi-lang-dotnet=\"`SecurityGroupIds`\" pulumi-lang-go=\"`securityGroupIds`\" pulumi-lang-python=\"`security_group_ids`\" pulumi-lang-yaml=\"`securityGroupIds`\" pulumi-lang-java=\"`securityGroupIds`\"\u003e`security_group_ids`\u003c/span\u003e are specified, then the port will yield to the default\nbehavior of the Networking service, which is to usually apply the \"default\"\nsecurity group.\n"},"portSecurityEnabled":{"type":"boolean","description":"Whether to explicitly enable or disable\nport security on the port. Port Security is usually enabled by default, so\nomitting argument will usually result in a value of \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e. Setting this\nexplicitly to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e will disable port security. In order to disable port\nsecurity, the port must not have any security groups. Valid values are \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e\nand \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"qosPolicyId":{"type":"string","description":"Reference to the associated QoS policy.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a port. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nport.\n","willReplaceOnChanges":true},"securityGroupIds":{"type":"array","items":{"type":"string"},"description":"A list\nof security group IDs to apply to the port. The security groups must be\nspecified by ID and not name (as opposed to how they are configured with\nthe Compute Instance).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A set of string tags for the port.\n"},"tenantId":{"type":"string","description":"The owner of the port. Required if admin wants\nto create a port for another tenant. Changing this creates a new port.\n","willReplaceOnChanges":true},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n","willReplaceOnChanges":true}},"requiredInputs":["networkId"],"stateInputs":{"description":"Input properties used for looking up and filtering Port resources.\n","properties":{"adminStateUp":{"type":"boolean","description":"Administrative up/down status for the port\n(must be \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e if provided). Changing this updates the\n\u003cspan pulumi-lang-nodejs=\"`adminStateUp`\" pulumi-lang-dotnet=\"`AdminStateUp`\" pulumi-lang-go=\"`adminStateUp`\" pulumi-lang-python=\"`admin_state_up`\" pulumi-lang-yaml=\"`adminStateUp`\" pulumi-lang-java=\"`adminStateUp`\"\u003e`admin_state_up`\u003c/span\u003e of an existing port.\n"},"allFixedIps":{"type":"array","items":{"type":"string"},"description":"The collection of Fixed IP addresses on the port in the\norder returned by the Network v2 API.\n"},"allSecurityGroupIds":{"type":"array","items":{"type":"string"},"description":"The collection of Security Group IDs on the port\nwhich have been explicitly and implicitly added.\n"},"allTags":{"type":"array","items":{"type":"string"},"description":"The collection of tags assigned on the port, which have been\nexplicitly and implicitly added.\n"},"allowedAddressPairs":{"type":"array","items":{"$ref":"#/types/openstack:networking/PortAllowedAddressPair:PortAllowedAddressPair"},"description":"An IP/MAC Address pair of additional IP\naddresses that can be active on this port. The structure is described\nbelow.\n"},"binding":{"$ref":"#/types/openstack:networking/PortBinding:PortBinding","description":"The port binding allows to specify binding information\nfor the port. The structure is described below.\n"},"description":{"type":"string","description":"Human-readable description of the port. Changing\nthis updates the \u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\"\u003e`description`\u003c/span\u003e of an existing port.\n"},"deviceId":{"type":"string","description":"The ID of the device attached to the port. Changing this\ncreates a new port.\n","willReplaceOnChanges":true},"deviceOwner":{"type":"string","description":"The device owner of the port. Changing this creates\na new port.\n","willReplaceOnChanges":true},"dnsAssignments":{"type":"array","items":{"type":"object","additionalProperties":{"type":"string"}},"description":"The list of maps representing port DNS assignments.\n"},"dnsName":{"type":"string","description":"The port DNS name. Available, when Neutron DNS extension\nis enabled.\n"},"extraDhcpOptions":{"type":"array","items":{"$ref":"#/types/openstack:networking/PortExtraDhcpOption:PortExtraDhcpOption"},"description":"An extra DHCP option that needs to be configured\non the port. The structure is described below. Can be specified multiple\ntimes.\n"},"fixedIps":{"type":"array","items":{"$ref":"#/types/openstack:networking/PortFixedIp:PortFixedIp"},"description":"An array of desired IPs for\nthis port. The structure is described below.\n"},"macAddress":{"type":"string","description":"Specify a specific MAC address for the port. Changing\nthis creates a new port.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"A unique name for the port. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e of an existing port.\n"},"networkId":{"type":"string","description":"The ID of the network to attach the port to. Changing\nthis creates a new port.\n","willReplaceOnChanges":true},"noFixedIp":{"type":"boolean","description":"Create a port with no fixed\nIP address. This will also remove any fixed IPs previously set on a port. \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e\nis the only valid value for this argument.\n"},"noSecurityGroups":{"type":"boolean","description":"If set to\n\u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, then no security groups are applied to the port. If set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e and\nno \u003cspan pulumi-lang-nodejs=\"`securityGroupIds`\" pulumi-lang-dotnet=\"`SecurityGroupIds`\" pulumi-lang-go=\"`securityGroupIds`\" pulumi-lang-python=\"`security_group_ids`\" pulumi-lang-yaml=\"`securityGroupIds`\" pulumi-lang-java=\"`securityGroupIds`\"\u003e`security_group_ids`\u003c/span\u003e are specified, then the port will yield to the default\nbehavior of the Networking service, which is to usually apply the \"default\"\nsecurity group.\n"},"portSecurityEnabled":{"type":"boolean","description":"Whether to explicitly enable or disable\nport security on the port. Port Security is usually enabled by default, so\nomitting argument will usually result in a value of \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e. Setting this\nexplicitly to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e will disable port security. In order to disable port\nsecurity, the port must not have any security groups. Valid values are \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e\nand \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"qosPolicyId":{"type":"string","description":"Reference to the associated QoS policy.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a port. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nport.\n","willReplaceOnChanges":true},"securityGroupIds":{"type":"array","items":{"type":"string"},"description":"A list\nof security group IDs to apply to the port. The security groups must be\nspecified by ID and not name (as opposed to how they are configured with\nthe Compute Instance).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A set of string tags for the port.\n"},"tenantId":{"type":"string","description":"The owner of the port. Required if admin wants\nto create a port for another tenant. Changing this creates a new port.\n","willReplaceOnChanges":true},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:networking/portForwardingV2:PortForwardingV2":{"description":"Manages a V2 portforwarding resource within OpenStack.\n\n## Example Usage\n\n### Simple portforwarding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst pf1 = new openstack.networking.PortForwardingV2(\"pf_1\", {\n    floatingipId: \"7a52eb59-7d47-415d-a884-046666a6fbae\",\n    externalPort: 7233,\n    internalPort: 25,\n    internalPortId: \"b930d7f6-ceb7-40a0-8b81-a425dd994ccf\",\n    protocol: \"tcp\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\npf1 = openstack.networking.PortForwardingV2(\"pf_1\",\n    floatingip_id=\"7a52eb59-7d47-415d-a884-046666a6fbae\",\n    external_port=7233,\n    internal_port=25,\n    internal_port_id=\"b930d7f6-ceb7-40a0-8b81-a425dd994ccf\",\n    protocol=\"tcp\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var pf1 = new OpenStack.Networking.PortForwardingV2(\"pf_1\", new()\n    {\n        FloatingipId = \"7a52eb59-7d47-415d-a884-046666a6fbae\",\n        ExternalPort = 7233,\n        InternalPort = 25,\n        InternalPortId = \"b930d7f6-ceb7-40a0-8b81-a425dd994ccf\",\n        Protocol = \"tcp\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networking.NewPortForwardingV2(ctx, \"pf_1\", \u0026networking.PortForwardingV2Args{\n\t\t\tFloatingipId:   pulumi.String(\"7a52eb59-7d47-415d-a884-046666a6fbae\"),\n\t\t\tExternalPort:   pulumi.Int(7233),\n\t\t\tInternalPort:   pulumi.Int(25),\n\t\t\tInternalPortId: pulumi.String(\"b930d7f6-ceb7-40a0-8b81-a425dd994ccf\"),\n\t\t\tProtocol:       pulumi.String(\"tcp\"),\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.openstack.networking.PortForwardingV2;\nimport com.pulumi.openstack.networking.PortForwardingV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 pf1 = new PortForwardingV2(\"pf1\", PortForwardingV2Args.builder()\n            .floatingipId(\"7a52eb59-7d47-415d-a884-046666a6fbae\")\n            .externalPort(7233)\n            .internalPort(25)\n            .internalPortId(\"b930d7f6-ceb7-40a0-8b81-a425dd994ccf\")\n            .protocol(\"tcp\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  pf1:\n    type: openstack:networking:PortForwardingV2\n    name: pf_1\n    properties:\n      floatingipId: 7a52eb59-7d47-415d-a884-046666a6fbae\n      externalPort: 7233\n      internalPort: 25\n      internalPortId: b930d7f6-ceb7-40a0-8b81-a425dd994ccf\n      protocol: tcp\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"description":{"type":"string","description":"A text describing the port forwarding. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\"\u003e`description`\u003c/span\u003e of an existing port forwarding.\n"},"externalPort":{"type":"integer","description":"The TCP/UDP/other protocol port number of the port forwarding. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`externalPort`\" pulumi-lang-dotnet=\"`ExternalPort`\" pulumi-lang-go=\"`externalPort`\" pulumi-lang-python=\"`external_port`\" pulumi-lang-yaml=\"`externalPort`\" pulumi-lang-java=\"`externalPort`\"\u003e`external_port`\u003c/span\u003e of an existing port forwarding.\n"},"floatingipId":{"type":"string","description":"The ID of the Neutron floating IP address. Changing this creates a new port forwarding.\n"},"internalIpAddress":{"type":"string","description":"The fixed IPv4 address of the Neutron port associated with the port forwarding.\nChanging this updates the \u003cspan pulumi-lang-nodejs=\"`internalIpAddress`\" pulumi-lang-dotnet=\"`InternalIpAddress`\" pulumi-lang-go=\"`internalIpAddress`\" pulumi-lang-python=\"`internal_ip_address`\" pulumi-lang-yaml=\"`internalIpAddress`\" pulumi-lang-java=\"`internalIpAddress`\"\u003e`internal_ip_address`\u003c/span\u003e of an existing port forwarding.\n"},"internalPort":{"type":"integer","description":"The TCP/UDP/other protocol port number of the Neutron port fixed IP address associated to the\nport forwarding. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`internalPort`\" pulumi-lang-dotnet=\"`InternalPort`\" pulumi-lang-go=\"`internalPort`\" pulumi-lang-python=\"`internal_port`\" pulumi-lang-yaml=\"`internalPort`\" pulumi-lang-java=\"`internalPort`\"\u003e`internal_port`\u003c/span\u003e of an existing port forwarding.\n"},"internalPortId":{"type":"string","description":"The ID of the Neutron port associated with the port forwarding. Changing\nthis updates the \u003cspan pulumi-lang-nodejs=\"`internalPortId`\" pulumi-lang-dotnet=\"`InternalPortId`\" pulumi-lang-go=\"`internalPortId`\" pulumi-lang-python=\"`internal_port_id`\" pulumi-lang-yaml=\"`internalPortId`\" pulumi-lang-java=\"`internalPortId`\"\u003e`internal_port_id`\u003c/span\u003e of an existing port forwarding.\n"},"protocol":{"type":"string","description":"The IP protocol used in the port forwarding. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`protocol`\" pulumi-lang-dotnet=\"`Protocol`\" pulumi-lang-go=\"`protocol`\" pulumi-lang-python=\"`protocol`\" pulumi-lang-yaml=\"`protocol`\" pulumi-lang-java=\"`protocol`\"\u003e`protocol`\u003c/span\u003e\nof an existing port forwarding.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to create a port forwarding. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nport forwarding.\n"}},"required":["externalPort","floatingipId","internalIpAddress","internalPort","internalPortId","protocol","region"],"inputProperties":{"description":{"type":"string","description":"A text describing the port forwarding. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\"\u003e`description`\u003c/span\u003e of an existing port forwarding.\n"},"externalPort":{"type":"integer","description":"The TCP/UDP/other protocol port number of the port forwarding. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`externalPort`\" pulumi-lang-dotnet=\"`ExternalPort`\" pulumi-lang-go=\"`externalPort`\" pulumi-lang-python=\"`external_port`\" pulumi-lang-yaml=\"`externalPort`\" pulumi-lang-java=\"`externalPort`\"\u003e`external_port`\u003c/span\u003e of an existing port forwarding.\n"},"floatingipId":{"type":"string","description":"The ID of the Neutron floating IP address. Changing this creates a new port forwarding.\n","willReplaceOnChanges":true},"internalIpAddress":{"type":"string","description":"The fixed IPv4 address of the Neutron port associated with the port forwarding.\nChanging this updates the \u003cspan pulumi-lang-nodejs=\"`internalIpAddress`\" pulumi-lang-dotnet=\"`InternalIpAddress`\" pulumi-lang-go=\"`internalIpAddress`\" pulumi-lang-python=\"`internal_ip_address`\" pulumi-lang-yaml=\"`internalIpAddress`\" pulumi-lang-java=\"`internalIpAddress`\"\u003e`internal_ip_address`\u003c/span\u003e of an existing port forwarding.\n"},"internalPort":{"type":"integer","description":"The TCP/UDP/other protocol port number of the Neutron port fixed IP address associated to the\nport forwarding. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`internalPort`\" pulumi-lang-dotnet=\"`InternalPort`\" pulumi-lang-go=\"`internalPort`\" pulumi-lang-python=\"`internal_port`\" pulumi-lang-yaml=\"`internalPort`\" pulumi-lang-java=\"`internalPort`\"\u003e`internal_port`\u003c/span\u003e of an existing port forwarding.\n"},"internalPortId":{"type":"string","description":"The ID of the Neutron port associated with the port forwarding. Changing\nthis updates the \u003cspan pulumi-lang-nodejs=\"`internalPortId`\" pulumi-lang-dotnet=\"`InternalPortId`\" pulumi-lang-go=\"`internalPortId`\" pulumi-lang-python=\"`internal_port_id`\" pulumi-lang-yaml=\"`internalPortId`\" pulumi-lang-java=\"`internalPortId`\"\u003e`internal_port_id`\u003c/span\u003e of an existing port forwarding.\n"},"protocol":{"type":"string","description":"The IP protocol used in the port forwarding. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`protocol`\" pulumi-lang-dotnet=\"`Protocol`\" pulumi-lang-go=\"`protocol`\" pulumi-lang-python=\"`protocol`\" pulumi-lang-yaml=\"`protocol`\" pulumi-lang-java=\"`protocol`\"\u003e`protocol`\u003c/span\u003e\nof an existing port forwarding.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to create a port forwarding. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nport forwarding.\n","willReplaceOnChanges":true}},"requiredInputs":["externalPort","floatingipId","internalIpAddress","internalPort","internalPortId","protocol"],"stateInputs":{"description":"Input properties used for looking up and filtering PortForwardingV2 resources.\n","properties":{"description":{"type":"string","description":"A text describing the port forwarding. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\"\u003e`description`\u003c/span\u003e of an existing port forwarding.\n"},"externalPort":{"type":"integer","description":"The TCP/UDP/other protocol port number of the port forwarding. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`externalPort`\" pulumi-lang-dotnet=\"`ExternalPort`\" pulumi-lang-go=\"`externalPort`\" pulumi-lang-python=\"`external_port`\" pulumi-lang-yaml=\"`externalPort`\" pulumi-lang-java=\"`externalPort`\"\u003e`external_port`\u003c/span\u003e of an existing port forwarding.\n"},"floatingipId":{"type":"string","description":"The ID of the Neutron floating IP address. Changing this creates a new port forwarding.\n","willReplaceOnChanges":true},"internalIpAddress":{"type":"string","description":"The fixed IPv4 address of the Neutron port associated with the port forwarding.\nChanging this updates the \u003cspan pulumi-lang-nodejs=\"`internalIpAddress`\" pulumi-lang-dotnet=\"`InternalIpAddress`\" pulumi-lang-go=\"`internalIpAddress`\" pulumi-lang-python=\"`internal_ip_address`\" pulumi-lang-yaml=\"`internalIpAddress`\" pulumi-lang-java=\"`internalIpAddress`\"\u003e`internal_ip_address`\u003c/span\u003e of an existing port forwarding.\n"},"internalPort":{"type":"integer","description":"The TCP/UDP/other protocol port number of the Neutron port fixed IP address associated to the\nport forwarding. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`internalPort`\" pulumi-lang-dotnet=\"`InternalPort`\" pulumi-lang-go=\"`internalPort`\" pulumi-lang-python=\"`internal_port`\" pulumi-lang-yaml=\"`internalPort`\" pulumi-lang-java=\"`internalPort`\"\u003e`internal_port`\u003c/span\u003e of an existing port forwarding.\n"},"internalPortId":{"type":"string","description":"The ID of the Neutron port associated with the port forwarding. Changing\nthis updates the \u003cspan pulumi-lang-nodejs=\"`internalPortId`\" pulumi-lang-dotnet=\"`InternalPortId`\" pulumi-lang-go=\"`internalPortId`\" pulumi-lang-python=\"`internal_port_id`\" pulumi-lang-yaml=\"`internalPortId`\" pulumi-lang-java=\"`internalPortId`\"\u003e`internal_port_id`\u003c/span\u003e of an existing port forwarding.\n"},"protocol":{"type":"string","description":"The IP protocol used in the port forwarding. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`protocol`\" pulumi-lang-dotnet=\"`Protocol`\" pulumi-lang-go=\"`protocol`\" pulumi-lang-python=\"`protocol`\" pulumi-lang-yaml=\"`protocol`\" pulumi-lang-java=\"`protocol`\"\u003e`protocol`\u003c/span\u003e\nof an existing port forwarding.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to create a port forwarding. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nport forwarding.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:networking/portSecGroupAssociate:PortSecGroupAssociate":{"description":"## Example Usage\n\n### Append a security group to an existing port\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst systemPort = openstack.networking.getPort({\n    fixedIp: \"10.0.0.10\",\n});\nconst secgroup = openstack.networking.getSecGroup({\n    name: \"secgroup\",\n});\nconst port1 = new openstack.networking.PortSecGroupAssociate(\"port_1\", {\n    portId: systemPort.then(systemPort =\u003e systemPort.id),\n    securityGroupIds: [secgroup.then(secgroup =\u003e secgroup.id)],\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nsystem_port = openstack.networking.get_port(fixed_ip=\"10.0.0.10\")\nsecgroup = openstack.networking.get_sec_group(name=\"secgroup\")\nport1 = openstack.networking.PortSecGroupAssociate(\"port_1\",\n    port_id=system_port.id,\n    security_group_ids=[secgroup.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var systemPort = OpenStack.Networking.GetPort.Invoke(new()\n    {\n        FixedIp = \"10.0.0.10\",\n    });\n\n    var secgroup = OpenStack.Networking.GetSecGroup.Invoke(new()\n    {\n        Name = \"secgroup\",\n    });\n\n    var port1 = new OpenStack.Networking.PortSecGroupAssociate(\"port_1\", new()\n    {\n        PortId = systemPort.Apply(getPortResult =\u003e getPortResult.Id),\n        SecurityGroupIds = new[]\n        {\n            secgroup.Apply(getSecGroupResult =\u003e getSecGroupResult.Id),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsystemPort, err := networking.LookupPort(ctx, \u0026networking.LookupPortArgs{\n\t\t\tFixedIp: pulumi.StringRef(\"10.0.0.10\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecgroup, err := networking.LookupSecGroup(ctx, \u0026networking.LookupSecGroupArgs{\n\t\t\tName: pulumi.StringRef(\"secgroup\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networking.NewPortSecGroupAssociate(ctx, \"port_1\", \u0026networking.PortSecGroupAssociateArgs{\n\t\t\tPortId: pulumi.String(systemPort.Id),\n\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\tpulumi.String(secgroup.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.openstack.networking.NetworkingFunctions;\nimport com.pulumi.openstack.networking.inputs.GetPortArgs;\nimport com.pulumi.openstack.networking.inputs.GetSecGroupArgs;\nimport com.pulumi.openstack.networking.PortSecGroupAssociate;\nimport com.pulumi.openstack.networking.PortSecGroupAssociateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 systemPort = NetworkingFunctions.getPort(GetPortArgs.builder()\n            .fixedIp(\"10.0.0.10\")\n            .build());\n\n        final var secgroup = NetworkingFunctions.getSecGroup(GetSecGroupArgs.builder()\n            .name(\"secgroup\")\n            .build());\n\n        var port1 = new PortSecGroupAssociate(\"port1\", PortSecGroupAssociateArgs.builder()\n            .portId(systemPort.id())\n            .securityGroupIds(secgroup.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  port1:\n    type: openstack:networking:PortSecGroupAssociate\n    name: port_1\n    properties:\n      portId: ${systemPort.id}\n      securityGroupIds:\n        - ${secgroup.id}\nvariables:\n  systemPort:\n    fn::invoke:\n      function: openstack:networking:getPort\n      arguments:\n        fixedIp: 10.0.0.10\n  secgroup:\n    fn::invoke:\n      function: openstack:networking:getSecGroup\n      arguments:\n        name: secgroup\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Enforce a security group to an existing port\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst systemPort = openstack.networking.getPort({\n    fixedIp: \"10.0.0.10\",\n});\nconst secgroup = openstack.networking.getSecGroup({\n    name: \"secgroup\",\n});\nconst port1 = new openstack.networking.PortSecGroupAssociate(\"port_1\", {\n    portId: systemPort.then(systemPort =\u003e systemPort.id),\n    enforce: true,\n    securityGroupIds: [secgroup.then(secgroup =\u003e secgroup.id)],\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nsystem_port = openstack.networking.get_port(fixed_ip=\"10.0.0.10\")\nsecgroup = openstack.networking.get_sec_group(name=\"secgroup\")\nport1 = openstack.networking.PortSecGroupAssociate(\"port_1\",\n    port_id=system_port.id,\n    enforce=True,\n    security_group_ids=[secgroup.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var systemPort = OpenStack.Networking.GetPort.Invoke(new()\n    {\n        FixedIp = \"10.0.0.10\",\n    });\n\n    var secgroup = OpenStack.Networking.GetSecGroup.Invoke(new()\n    {\n        Name = \"secgroup\",\n    });\n\n    var port1 = new OpenStack.Networking.PortSecGroupAssociate(\"port_1\", new()\n    {\n        PortId = systemPort.Apply(getPortResult =\u003e getPortResult.Id),\n        Enforce = true,\n        SecurityGroupIds = new[]\n        {\n            secgroup.Apply(getSecGroupResult =\u003e getSecGroupResult.Id),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsystemPort, err := networking.LookupPort(ctx, \u0026networking.LookupPortArgs{\n\t\t\tFixedIp: pulumi.StringRef(\"10.0.0.10\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecgroup, err := networking.LookupSecGroup(ctx, \u0026networking.LookupSecGroupArgs{\n\t\t\tName: pulumi.StringRef(\"secgroup\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networking.NewPortSecGroupAssociate(ctx, \"port_1\", \u0026networking.PortSecGroupAssociateArgs{\n\t\t\tPortId:  pulumi.String(systemPort.Id),\n\t\t\tEnforce: pulumi.Bool(true),\n\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\tpulumi.String(secgroup.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.openstack.networking.NetworkingFunctions;\nimport com.pulumi.openstack.networking.inputs.GetPortArgs;\nimport com.pulumi.openstack.networking.inputs.GetSecGroupArgs;\nimport com.pulumi.openstack.networking.PortSecGroupAssociate;\nimport com.pulumi.openstack.networking.PortSecGroupAssociateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 systemPort = NetworkingFunctions.getPort(GetPortArgs.builder()\n            .fixedIp(\"10.0.0.10\")\n            .build());\n\n        final var secgroup = NetworkingFunctions.getSecGroup(GetSecGroupArgs.builder()\n            .name(\"secgroup\")\n            .build());\n\n        var port1 = new PortSecGroupAssociate(\"port1\", PortSecGroupAssociateArgs.builder()\n            .portId(systemPort.id())\n            .enforce(true)\n            .securityGroupIds(secgroup.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  port1:\n    type: openstack:networking:PortSecGroupAssociate\n    name: port_1\n    properties:\n      portId: ${systemPort.id}\n      enforce: 'true'\n      securityGroupIds:\n        - ${secgroup.id}\nvariables:\n  systemPort:\n    fn::invoke:\n      function: openstack:networking:getPort\n      arguments:\n        fixedIp: 10.0.0.10\n  secgroup:\n    fn::invoke:\n      function: openstack:networking:getSecGroup\n      arguments:\n        name: secgroup\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Remove all security groups from an existing port\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst systemPort = openstack.networking.getPort({\n    fixedIp: \"10.0.0.10\",\n});\nconst port1 = new openstack.networking.PortSecGroupAssociate(\"port_1\", {\n    portId: systemPort.then(systemPort =\u003e systemPort.id),\n    enforce: true,\n    securityGroupIds: [],\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nsystem_port = openstack.networking.get_port(fixed_ip=\"10.0.0.10\")\nport1 = openstack.networking.PortSecGroupAssociate(\"port_1\",\n    port_id=system_port.id,\n    enforce=True,\n    security_group_ids=[])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var systemPort = OpenStack.Networking.GetPort.Invoke(new()\n    {\n        FixedIp = \"10.0.0.10\",\n    });\n\n    var port1 = new OpenStack.Networking.PortSecGroupAssociate(\"port_1\", new()\n    {\n        PortId = systemPort.Apply(getPortResult =\u003e getPortResult.Id),\n        Enforce = true,\n        SecurityGroupIds = new[] {},\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsystemPort, err := networking.LookupPort(ctx, \u0026networking.LookupPortArgs{\n\t\t\tFixedIp: pulumi.StringRef(\"10.0.0.10\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networking.NewPortSecGroupAssociate(ctx, \"port_1\", \u0026networking.PortSecGroupAssociateArgs{\n\t\t\tPortId:           pulumi.String(systemPort.Id),\n\t\t\tEnforce:          pulumi.Bool(true),\n\t\t\tSecurityGroupIds: pulumi.StringArray{},\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.openstack.networking.NetworkingFunctions;\nimport com.pulumi.openstack.networking.inputs.GetPortArgs;\nimport com.pulumi.openstack.networking.PortSecGroupAssociate;\nimport com.pulumi.openstack.networking.PortSecGroupAssociateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 systemPort = NetworkingFunctions.getPort(GetPortArgs.builder()\n            .fixedIp(\"10.0.0.10\")\n            .build());\n\n        var port1 = new PortSecGroupAssociate(\"port1\", PortSecGroupAssociateArgs.builder()\n            .portId(systemPort.id())\n            .enforce(true)\n            .securityGroupIds()\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  port1:\n    type: openstack:networking:PortSecGroupAssociate\n    name: port_1\n    properties:\n      portId: ${systemPort.id}\n      enforce: 'true'\n      securityGroupIds: []\nvariables:\n  systemPort:\n    fn::invoke:\n      function: openstack:networking:getPort\n      arguments:\n        fixedIp: 10.0.0.10\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPort security group association can be imported using the `id` of the port, e.g.\n\n```sh\n$ pulumi import openstack:networking/portSecGroupAssociate:PortSecGroupAssociate port_1 eae26a3e-1c33-4cc1-9c31-0cd729c438a1\n```\n","properties":{"allSecurityGroupIds":{"type":"array","items":{"type":"string"},"description":"The collection of Security Group IDs on the port\nwhich have been explicitly and implicitly added.\n"},"enforce":{"type":"boolean","description":"Whether to replace or append the list of security\ngroups, specified in the \u003cspan pulumi-lang-nodejs=\"`securityGroupIds`\" pulumi-lang-dotnet=\"`SecurityGroupIds`\" pulumi-lang-go=\"`securityGroupIds`\" pulumi-lang-python=\"`security_group_ids`\" pulumi-lang-yaml=\"`securityGroupIds`\" pulumi-lang-java=\"`securityGroupIds`\"\u003e`security_group_ids`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"portId":{"type":"string","description":"An UUID of the port to apply security groups to.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to manage a port. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nresource.\n"},"securityGroupIds":{"type":"array","items":{"type":"string"},"description":"A list of security group IDs to apply to\nthe port. The security groups must be specified by ID and not name (as\nopposed to how they are configured with the Compute Instance).\n"}},"required":["allSecurityGroupIds","portId","region","securityGroupIds"],"inputProperties":{"enforce":{"type":"boolean","description":"Whether to replace or append the list of security\ngroups, specified in the \u003cspan pulumi-lang-nodejs=\"`securityGroupIds`\" pulumi-lang-dotnet=\"`SecurityGroupIds`\" pulumi-lang-go=\"`securityGroupIds`\" pulumi-lang-python=\"`security_group_ids`\" pulumi-lang-yaml=\"`securityGroupIds`\" pulumi-lang-java=\"`securityGroupIds`\"\u003e`security_group_ids`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"portId":{"type":"string","description":"An UUID of the port to apply security groups to.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to manage a port. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nresource.\n","willReplaceOnChanges":true},"securityGroupIds":{"type":"array","items":{"type":"string"},"description":"A list of security group IDs to apply to\nthe port. The security groups must be specified by ID and not name (as\nopposed to how they are configured with the Compute Instance).\n"}},"requiredInputs":["portId","securityGroupIds"],"stateInputs":{"description":"Input properties used for looking up and filtering PortSecGroupAssociate resources.\n","properties":{"allSecurityGroupIds":{"type":"array","items":{"type":"string"},"description":"The collection of Security Group IDs on the port\nwhich have been explicitly and implicitly added.\n"},"enforce":{"type":"boolean","description":"Whether to replace or append the list of security\ngroups, specified in the \u003cspan pulumi-lang-nodejs=\"`securityGroupIds`\" pulumi-lang-dotnet=\"`SecurityGroupIds`\" pulumi-lang-go=\"`securityGroupIds`\" pulumi-lang-python=\"`security_group_ids`\" pulumi-lang-yaml=\"`securityGroupIds`\" pulumi-lang-java=\"`securityGroupIds`\"\u003e`security_group_ids`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"portId":{"type":"string","description":"An UUID of the port to apply security groups to.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to manage a port. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nresource.\n","willReplaceOnChanges":true},"securityGroupIds":{"type":"array","items":{"type":"string"},"description":"A list of security group IDs to apply to\nthe port. The security groups must be specified by ID and not name (as\nopposed to how they are configured with the Compute Instance).\n"}},"type":"object"}},"openstack:networking/qosBandwidthLimitRule:QosBandwidthLimitRule":{"description":"Manages a V2 Neutron QoS bandwidth limit rule resource within OpenStack.\n\n## Example Usage\n\n### Create a QoS Policy with some bandwidth limit rule\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst qosPolicy1 = new openstack.networking.QosPolicy(\"qos_policy_1\", {\n    name: \"qos_policy_1\",\n    description: \"bw_limit\",\n});\nconst bwLimitRule1 = new openstack.networking.QosBandwidthLimitRule(\"bw_limit_rule_1\", {\n    qosPolicyId: qosPolicy1.id,\n    maxKbps: 3000,\n    maxBurstKbps: 300,\n    direction: \"egress\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nqos_policy1 = openstack.networking.QosPolicy(\"qos_policy_1\",\n    name=\"qos_policy_1\",\n    description=\"bw_limit\")\nbw_limit_rule1 = openstack.networking.QosBandwidthLimitRule(\"bw_limit_rule_1\",\n    qos_policy_id=qos_policy1.id,\n    max_kbps=3000,\n    max_burst_kbps=300,\n    direction=\"egress\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var qosPolicy1 = new OpenStack.Networking.QosPolicy(\"qos_policy_1\", new()\n    {\n        Name = \"qos_policy_1\",\n        Description = \"bw_limit\",\n    });\n\n    var bwLimitRule1 = new OpenStack.Networking.QosBandwidthLimitRule(\"bw_limit_rule_1\", new()\n    {\n        QosPolicyId = qosPolicy1.Id,\n        MaxKbps = 3000,\n        MaxBurstKbps = 300,\n        Direction = \"egress\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tqosPolicy1, err := networking.NewQosPolicy(ctx, \"qos_policy_1\", \u0026networking.QosPolicyArgs{\n\t\t\tName:        pulumi.String(\"qos_policy_1\"),\n\t\t\tDescription: pulumi.String(\"bw_limit\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networking.NewQosBandwidthLimitRule(ctx, \"bw_limit_rule_1\", \u0026networking.QosBandwidthLimitRuleArgs{\n\t\t\tQosPolicyId:  qosPolicy1.ID(),\n\t\t\tMaxKbps:      pulumi.Int(3000),\n\t\t\tMaxBurstKbps: pulumi.Int(300),\n\t\t\tDirection:    pulumi.String(\"egress\"),\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.openstack.networking.QosPolicy;\nimport com.pulumi.openstack.networking.QosPolicyArgs;\nimport com.pulumi.openstack.networking.QosBandwidthLimitRule;\nimport com.pulumi.openstack.networking.QosBandwidthLimitRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 qosPolicy1 = new QosPolicy(\"qosPolicy1\", QosPolicyArgs.builder()\n            .name(\"qos_policy_1\")\n            .description(\"bw_limit\")\n            .build());\n\n        var bwLimitRule1 = new QosBandwidthLimitRule(\"bwLimitRule1\", QosBandwidthLimitRuleArgs.builder()\n            .qosPolicyId(qosPolicy1.id())\n            .maxKbps(3000)\n            .maxBurstKbps(300)\n            .direction(\"egress\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  qosPolicy1:\n    type: openstack:networking:QosPolicy\n    name: qos_policy_1\n    properties:\n      name: qos_policy_1\n      description: bw_limit\n  bwLimitRule1:\n    type: openstack:networking:QosBandwidthLimitRule\n    name: bw_limit_rule_1\n    properties:\n      qosPolicyId: ${qosPolicy1.id}\n      maxKbps: 3000\n      maxBurstKbps: 300\n      direction: egress\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nQoS bandwidth limit rules can be imported using the `qos_policy_id/bandwidth_limit_rule` format, e.g.\n\n```sh\n$ pulumi import openstack:networking/qosBandwidthLimitRule:QosBandwidthLimitRule bw_limit_rule_1 d6ae28ce-fcb5-4180-aa62-d260a27e09ae/46dfb556-b92f-48ce-94c5-9a9e2140de94\n```\n","properties":{"direction":{"type":"string","description":"The direction of traffic. Defaults to \"egress\". Changing this updates the direction of the\nexisting QoS bandwidth limit rule.\n"},"maxBurstKbps":{"type":"integer","description":"The maximum burst size in kilobits of a QoS bandwidth limit rule. Changing this updates the\nmaximum burst size in kilobits of the existing QoS bandwidth limit rule.\n"},"maxKbps":{"type":"integer","description":"The maximum kilobits per second of a QoS bandwidth limit rule. Changing this updates the\nmaximum kilobits per second of the existing QoS bandwidth limit rule.\n"},"qosPolicyId":{"type":"string","description":"The QoS policy reference. Changing this creates a new QoS bandwidth limit rule.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron QoS bandwidth limit rule. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new QoS bandwidth limit rule.\n"}},"required":["maxKbps","qosPolicyId","region"],"inputProperties":{"direction":{"type":"string","description":"The direction of traffic. Defaults to \"egress\". Changing this updates the direction of the\nexisting QoS bandwidth limit rule.\n"},"maxBurstKbps":{"type":"integer","description":"The maximum burst size in kilobits of a QoS bandwidth limit rule. Changing this updates the\nmaximum burst size in kilobits of the existing QoS bandwidth limit rule.\n"},"maxKbps":{"type":"integer","description":"The maximum kilobits per second of a QoS bandwidth limit rule. Changing this updates the\nmaximum kilobits per second of the existing QoS bandwidth limit rule.\n"},"qosPolicyId":{"type":"string","description":"The QoS policy reference. Changing this creates a new QoS bandwidth limit rule.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron QoS bandwidth limit rule. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new QoS bandwidth limit rule.\n","willReplaceOnChanges":true}},"requiredInputs":["maxKbps","qosPolicyId"],"stateInputs":{"description":"Input properties used for looking up and filtering QosBandwidthLimitRule resources.\n","properties":{"direction":{"type":"string","description":"The direction of traffic. Defaults to \"egress\". Changing this updates the direction of the\nexisting QoS bandwidth limit rule.\n"},"maxBurstKbps":{"type":"integer","description":"The maximum burst size in kilobits of a QoS bandwidth limit rule. Changing this updates the\nmaximum burst size in kilobits of the existing QoS bandwidth limit rule.\n"},"maxKbps":{"type":"integer","description":"The maximum kilobits per second of a QoS bandwidth limit rule. Changing this updates the\nmaximum kilobits per second of the existing QoS bandwidth limit rule.\n"},"qosPolicyId":{"type":"string","description":"The QoS policy reference. Changing this creates a new QoS bandwidth limit rule.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron QoS bandwidth limit rule. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new QoS bandwidth limit rule.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:networking/qosDscpMarkingRule:QosDscpMarkingRule":{"description":"Manages a V2 Neutron QoS DSCP marking rule resource within OpenStack.\n\n## Example Usage\n\n### Create a QoS Policy with some DSCP marking rule\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst qosPolicy1 = new openstack.networking.QosPolicy(\"qos_policy_1\", {\n    name: \"qos_policy_1\",\n    description: \"dscp_mark\",\n});\nconst dscpMarkingRule1 = new openstack.networking.QosDscpMarkingRule(\"dscp_marking_rule_1\", {\n    qosPolicyId: qosPolicy1.id,\n    dscpMark: 26,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nqos_policy1 = openstack.networking.QosPolicy(\"qos_policy_1\",\n    name=\"qos_policy_1\",\n    description=\"dscp_mark\")\ndscp_marking_rule1 = openstack.networking.QosDscpMarkingRule(\"dscp_marking_rule_1\",\n    qos_policy_id=qos_policy1.id,\n    dscp_mark=26)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var qosPolicy1 = new OpenStack.Networking.QosPolicy(\"qos_policy_1\", new()\n    {\n        Name = \"qos_policy_1\",\n        Description = \"dscp_mark\",\n    });\n\n    var dscpMarkingRule1 = new OpenStack.Networking.QosDscpMarkingRule(\"dscp_marking_rule_1\", new()\n    {\n        QosPolicyId = qosPolicy1.Id,\n        DscpMark = 26,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tqosPolicy1, err := networking.NewQosPolicy(ctx, \"qos_policy_1\", \u0026networking.QosPolicyArgs{\n\t\t\tName:        pulumi.String(\"qos_policy_1\"),\n\t\t\tDescription: pulumi.String(\"dscp_mark\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networking.NewQosDscpMarkingRule(ctx, \"dscp_marking_rule_1\", \u0026networking.QosDscpMarkingRuleArgs{\n\t\t\tQosPolicyId: qosPolicy1.ID(),\n\t\t\tDscpMark:    pulumi.Int(26),\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.openstack.networking.QosPolicy;\nimport com.pulumi.openstack.networking.QosPolicyArgs;\nimport com.pulumi.openstack.networking.QosDscpMarkingRule;\nimport com.pulumi.openstack.networking.QosDscpMarkingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 qosPolicy1 = new QosPolicy(\"qosPolicy1\", QosPolicyArgs.builder()\n            .name(\"qos_policy_1\")\n            .description(\"dscp_mark\")\n            .build());\n\n        var dscpMarkingRule1 = new QosDscpMarkingRule(\"dscpMarkingRule1\", QosDscpMarkingRuleArgs.builder()\n            .qosPolicyId(qosPolicy1.id())\n            .dscpMark(26)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  qosPolicy1:\n    type: openstack:networking:QosPolicy\n    name: qos_policy_1\n    properties:\n      name: qos_policy_1\n      description: dscp_mark\n  dscpMarkingRule1:\n    type: openstack:networking:QosDscpMarkingRule\n    name: dscp_marking_rule_1\n    properties:\n      qosPolicyId: ${qosPolicy1.id}\n      dscpMark: 26\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nQoS DSCP marking rules can be imported using the `qos_policy_id/dscp_marking_rule_id` format, e.g.\n\n```sh\n$ pulumi import openstack:networking/qosDscpMarkingRule:QosDscpMarkingRule dscp_marking_rule_1 d6ae28ce-fcb5-4180-aa62-d260a27e09ae/46dfb556-b92f-48ce-94c5-9a9e2140de94\n```\n","properties":{"dscpMark":{"type":"integer","description":"The value of DSCP mark. Changing this updates the DSCP mark value existing\nQoS DSCP marking rule.\n"},"qosPolicyId":{"type":"string","description":"The QoS policy reference. Changing this creates a new QoS DSCP marking rule.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron QoS DSCP marking rule. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new QoS DSCP marking rule.\n"}},"required":["dscpMark","qosPolicyId","region"],"inputProperties":{"dscpMark":{"type":"integer","description":"The value of DSCP mark. Changing this updates the DSCP mark value existing\nQoS DSCP marking rule.\n"},"qosPolicyId":{"type":"string","description":"The QoS policy reference. Changing this creates a new QoS DSCP marking rule.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron QoS DSCP marking rule. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new QoS DSCP marking rule.\n","willReplaceOnChanges":true}},"requiredInputs":["dscpMark","qosPolicyId"],"stateInputs":{"description":"Input properties used for looking up and filtering QosDscpMarkingRule resources.\n","properties":{"dscpMark":{"type":"integer","description":"The value of DSCP mark. Changing this updates the DSCP mark value existing\nQoS DSCP marking rule.\n"},"qosPolicyId":{"type":"string","description":"The QoS policy reference. Changing this creates a new QoS DSCP marking rule.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron QoS DSCP marking rule. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new QoS DSCP marking rule.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:networking/qosMinimumBandwidthRule:QosMinimumBandwidthRule":{"description":"Manages a V2 Neutron QoS minimum bandwidth rule resource within OpenStack.\n\n## Example Usage\n\n### Create a QoS Policy with some minimum bandwidth rule\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst qosPolicy1 = new openstack.networking.QosPolicy(\"qos_policy_1\", {\n    name: \"qos_policy_1\",\n    description: \"min_kbps\",\n});\nconst minimumBandwidthRule1 = new openstack.networking.QosMinimumBandwidthRule(\"minimum_bandwidth_rule_1\", {\n    qosPolicyId: qosPolicy1.id,\n    minKbps: 200,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nqos_policy1 = openstack.networking.QosPolicy(\"qos_policy_1\",\n    name=\"qos_policy_1\",\n    description=\"min_kbps\")\nminimum_bandwidth_rule1 = openstack.networking.QosMinimumBandwidthRule(\"minimum_bandwidth_rule_1\",\n    qos_policy_id=qos_policy1.id,\n    min_kbps=200)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var qosPolicy1 = new OpenStack.Networking.QosPolicy(\"qos_policy_1\", new()\n    {\n        Name = \"qos_policy_1\",\n        Description = \"min_kbps\",\n    });\n\n    var minimumBandwidthRule1 = new OpenStack.Networking.QosMinimumBandwidthRule(\"minimum_bandwidth_rule_1\", new()\n    {\n        QosPolicyId = qosPolicy1.Id,\n        MinKbps = 200,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tqosPolicy1, err := networking.NewQosPolicy(ctx, \"qos_policy_1\", \u0026networking.QosPolicyArgs{\n\t\t\tName:        pulumi.String(\"qos_policy_1\"),\n\t\t\tDescription: pulumi.String(\"min_kbps\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networking.NewQosMinimumBandwidthRule(ctx, \"minimum_bandwidth_rule_1\", \u0026networking.QosMinimumBandwidthRuleArgs{\n\t\t\tQosPolicyId: qosPolicy1.ID(),\n\t\t\tMinKbps:     pulumi.Int(200),\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.openstack.networking.QosPolicy;\nimport com.pulumi.openstack.networking.QosPolicyArgs;\nimport com.pulumi.openstack.networking.QosMinimumBandwidthRule;\nimport com.pulumi.openstack.networking.QosMinimumBandwidthRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 qosPolicy1 = new QosPolicy(\"qosPolicy1\", QosPolicyArgs.builder()\n            .name(\"qos_policy_1\")\n            .description(\"min_kbps\")\n            .build());\n\n        var minimumBandwidthRule1 = new QosMinimumBandwidthRule(\"minimumBandwidthRule1\", QosMinimumBandwidthRuleArgs.builder()\n            .qosPolicyId(qosPolicy1.id())\n            .minKbps(200)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  qosPolicy1:\n    type: openstack:networking:QosPolicy\n    name: qos_policy_1\n    properties:\n      name: qos_policy_1\n      description: min_kbps\n  minimumBandwidthRule1:\n    type: openstack:networking:QosMinimumBandwidthRule\n    name: minimum_bandwidth_rule_1\n    properties:\n      qosPolicyId: ${qosPolicy1.id}\n      minKbps: 200\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nQoS minimum bandwidth rules can be imported using the `qos_policy_id/minimum_bandwidth_rule_id` format, e.g.\n\n```sh\n$ pulumi import openstack:networking/qosMinimumBandwidthRule:QosMinimumBandwidthRule minimum_bandwidth_rule_1 d6ae28ce-fcb5-4180-aa62-d260a27e09ae/46dfb556-b92f-48ce-94c5-9a9e2140de94\n```\n","properties":{"direction":{"type":"string","description":"The direction of traffic. Defaults to \"egress\". Changing this updates the direction of the\nexisting QoS minimum bandwidth rule.\n"},"minKbps":{"type":"integer","description":"The minimum kilobits per second. Changing this updates the min kbps value of the existing\nQoS minimum bandwidth rule.\n"},"qosPolicyId":{"type":"string","description":"The QoS policy reference. Changing this creates a new QoS minimum bandwidth rule.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron QoS minimum bandwidth rule. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new QoS minimum bandwidth rule.\n"}},"required":["minKbps","qosPolicyId","region"],"inputProperties":{"direction":{"type":"string","description":"The direction of traffic. Defaults to \"egress\". Changing this updates the direction of the\nexisting QoS minimum bandwidth rule.\n"},"minKbps":{"type":"integer","description":"The minimum kilobits per second. Changing this updates the min kbps value of the existing\nQoS minimum bandwidth rule.\n"},"qosPolicyId":{"type":"string","description":"The QoS policy reference. Changing this creates a new QoS minimum bandwidth rule.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron QoS minimum bandwidth rule. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new QoS minimum bandwidth rule.\n","willReplaceOnChanges":true}},"requiredInputs":["minKbps","qosPolicyId"],"stateInputs":{"description":"Input properties used for looking up and filtering QosMinimumBandwidthRule resources.\n","properties":{"direction":{"type":"string","description":"The direction of traffic. Defaults to \"egress\". Changing this updates the direction of the\nexisting QoS minimum bandwidth rule.\n"},"minKbps":{"type":"integer","description":"The minimum kilobits per second. Changing this updates the min kbps value of the existing\nQoS minimum bandwidth rule.\n"},"qosPolicyId":{"type":"string","description":"The QoS policy reference. Changing this creates a new QoS minimum bandwidth rule.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron QoS minimum bandwidth rule. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new QoS minimum bandwidth rule.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:networking/qosPolicy:QosPolicy":{"description":"Manages a V2 Neutron QoS policy resource within OpenStack.\n\n## Example Usage\n\n### Create a QoS Policy\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst qosPolicy1 = new openstack.networking.QosPolicy(\"qos_policy_1\", {\n    name: \"qos_policy_1\",\n    description: \"bw_limit\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nqos_policy1 = openstack.networking.QosPolicy(\"qos_policy_1\",\n    name=\"qos_policy_1\",\n    description=\"bw_limit\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var qosPolicy1 = new OpenStack.Networking.QosPolicy(\"qos_policy_1\", new()\n    {\n        Name = \"qos_policy_1\",\n        Description = \"bw_limit\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networking.NewQosPolicy(ctx, \"qos_policy_1\", \u0026networking.QosPolicyArgs{\n\t\t\tName:        pulumi.String(\"qos_policy_1\"),\n\t\t\tDescription: pulumi.String(\"bw_limit\"),\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.openstack.networking.QosPolicy;\nimport com.pulumi.openstack.networking.QosPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 qosPolicy1 = new QosPolicy(\"qosPolicy1\", QosPolicyArgs.builder()\n            .name(\"qos_policy_1\")\n            .description(\"bw_limit\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  qosPolicy1:\n    type: openstack:networking:QosPolicy\n    name: qos_policy_1\n    properties:\n      name: qos_policy_1\n      description: bw_limit\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nQoS Policies can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:networking/qosPolicy:QosPolicy qos_policy_1 d6ae28ce-fcb5-4180-aa62-d260a27e09ae\n```\n","properties":{"allTags":{"type":"array","items":{"type":"string"},"description":"The collection of tags assigned on the QoS policy, which have been\nexplicitly and implicitly added.\n"},"createdAt":{"type":"string","description":"The time at which QoS policy was created.\n"},"description":{"type":"string","description":"The human-readable description for the QoS policy.\nChanging this updates the description of the existing QoS policy.\n"},"isDefault":{"type":"boolean","description":"Indicates whether the QoS policy is default\nQoS policy or not. Changing this updates the default status of the existing\nQoS policy.\n"},"name":{"type":"string","description":"The name of the QoS policy. Changing this updates the name of\nthe existing QoS policy.\n"},"projectId":{"type":"string","description":"The owner of the QoS policy. Required if admin wants to\ncreate a QoS policy for another project. Changing this creates a new QoS policy.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron Qos policy. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nQoS policy.\n"},"revisionNumber":{"type":"integer","description":"The revision number of the QoS policy.\n"},"shared":{"type":"boolean","description":"Indicates whether this QoS policy is shared across\nall projects. Changing this updates the shared status of the existing\nQoS policy.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A set of string tags for the QoS policy.\n"},"updatedAt":{"type":"string","description":"The time at which QoS policy was created.\n"},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n"}},"required":["allTags","createdAt","name","projectId","region","revisionNumber","updatedAt"],"inputProperties":{"description":{"type":"string","description":"The human-readable description for the QoS policy.\nChanging this updates the description of the existing QoS policy.\n"},"isDefault":{"type":"boolean","description":"Indicates whether the QoS policy is default\nQoS policy or not. Changing this updates the default status of the existing\nQoS policy.\n"},"name":{"type":"string","description":"The name of the QoS policy. Changing this updates the name of\nthe existing QoS policy.\n"},"projectId":{"type":"string","description":"The owner of the QoS policy. Required if admin wants to\ncreate a QoS policy for another project. Changing this creates a new QoS policy.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron Qos policy. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nQoS policy.\n","willReplaceOnChanges":true},"shared":{"type":"boolean","description":"Indicates whether this QoS policy is shared across\nall projects. Changing this updates the shared status of the existing\nQoS policy.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A set of string tags for the QoS policy.\n"},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering QosPolicy resources.\n","properties":{"allTags":{"type":"array","items":{"type":"string"},"description":"The collection of tags assigned on the QoS policy, which have been\nexplicitly and implicitly added.\n"},"createdAt":{"type":"string","description":"The time at which QoS policy was created.\n"},"description":{"type":"string","description":"The human-readable description for the QoS policy.\nChanging this updates the description of the existing QoS policy.\n"},"isDefault":{"type":"boolean","description":"Indicates whether the QoS policy is default\nQoS policy or not. Changing this updates the default status of the existing\nQoS policy.\n"},"name":{"type":"string","description":"The name of the QoS policy. Changing this updates the name of\nthe existing QoS policy.\n"},"projectId":{"type":"string","description":"The owner of the QoS policy. Required if admin wants to\ncreate a QoS policy for another project. Changing this creates a new QoS policy.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron Qos policy. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nQoS policy.\n","willReplaceOnChanges":true},"revisionNumber":{"type":"integer","description":"The revision number of the QoS policy.\n"},"shared":{"type":"boolean","description":"Indicates whether this QoS policy is shared across\nall projects. Changing this updates the shared status of the existing\nQoS policy.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A set of string tags for the QoS policy.\n"},"updatedAt":{"type":"string","description":"The time at which QoS policy was created.\n"},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:networking/quotaV2:QuotaV2":{"description":"Manages a V2 networking quota resource within OpenStack.\n\n\u003e **Note:** This usually requires admin privileges.\n\n\u003e **Note:** This resource has a no-op deletion so no actual actions will be done against the OpenStack API\n    in case of delete call.\n\n## Import\n\nQuotas can be imported using the `project_id/region_name`, e.g.\n\n```sh\n$ pulumi import openstack:networking/quotaV2:QuotaV2 quota_1 2a0f2240-c5e6-41de-896d-e80d97428d6b/region_1\n```\n","properties":{"floatingip":{"type":"integer","description":"Quota value for floating IPs. Changing this updates the\nexisting quota.\n"},"network":{"type":"integer","description":"Quota value for networks. Changing this updates the\nexisting quota.\n"},"port":{"type":"integer","description":"Quota value for ports. Changing this updates the\nexisting quota.\n"},"projectId":{"type":"string","description":"ID of the project to manage quota. Changing this\ncreates new quota.\n"},"rbacPolicy":{"type":"integer","description":"Quota value for RBAC policies.\nChanging this updates the existing quota.\n"},"region":{"type":"string","description":"The region in which to create the quota. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates new quota.\n"},"router":{"type":"integer","description":"Quota value for routers. Changing this updates the\nexisting quota.\n"},"securityGroup":{"type":"integer","description":"Quota value for security groups. Changing\nthis updates the existing quota.\n"},"securityGroupRule":{"type":"integer","description":"Quota value for security group rules.\nChanging this updates the existing quota.\n"},"subnet":{"type":"integer","description":"Quota value for subnets. Changing\nthis updates the existing quota.\n"},"subnetpool":{"type":"integer","description":"Quota value for subnetpools.\nChanging this updates the existing quota.\n"}},"required":["floatingip","network","port","projectId","rbacPolicy","region","router","securityGroup","securityGroupRule","subnet","subnetpool"],"inputProperties":{"floatingip":{"type":"integer","description":"Quota value for floating IPs. Changing this updates the\nexisting quota.\n"},"network":{"type":"integer","description":"Quota value for networks. Changing this updates the\nexisting quota.\n"},"port":{"type":"integer","description":"Quota value for ports. Changing this updates the\nexisting quota.\n"},"projectId":{"type":"string","description":"ID of the project to manage quota. Changing this\ncreates new quota.\n","willReplaceOnChanges":true},"rbacPolicy":{"type":"integer","description":"Quota value for RBAC policies.\nChanging this updates the existing quota.\n"},"region":{"type":"string","description":"The region in which to create the quota. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates new quota.\n","willReplaceOnChanges":true},"router":{"type":"integer","description":"Quota value for routers. Changing this updates the\nexisting quota.\n"},"securityGroup":{"type":"integer","description":"Quota value for security groups. Changing\nthis updates the existing quota.\n"},"securityGroupRule":{"type":"integer","description":"Quota value for security group rules.\nChanging this updates the existing quota.\n"},"subnet":{"type":"integer","description":"Quota value for subnets. Changing\nthis updates the existing quota.\n"},"subnetpool":{"type":"integer","description":"Quota value for subnetpools.\nChanging this updates the existing quota.\n"}},"requiredInputs":["projectId"],"stateInputs":{"description":"Input properties used for looking up and filtering QuotaV2 resources.\n","properties":{"floatingip":{"type":"integer","description":"Quota value for floating IPs. Changing this updates the\nexisting quota.\n"},"network":{"type":"integer","description":"Quota value for networks. Changing this updates the\nexisting quota.\n"},"port":{"type":"integer","description":"Quota value for ports. Changing this updates the\nexisting quota.\n"},"projectId":{"type":"string","description":"ID of the project to manage quota. Changing this\ncreates new quota.\n","willReplaceOnChanges":true},"rbacPolicy":{"type":"integer","description":"Quota value for RBAC policies.\nChanging this updates the existing quota.\n"},"region":{"type":"string","description":"The region in which to create the quota. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates new quota.\n","willReplaceOnChanges":true},"router":{"type":"integer","description":"Quota value for routers. Changing this updates the\nexisting quota.\n"},"securityGroup":{"type":"integer","description":"Quota value for security groups. Changing\nthis updates the existing quota.\n"},"securityGroupRule":{"type":"integer","description":"Quota value for security group rules.\nChanging this updates the existing quota.\n"},"subnet":{"type":"integer","description":"Quota value for subnets. Changing\nthis updates the existing quota.\n"},"subnetpool":{"type":"integer","description":"Quota value for subnetpools.\nChanging this updates the existing quota.\n"}},"type":"object"}},"openstack:networking/rbacPolicyV2:RbacPolicyV2":{"description":"The RBAC policy resource contains functionality for working with Neutron RBAC\nPolicies. Role-Based Access Control (RBAC) policy framework enables both\noperators and users to grant access to resources for specific projects.\n\nSharing an object with a specific project is accomplished by creating a\npolicy entry that permits the target project the \u003cspan pulumi-lang-nodejs=\"`accessAsShared`\" pulumi-lang-dotnet=\"`AccessAsShared`\" pulumi-lang-go=\"`accessAsShared`\" pulumi-lang-python=\"`access_as_shared`\" pulumi-lang-yaml=\"`accessAsShared`\" pulumi-lang-java=\"`accessAsShared`\"\u003e`access_as_shared`\u003c/span\u003e action\non that object.\n\nTo make a network available as an external network for specific projects\nrather than all projects, use the \u003cspan pulumi-lang-nodejs=\"`accessAsExternal`\" pulumi-lang-dotnet=\"`AccessAsExternal`\" pulumi-lang-go=\"`accessAsExternal`\" pulumi-lang-python=\"`access_as_external`\" pulumi-lang-yaml=\"`accessAsExternal`\" pulumi-lang-java=\"`accessAsExternal`\"\u003e`access_as_external`\u003c/span\u003e action.\nIf a network is marked as external during creation, it now implicitly creates\na wildcard RBAC policy granting everyone access to preserve previous behavior\nbefore this feature was added.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst network1 = new openstack.networking.Network(\"network_1\", {\n    name: \"network_1\",\n    adminStateUp: true,\n});\nconst rbacPolicy1 = new openstack.networking.RbacPolicyV2(\"rbac_policy_1\", {\n    action: \"access_as_shared\",\n    objectId: network1.id,\n    objectType: \"network\",\n    targetTenant: \"20415a973c9e45d3917f078950644697\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nnetwork1 = openstack.networking.Network(\"network_1\",\n    name=\"network_1\",\n    admin_state_up=True)\nrbac_policy1 = openstack.networking.RbacPolicyV2(\"rbac_policy_1\",\n    action=\"access_as_shared\",\n    object_id=network1.id,\n    object_type=\"network\",\n    target_tenant=\"20415a973c9e45d3917f078950644697\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var network1 = new OpenStack.Networking.Network(\"network_1\", new()\n    {\n        Name = \"network_1\",\n        AdminStateUp = true,\n    });\n\n    var rbacPolicy1 = new OpenStack.Networking.RbacPolicyV2(\"rbac_policy_1\", new()\n    {\n        Action = \"access_as_shared\",\n        ObjectId = network1.Id,\n        ObjectType = \"network\",\n        TargetTenant = \"20415a973c9e45d3917f078950644697\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork1, err := networking.NewNetwork(ctx, \"network_1\", \u0026networking.NetworkArgs{\n\t\t\tName:         pulumi.String(\"network_1\"),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networking.NewRbacPolicyV2(ctx, \"rbac_policy_1\", \u0026networking.RbacPolicyV2Args{\n\t\t\tAction:       pulumi.String(\"access_as_shared\"),\n\t\t\tObjectId:     network1.ID(),\n\t\t\tObjectType:   pulumi.String(\"network\"),\n\t\t\tTargetTenant: pulumi.String(\"20415a973c9e45d3917f078950644697\"),\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.openstack.networking.Network;\nimport com.pulumi.openstack.networking.NetworkArgs;\nimport com.pulumi.openstack.networking.RbacPolicyV2;\nimport com.pulumi.openstack.networking.RbacPolicyV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 network1 = new Network(\"network1\", NetworkArgs.builder()\n            .name(\"network_1\")\n            .adminStateUp(true)\n            .build());\n\n        var rbacPolicy1 = new RbacPolicyV2(\"rbacPolicy1\", RbacPolicyV2Args.builder()\n            .action(\"access_as_shared\")\n            .objectId(network1.id())\n            .objectType(\"network\")\n            .targetTenant(\"20415a973c9e45d3917f078950644697\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  network1:\n    type: openstack:networking:Network\n    name: network_1\n    properties:\n      name: network_1\n      adminStateUp: 'true'\n  rbacPolicy1:\n    type: openstack:networking:RbacPolicyV2\n    name: rbac_policy_1\n    properties:\n      action: access_as_shared\n      objectId: ${network1.id}\n      objectType: network\n      targetTenant: 20415a973c9e45d3917f078950644697\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRBAC policies can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:networking/rbacPolicyV2:RbacPolicyV2 rbac_policy_1 eae26a3e-1c33-4cc1-9c31-0cd729c438a1\n```\n","properties":{"action":{"type":"string","description":"Action for the RBAC policy. Can either be\n\u003cspan pulumi-lang-nodejs=\"`accessAsExternal`\" pulumi-lang-dotnet=\"`AccessAsExternal`\" pulumi-lang-go=\"`accessAsExternal`\" pulumi-lang-python=\"`access_as_external`\" pulumi-lang-yaml=\"`accessAsExternal`\" pulumi-lang-java=\"`accessAsExternal`\"\u003e`access_as_external`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`accessAsShared`\" pulumi-lang-dotnet=\"`AccessAsShared`\" pulumi-lang-go=\"`accessAsShared`\" pulumi-lang-python=\"`access_as_shared`\" pulumi-lang-yaml=\"`accessAsShared`\" pulumi-lang-java=\"`accessAsShared`\"\u003e`access_as_shared`\u003c/span\u003e.\n"},"objectId":{"type":"string","description":"The ID of the \u003cspan pulumi-lang-nodejs=\"`objectType`\" pulumi-lang-dotnet=\"`ObjectType`\" pulumi-lang-go=\"`objectType`\" pulumi-lang-python=\"`object_type`\" pulumi-lang-yaml=\"`objectType`\" pulumi-lang-java=\"`objectType`\"\u003e`object_type`\u003c/span\u003e resource. An\n\u003cspan pulumi-lang-nodejs=\"`objectType`\" pulumi-lang-dotnet=\"`ObjectType`\" pulumi-lang-go=\"`objectType`\" pulumi-lang-python=\"`object_type`\" pulumi-lang-yaml=\"`objectType`\" pulumi-lang-java=\"`objectType`\"\u003e`object_type`\u003c/span\u003e of \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e returns a network ID and an \u003cspan pulumi-lang-nodejs=\"`objectType`\" pulumi-lang-dotnet=\"`ObjectType`\" pulumi-lang-go=\"`objectType`\" pulumi-lang-python=\"`object_type`\" pulumi-lang-yaml=\"`objectType`\" pulumi-lang-java=\"`objectType`\"\u003e`object_type`\u003c/span\u003e of\n\u003cspan pulumi-lang-nodejs=\"`qosPolicy`\" pulumi-lang-dotnet=\"`QosPolicy`\" pulumi-lang-go=\"`qosPolicy`\" pulumi-lang-python=\"`qos_policy`\" pulumi-lang-yaml=\"`qosPolicy`\" pulumi-lang-java=\"`qosPolicy`\"\u003e`qos_policy`\u003c/span\u003e returns a QoS ID.\n"},"objectType":{"type":"string","description":"The type of the object that the RBAC policy\naffects. Can be one of the following: \u003cspan pulumi-lang-nodejs=\"`addressScope`\" pulumi-lang-dotnet=\"`AddressScope`\" pulumi-lang-go=\"`addressScope`\" pulumi-lang-python=\"`address_scope`\" pulumi-lang-yaml=\"`addressScope`\" pulumi-lang-java=\"`addressScope`\"\u003e`address_scope`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`addressGroup`\" pulumi-lang-dotnet=\"`AddressGroup`\" pulumi-lang-go=\"`addressGroup`\" pulumi-lang-python=\"`address_group`\" pulumi-lang-yaml=\"`addressGroup`\" pulumi-lang-java=\"`addressGroup`\"\u003e`address_group`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`qosPolicy`\" pulumi-lang-dotnet=\"`QosPolicy`\" pulumi-lang-go=\"`qosPolicy`\" pulumi-lang-python=\"`qos_policy`\" pulumi-lang-yaml=\"`qosPolicy`\" pulumi-lang-java=\"`qosPolicy`\"\u003e`qos_policy`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`securityGroup`\" pulumi-lang-dotnet=\"`SecurityGroup`\" pulumi-lang-go=\"`securityGroup`\" pulumi-lang-python=\"`security_group`\" pulumi-lang-yaml=\"`securityGroup`\" pulumi-lang-java=\"`securityGroup`\"\u003e`security_group`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`subnetpool`\" pulumi-lang-dotnet=\"`Subnetpool`\" pulumi-lang-go=\"`subnetpool`\" pulumi-lang-python=\"`subnetpool`\" pulumi-lang-yaml=\"`subnetpool`\" pulumi-lang-java=\"`subnetpool`\"\u003e`subnetpool`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`bgpvpn`\" pulumi-lang-dotnet=\"`Bgpvpn`\" pulumi-lang-go=\"`bgpvpn`\" pulumi-lang-python=\"`bgpvpn`\" pulumi-lang-yaml=\"`bgpvpn`\" pulumi-lang-java=\"`bgpvpn`\"\u003e`bgpvpn`\u003c/span\u003e.\n"},"projectId":{"type":"string"},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to configure a routing entry on a subnet. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nrouting entry.\n"},"targetTenant":{"type":"string","description":"The ID of the tenant to which the RBAC policy\nwill be enforced.\n"}},"required":["action","objectId","objectType","projectId","region","targetTenant"],"inputProperties":{"action":{"type":"string","description":"Action for the RBAC policy. Can either be\n\u003cspan pulumi-lang-nodejs=\"`accessAsExternal`\" pulumi-lang-dotnet=\"`AccessAsExternal`\" pulumi-lang-go=\"`accessAsExternal`\" pulumi-lang-python=\"`access_as_external`\" pulumi-lang-yaml=\"`accessAsExternal`\" pulumi-lang-java=\"`accessAsExternal`\"\u003e`access_as_external`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`accessAsShared`\" pulumi-lang-dotnet=\"`AccessAsShared`\" pulumi-lang-go=\"`accessAsShared`\" pulumi-lang-python=\"`access_as_shared`\" pulumi-lang-yaml=\"`accessAsShared`\" pulumi-lang-java=\"`accessAsShared`\"\u003e`access_as_shared`\u003c/span\u003e.\n","willReplaceOnChanges":true},"objectId":{"type":"string","description":"The ID of the \u003cspan pulumi-lang-nodejs=\"`objectType`\" pulumi-lang-dotnet=\"`ObjectType`\" pulumi-lang-go=\"`objectType`\" pulumi-lang-python=\"`object_type`\" pulumi-lang-yaml=\"`objectType`\" pulumi-lang-java=\"`objectType`\"\u003e`object_type`\u003c/span\u003e resource. An\n\u003cspan pulumi-lang-nodejs=\"`objectType`\" pulumi-lang-dotnet=\"`ObjectType`\" pulumi-lang-go=\"`objectType`\" pulumi-lang-python=\"`object_type`\" pulumi-lang-yaml=\"`objectType`\" pulumi-lang-java=\"`objectType`\"\u003e`object_type`\u003c/span\u003e of \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e returns a network ID and an \u003cspan pulumi-lang-nodejs=\"`objectType`\" pulumi-lang-dotnet=\"`ObjectType`\" pulumi-lang-go=\"`objectType`\" pulumi-lang-python=\"`object_type`\" pulumi-lang-yaml=\"`objectType`\" pulumi-lang-java=\"`objectType`\"\u003e`object_type`\u003c/span\u003e of\n\u003cspan pulumi-lang-nodejs=\"`qosPolicy`\" pulumi-lang-dotnet=\"`QosPolicy`\" pulumi-lang-go=\"`qosPolicy`\" pulumi-lang-python=\"`qos_policy`\" pulumi-lang-yaml=\"`qosPolicy`\" pulumi-lang-java=\"`qosPolicy`\"\u003e`qos_policy`\u003c/span\u003e returns a QoS ID.\n","willReplaceOnChanges":true},"objectType":{"type":"string","description":"The type of the object that the RBAC policy\naffects. Can be one of the following: \u003cspan pulumi-lang-nodejs=\"`addressScope`\" pulumi-lang-dotnet=\"`AddressScope`\" pulumi-lang-go=\"`addressScope`\" pulumi-lang-python=\"`address_scope`\" pulumi-lang-yaml=\"`addressScope`\" pulumi-lang-java=\"`addressScope`\"\u003e`address_scope`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`addressGroup`\" pulumi-lang-dotnet=\"`AddressGroup`\" pulumi-lang-go=\"`addressGroup`\" pulumi-lang-python=\"`address_group`\" pulumi-lang-yaml=\"`addressGroup`\" pulumi-lang-java=\"`addressGroup`\"\u003e`address_group`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`qosPolicy`\" pulumi-lang-dotnet=\"`QosPolicy`\" pulumi-lang-go=\"`qosPolicy`\" pulumi-lang-python=\"`qos_policy`\" pulumi-lang-yaml=\"`qosPolicy`\" pulumi-lang-java=\"`qosPolicy`\"\u003e`qos_policy`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`securityGroup`\" pulumi-lang-dotnet=\"`SecurityGroup`\" pulumi-lang-go=\"`securityGroup`\" pulumi-lang-python=\"`security_group`\" pulumi-lang-yaml=\"`securityGroup`\" pulumi-lang-java=\"`securityGroup`\"\u003e`security_group`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`subnetpool`\" pulumi-lang-dotnet=\"`Subnetpool`\" pulumi-lang-go=\"`subnetpool`\" pulumi-lang-python=\"`subnetpool`\" pulumi-lang-yaml=\"`subnetpool`\" pulumi-lang-java=\"`subnetpool`\"\u003e`subnetpool`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`bgpvpn`\" pulumi-lang-dotnet=\"`Bgpvpn`\" pulumi-lang-go=\"`bgpvpn`\" pulumi-lang-python=\"`bgpvpn`\" pulumi-lang-yaml=\"`bgpvpn`\" pulumi-lang-java=\"`bgpvpn`\"\u003e`bgpvpn`\u003c/span\u003e.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to configure a routing entry on a subnet. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nrouting entry.\n","willReplaceOnChanges":true},"targetTenant":{"type":"string","description":"The ID of the tenant to which the RBAC policy\nwill be enforced.\n"}},"requiredInputs":["action","objectId","objectType","targetTenant"],"stateInputs":{"description":"Input properties used for looking up and filtering RbacPolicyV2 resources.\n","properties":{"action":{"type":"string","description":"Action for the RBAC policy. Can either be\n\u003cspan pulumi-lang-nodejs=\"`accessAsExternal`\" pulumi-lang-dotnet=\"`AccessAsExternal`\" pulumi-lang-go=\"`accessAsExternal`\" pulumi-lang-python=\"`access_as_external`\" pulumi-lang-yaml=\"`accessAsExternal`\" pulumi-lang-java=\"`accessAsExternal`\"\u003e`access_as_external`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`accessAsShared`\" pulumi-lang-dotnet=\"`AccessAsShared`\" pulumi-lang-go=\"`accessAsShared`\" pulumi-lang-python=\"`access_as_shared`\" pulumi-lang-yaml=\"`accessAsShared`\" pulumi-lang-java=\"`accessAsShared`\"\u003e`access_as_shared`\u003c/span\u003e.\n","willReplaceOnChanges":true},"objectId":{"type":"string","description":"The ID of the \u003cspan pulumi-lang-nodejs=\"`objectType`\" pulumi-lang-dotnet=\"`ObjectType`\" pulumi-lang-go=\"`objectType`\" pulumi-lang-python=\"`object_type`\" pulumi-lang-yaml=\"`objectType`\" pulumi-lang-java=\"`objectType`\"\u003e`object_type`\u003c/span\u003e resource. An\n\u003cspan pulumi-lang-nodejs=\"`objectType`\" pulumi-lang-dotnet=\"`ObjectType`\" pulumi-lang-go=\"`objectType`\" pulumi-lang-python=\"`object_type`\" pulumi-lang-yaml=\"`objectType`\" pulumi-lang-java=\"`objectType`\"\u003e`object_type`\u003c/span\u003e of \u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e returns a network ID and an \u003cspan pulumi-lang-nodejs=\"`objectType`\" pulumi-lang-dotnet=\"`ObjectType`\" pulumi-lang-go=\"`objectType`\" pulumi-lang-python=\"`object_type`\" pulumi-lang-yaml=\"`objectType`\" pulumi-lang-java=\"`objectType`\"\u003e`object_type`\u003c/span\u003e of\n\u003cspan pulumi-lang-nodejs=\"`qosPolicy`\" pulumi-lang-dotnet=\"`QosPolicy`\" pulumi-lang-go=\"`qosPolicy`\" pulumi-lang-python=\"`qos_policy`\" pulumi-lang-yaml=\"`qosPolicy`\" pulumi-lang-java=\"`qosPolicy`\"\u003e`qos_policy`\u003c/span\u003e returns a QoS ID.\n","willReplaceOnChanges":true},"objectType":{"type":"string","description":"The type of the object that the RBAC policy\naffects. Can be one of the following: \u003cspan pulumi-lang-nodejs=\"`addressScope`\" pulumi-lang-dotnet=\"`AddressScope`\" pulumi-lang-go=\"`addressScope`\" pulumi-lang-python=\"`address_scope`\" pulumi-lang-yaml=\"`addressScope`\" pulumi-lang-java=\"`addressScope`\"\u003e`address_scope`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`addressGroup`\" pulumi-lang-dotnet=\"`AddressGroup`\" pulumi-lang-go=\"`addressGroup`\" pulumi-lang-python=\"`address_group`\" pulumi-lang-yaml=\"`addressGroup`\" pulumi-lang-java=\"`addressGroup`\"\u003e`address_group`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`network`\" pulumi-lang-dotnet=\"`Network`\" pulumi-lang-go=\"`network`\" pulumi-lang-python=\"`network`\" pulumi-lang-yaml=\"`network`\" pulumi-lang-java=\"`network`\"\u003e`network`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`qosPolicy`\" pulumi-lang-dotnet=\"`QosPolicy`\" pulumi-lang-go=\"`qosPolicy`\" pulumi-lang-python=\"`qos_policy`\" pulumi-lang-yaml=\"`qosPolicy`\" pulumi-lang-java=\"`qosPolicy`\"\u003e`qos_policy`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`securityGroup`\" pulumi-lang-dotnet=\"`SecurityGroup`\" pulumi-lang-go=\"`securityGroup`\" pulumi-lang-python=\"`security_group`\" pulumi-lang-yaml=\"`securityGroup`\" pulumi-lang-java=\"`securityGroup`\"\u003e`security_group`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`subnetpool`\" pulumi-lang-dotnet=\"`Subnetpool`\" pulumi-lang-go=\"`subnetpool`\" pulumi-lang-python=\"`subnetpool`\" pulumi-lang-yaml=\"`subnetpool`\" pulumi-lang-java=\"`subnetpool`\"\u003e`subnetpool`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`bgpvpn`\" pulumi-lang-dotnet=\"`Bgpvpn`\" pulumi-lang-go=\"`bgpvpn`\" pulumi-lang-python=\"`bgpvpn`\" pulumi-lang-yaml=\"`bgpvpn`\" pulumi-lang-java=\"`bgpvpn`\"\u003e`bgpvpn`\u003c/span\u003e.\n","willReplaceOnChanges":true},"projectId":{"type":"string"},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to configure a routing entry on a subnet. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nrouting entry.\n","willReplaceOnChanges":true},"targetTenant":{"type":"string","description":"The ID of the tenant to which the RBAC policy\nwill be enforced.\n"}},"type":"object"}},"openstack:networking/router:Router":{"description":"Manages a V2 router resource within OpenStack.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst router1 = new openstack.networking.Router(\"router_1\", {\n    name: \"my_router\",\n    adminStateUp: true,\n    externalNetworkId: \"f67f0d72-0ddf-11e4-9d95-e1f29f417e2f\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nrouter1 = openstack.networking.Router(\"router_1\",\n    name=\"my_router\",\n    admin_state_up=True,\n    external_network_id=\"f67f0d72-0ddf-11e4-9d95-e1f29f417e2f\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var router1 = new OpenStack.Networking.Router(\"router_1\", new()\n    {\n        Name = \"my_router\",\n        AdminStateUp = true,\n        ExternalNetworkId = \"f67f0d72-0ddf-11e4-9d95-e1f29f417e2f\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networking.NewRouter(ctx, \"router_1\", \u0026networking.RouterArgs{\n\t\t\tName:              pulumi.String(\"my_router\"),\n\t\t\tAdminStateUp:      pulumi.Bool(true),\n\t\t\tExternalNetworkId: pulumi.String(\"f67f0d72-0ddf-11e4-9d95-e1f29f417e2f\"),\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.openstack.networking.Router;\nimport com.pulumi.openstack.networking.RouterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 router1 = new Router(\"router1\", RouterArgs.builder()\n            .name(\"my_router\")\n            .adminStateUp(true)\n            .externalNetworkId(\"f67f0d72-0ddf-11e4-9d95-e1f29f417e2f\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  router1:\n    type: openstack:networking:Router\n    name: router_1\n    properties:\n      name: my_router\n      adminStateUp: true\n      externalNetworkId: f67f0d72-0ddf-11e4-9d95-e1f29f417e2f\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRouters can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:networking/router:Router router_1 014395cd-89fc-4c9b-96b7-13d1ee79dad2\n```\n","properties":{"adminStateUp":{"type":"boolean","description":"Administrative up/down status for the router\n(must be \"true\" or \"false\" if provided). Changing this updates the\n\u003cspan pulumi-lang-nodejs=\"`adminStateUp`\" pulumi-lang-dotnet=\"`AdminStateUp`\" pulumi-lang-go=\"`adminStateUp`\" pulumi-lang-python=\"`admin_state_up`\" pulumi-lang-yaml=\"`adminStateUp`\" pulumi-lang-java=\"`adminStateUp`\"\u003e`admin_state_up`\u003c/span\u003e of an existing router.\n"},"allTags":{"type":"array","items":{"type":"string"},"description":"The collection of tags assigned on the router, which have been\nexplicitly and implicitly added.\n"},"availabilityZoneHints":{"type":"array","items":{"type":"string"},"description":"An availability zone is used to make\nnetwork resources highly available. Used for resources with high availability\nso that they are scheduled on different availability zones. Changing this\ncreates a new router.\n"},"description":{"type":"string","description":"Human-readable description for the router.\n"},"distributed":{"type":"boolean","description":"Indicates whether or not to create a\ndistributed router. The default policy setting in Neutron restricts\nusage of this property to administrative users only.\n"},"enableSnat":{"type":"boolean","description":"Enable Source NAT for the router. Valid values are\n\"true\" or \"false\". An \u003cspan pulumi-lang-nodejs=\"`externalNetworkId`\" pulumi-lang-dotnet=\"`ExternalNetworkId`\" pulumi-lang-go=\"`externalNetworkId`\" pulumi-lang-python=\"`external_network_id`\" pulumi-lang-yaml=\"`externalNetworkId`\" pulumi-lang-java=\"`externalNetworkId`\"\u003e`external_network_id`\u003c/span\u003e has to be set in order to\nset this property. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`enableSnat`\" pulumi-lang-dotnet=\"`EnableSnat`\" pulumi-lang-go=\"`enableSnat`\" pulumi-lang-python=\"`enable_snat`\" pulumi-lang-yaml=\"`enableSnat`\" pulumi-lang-java=\"`enableSnat`\"\u003e`enable_snat`\u003c/span\u003e of the router.\nSetting this value **requires** an **ext-gw-mode** extension to be enabled\nin OpenStack Neutron.\n"},"externalFixedIps":{"type":"array","items":{"$ref":"#/types/openstack:networking/RouterExternalFixedIp:RouterExternalFixedIp"},"description":"An external fixed IP for the router. This\ncan be repeated. The structure is described below. An \u003cspan pulumi-lang-nodejs=\"`externalNetworkId`\" pulumi-lang-dotnet=\"`ExternalNetworkId`\" pulumi-lang-go=\"`externalNetworkId`\" pulumi-lang-python=\"`external_network_id`\" pulumi-lang-yaml=\"`externalNetworkId`\" pulumi-lang-java=\"`externalNetworkId`\"\u003e`external_network_id`\u003c/span\u003e\nhas to be set in order to set this property. Changing this updates the\nexternal fixed IPs of the router.\n"},"externalNetworkId":{"type":"string","description":"The network UUID of an external gateway\nfor the router. A router with an external gateway is required if any\ncompute instances or load balancers will be using floating IPs. Changing\nthis updates the external gateway of the router.\n"},"externalQosPolicyId":{"type":"string","description":"The QoS policy UUID that will be applied\non the external gateway for the router. Changing this updates the external\ngateway of the router.\n"},"externalSubnetIds":{"type":"array","items":{"type":"string"},"description":"A list of external subnet IDs to try over\neach to obtain a fixed IP for the router. If a subnet ID in a list has\nexhausted floating IP pool, the next subnet ID will be tried. This argument is\nused only during the router creation and allows to set only one external fixed\nIP. Conflicts with an \u003cspan pulumi-lang-nodejs=\"`externalFixedIp`\" pulumi-lang-dotnet=\"`ExternalFixedIp`\" pulumi-lang-go=\"`externalFixedIp`\" pulumi-lang-python=\"`external_fixed_ip`\" pulumi-lang-yaml=\"`externalFixedIp`\" pulumi-lang-java=\"`externalFixedIp`\"\u003e`external_fixed_ip`\u003c/span\u003e argument.\n"},"name":{"type":"string","description":"A unique name for the router. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e of an existing router.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to create a router. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nrouter.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A set of string tags for the router.\n"},"tenantId":{"type":"string","description":"The owner of the floating IP. Required if admin wants\nto create a router for another tenant. Changing this creates a new router.\n"},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional driver-specific options.\n"},"vendorOptions":{"$ref":"#/types/openstack:networking/RouterVendorOptions:RouterVendorOptions","description":"Map of additional vendor-specific options.\nSupported options are described below.\n"}},"required":["adminStateUp","allTags","availabilityZoneHints","distributed","enableSnat","externalFixedIps","externalNetworkId","externalQosPolicyId","name","region","tenantId"],"inputProperties":{"adminStateUp":{"type":"boolean","description":"Administrative up/down status for the router\n(must be \"true\" or \"false\" if provided). Changing this updates the\n\u003cspan pulumi-lang-nodejs=\"`adminStateUp`\" pulumi-lang-dotnet=\"`AdminStateUp`\" pulumi-lang-go=\"`adminStateUp`\" pulumi-lang-python=\"`admin_state_up`\" pulumi-lang-yaml=\"`adminStateUp`\" pulumi-lang-java=\"`adminStateUp`\"\u003e`admin_state_up`\u003c/span\u003e of an existing router.\n"},"availabilityZoneHints":{"type":"array","items":{"type":"string"},"description":"An availability zone is used to make\nnetwork resources highly available. Used for resources with high availability\nso that they are scheduled on different availability zones. Changing this\ncreates a new router.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"Human-readable description for the router.\n"},"distributed":{"type":"boolean","description":"Indicates whether or not to create a\ndistributed router. The default policy setting in Neutron restricts\nusage of this property to administrative users only.\n","willReplaceOnChanges":true},"enableSnat":{"type":"boolean","description":"Enable Source NAT for the router. Valid values are\n\"true\" or \"false\". An \u003cspan pulumi-lang-nodejs=\"`externalNetworkId`\" pulumi-lang-dotnet=\"`ExternalNetworkId`\" pulumi-lang-go=\"`externalNetworkId`\" pulumi-lang-python=\"`external_network_id`\" pulumi-lang-yaml=\"`externalNetworkId`\" pulumi-lang-java=\"`externalNetworkId`\"\u003e`external_network_id`\u003c/span\u003e has to be set in order to\nset this property. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`enableSnat`\" pulumi-lang-dotnet=\"`EnableSnat`\" pulumi-lang-go=\"`enableSnat`\" pulumi-lang-python=\"`enable_snat`\" pulumi-lang-yaml=\"`enableSnat`\" pulumi-lang-java=\"`enableSnat`\"\u003e`enable_snat`\u003c/span\u003e of the router.\nSetting this value **requires** an **ext-gw-mode** extension to be enabled\nin OpenStack Neutron.\n"},"externalFixedIps":{"type":"array","items":{"$ref":"#/types/openstack:networking/RouterExternalFixedIp:RouterExternalFixedIp"},"description":"An external fixed IP for the router. This\ncan be repeated. The structure is described below. An \u003cspan pulumi-lang-nodejs=\"`externalNetworkId`\" pulumi-lang-dotnet=\"`ExternalNetworkId`\" pulumi-lang-go=\"`externalNetworkId`\" pulumi-lang-python=\"`external_network_id`\" pulumi-lang-yaml=\"`externalNetworkId`\" pulumi-lang-java=\"`externalNetworkId`\"\u003e`external_network_id`\u003c/span\u003e\nhas to be set in order to set this property. Changing this updates the\nexternal fixed IPs of the router.\n"},"externalNetworkId":{"type":"string","description":"The network UUID of an external gateway\nfor the router. A router with an external gateway is required if any\ncompute instances or load balancers will be using floating IPs. Changing\nthis updates the external gateway of the router.\n"},"externalQosPolicyId":{"type":"string","description":"The QoS policy UUID that will be applied\non the external gateway for the router. Changing this updates the external\ngateway of the router.\n"},"externalSubnetIds":{"type":"array","items":{"type":"string"},"description":"A list of external subnet IDs to try over\neach to obtain a fixed IP for the router. If a subnet ID in a list has\nexhausted floating IP pool, the next subnet ID will be tried. This argument is\nused only during the router creation and allows to set only one external fixed\nIP. Conflicts with an \u003cspan pulumi-lang-nodejs=\"`externalFixedIp`\" pulumi-lang-dotnet=\"`ExternalFixedIp`\" pulumi-lang-go=\"`externalFixedIp`\" pulumi-lang-python=\"`external_fixed_ip`\" pulumi-lang-yaml=\"`externalFixedIp`\" pulumi-lang-java=\"`externalFixedIp`\"\u003e`external_fixed_ip`\u003c/span\u003e argument.\n"},"name":{"type":"string","description":"A unique name for the router. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e of an existing router.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to create a router. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nrouter.\n","willReplaceOnChanges":true},"tags":{"type":"array","items":{"type":"string"},"description":"A set of string tags for the router.\n"},"tenantId":{"type":"string","description":"The owner of the floating IP. Required if admin wants\nto create a router for another tenant. Changing this creates a new router.\n","willReplaceOnChanges":true},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional driver-specific options.\n","willReplaceOnChanges":true},"vendorOptions":{"$ref":"#/types/openstack:networking/RouterVendorOptions:RouterVendorOptions","description":"Map of additional vendor-specific options.\nSupported options are described below.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering Router resources.\n","properties":{"adminStateUp":{"type":"boolean","description":"Administrative up/down status for the router\n(must be \"true\" or \"false\" if provided). Changing this updates the\n\u003cspan pulumi-lang-nodejs=\"`adminStateUp`\" pulumi-lang-dotnet=\"`AdminStateUp`\" pulumi-lang-go=\"`adminStateUp`\" pulumi-lang-python=\"`admin_state_up`\" pulumi-lang-yaml=\"`adminStateUp`\" pulumi-lang-java=\"`adminStateUp`\"\u003e`admin_state_up`\u003c/span\u003e of an existing router.\n"},"allTags":{"type":"array","items":{"type":"string"},"description":"The collection of tags assigned on the router, which have been\nexplicitly and implicitly added.\n"},"availabilityZoneHints":{"type":"array","items":{"type":"string"},"description":"An availability zone is used to make\nnetwork resources highly available. Used for resources with high availability\nso that they are scheduled on different availability zones. Changing this\ncreates a new router.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"Human-readable description for the router.\n"},"distributed":{"type":"boolean","description":"Indicates whether or not to create a\ndistributed router. The default policy setting in Neutron restricts\nusage of this property to administrative users only.\n","willReplaceOnChanges":true},"enableSnat":{"type":"boolean","description":"Enable Source NAT for the router. Valid values are\n\"true\" or \"false\". An \u003cspan pulumi-lang-nodejs=\"`externalNetworkId`\" pulumi-lang-dotnet=\"`ExternalNetworkId`\" pulumi-lang-go=\"`externalNetworkId`\" pulumi-lang-python=\"`external_network_id`\" pulumi-lang-yaml=\"`externalNetworkId`\" pulumi-lang-java=\"`externalNetworkId`\"\u003e`external_network_id`\u003c/span\u003e has to be set in order to\nset this property. Changing this updates the \u003cspan pulumi-lang-nodejs=\"`enableSnat`\" pulumi-lang-dotnet=\"`EnableSnat`\" pulumi-lang-go=\"`enableSnat`\" pulumi-lang-python=\"`enable_snat`\" pulumi-lang-yaml=\"`enableSnat`\" pulumi-lang-java=\"`enableSnat`\"\u003e`enable_snat`\u003c/span\u003e of the router.\nSetting this value **requires** an **ext-gw-mode** extension to be enabled\nin OpenStack Neutron.\n"},"externalFixedIps":{"type":"array","items":{"$ref":"#/types/openstack:networking/RouterExternalFixedIp:RouterExternalFixedIp"},"description":"An external fixed IP for the router. This\ncan be repeated. The structure is described below. An \u003cspan pulumi-lang-nodejs=\"`externalNetworkId`\" pulumi-lang-dotnet=\"`ExternalNetworkId`\" pulumi-lang-go=\"`externalNetworkId`\" pulumi-lang-python=\"`external_network_id`\" pulumi-lang-yaml=\"`externalNetworkId`\" pulumi-lang-java=\"`externalNetworkId`\"\u003e`external_network_id`\u003c/span\u003e\nhas to be set in order to set this property. Changing this updates the\nexternal fixed IPs of the router.\n"},"externalNetworkId":{"type":"string","description":"The network UUID of an external gateway\nfor the router. A router with an external gateway is required if any\ncompute instances or load balancers will be using floating IPs. Changing\nthis updates the external gateway of the router.\n"},"externalQosPolicyId":{"type":"string","description":"The QoS policy UUID that will be applied\non the external gateway for the router. Changing this updates the external\ngateway of the router.\n"},"externalSubnetIds":{"type":"array","items":{"type":"string"},"description":"A list of external subnet IDs to try over\neach to obtain a fixed IP for the router. If a subnet ID in a list has\nexhausted floating IP pool, the next subnet ID will be tried. This argument is\nused only during the router creation and allows to set only one external fixed\nIP. Conflicts with an \u003cspan pulumi-lang-nodejs=\"`externalFixedIp`\" pulumi-lang-dotnet=\"`ExternalFixedIp`\" pulumi-lang-go=\"`externalFixedIp`\" pulumi-lang-python=\"`external_fixed_ip`\" pulumi-lang-yaml=\"`externalFixedIp`\" pulumi-lang-java=\"`externalFixedIp`\"\u003e`external_fixed_ip`\u003c/span\u003e argument.\n"},"name":{"type":"string","description":"A unique name for the router. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e of an existing router.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to create a router. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nrouter.\n","willReplaceOnChanges":true},"tags":{"type":"array","items":{"type":"string"},"description":"A set of string tags for the router.\n"},"tenantId":{"type":"string","description":"The owner of the floating IP. Required if admin wants\nto create a router for another tenant. Changing this creates a new router.\n","willReplaceOnChanges":true},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional driver-specific options.\n","willReplaceOnChanges":true},"vendorOptions":{"$ref":"#/types/openstack:networking/RouterVendorOptions:RouterVendorOptions","description":"Map of additional vendor-specific options.\nSupported options are described below.\n"}},"type":"object"}},"openstack:networking/routerInterface:RouterInterface":{"description":"Manages a V2 router interface resource within OpenStack.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst network1 = new openstack.networking.Network(\"network_1\", {\n    name: \"tf_test_network\",\n    adminStateUp: true,\n});\nconst subnet1 = new openstack.networking.Subnet(\"subnet_1\", {\n    networkId: network1.id,\n    cidr: \"192.168.199.0/24\",\n    ipVersion: 4,\n});\nconst router1 = new openstack.networking.Router(\"router_1\", {\n    name: \"my_router\",\n    externalNetworkId: \"f67f0d72-0ddf-11e4-9d95-e1f29f417e2f\",\n});\nconst routerInterface1 = new openstack.networking.RouterInterface(\"router_interface_1\", {\n    routerId: router1.id,\n    subnetId: subnet1.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nnetwork1 = openstack.networking.Network(\"network_1\",\n    name=\"tf_test_network\",\n    admin_state_up=True)\nsubnet1 = openstack.networking.Subnet(\"subnet_1\",\n    network_id=network1.id,\n    cidr=\"192.168.199.0/24\",\n    ip_version=4)\nrouter1 = openstack.networking.Router(\"router_1\",\n    name=\"my_router\",\n    external_network_id=\"f67f0d72-0ddf-11e4-9d95-e1f29f417e2f\")\nrouter_interface1 = openstack.networking.RouterInterface(\"router_interface_1\",\n    router_id=router1.id,\n    subnet_id=subnet1.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var network1 = new OpenStack.Networking.Network(\"network_1\", new()\n    {\n        Name = \"tf_test_network\",\n        AdminStateUp = true,\n    });\n\n    var subnet1 = new OpenStack.Networking.Subnet(\"subnet_1\", new()\n    {\n        NetworkId = network1.Id,\n        Cidr = \"192.168.199.0/24\",\n        IpVersion = 4,\n    });\n\n    var router1 = new OpenStack.Networking.Router(\"router_1\", new()\n    {\n        Name = \"my_router\",\n        ExternalNetworkId = \"f67f0d72-0ddf-11e4-9d95-e1f29f417e2f\",\n    });\n\n    var routerInterface1 = new OpenStack.Networking.RouterInterface(\"router_interface_1\", new()\n    {\n        RouterId = router1.Id,\n        SubnetId = subnet1.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork1, err := networking.NewNetwork(ctx, \"network_1\", \u0026networking.NetworkArgs{\n\t\t\tName:         pulumi.String(\"tf_test_network\"),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet1, err := networking.NewSubnet(ctx, \"subnet_1\", \u0026networking.SubnetArgs{\n\t\t\tNetworkId: network1.ID(),\n\t\t\tCidr:      pulumi.String(\"192.168.199.0/24\"),\n\t\t\tIpVersion: pulumi.Int(4),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trouter1, err := networking.NewRouter(ctx, \"router_1\", \u0026networking.RouterArgs{\n\t\t\tName:              pulumi.String(\"my_router\"),\n\t\t\tExternalNetworkId: pulumi.String(\"f67f0d72-0ddf-11e4-9d95-e1f29f417e2f\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networking.NewRouterInterface(ctx, \"router_interface_1\", \u0026networking.RouterInterfaceArgs{\n\t\t\tRouterId: router1.ID(),\n\t\t\tSubnetId: subnet1.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.openstack.networking.Network;\nimport com.pulumi.openstack.networking.NetworkArgs;\nimport com.pulumi.openstack.networking.Subnet;\nimport com.pulumi.openstack.networking.SubnetArgs;\nimport com.pulumi.openstack.networking.Router;\nimport com.pulumi.openstack.networking.RouterArgs;\nimport com.pulumi.openstack.networking.RouterInterface;\nimport com.pulumi.openstack.networking.RouterInterfaceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 network1 = new Network(\"network1\", NetworkArgs.builder()\n            .name(\"tf_test_network\")\n            .adminStateUp(true)\n            .build());\n\n        var subnet1 = new Subnet(\"subnet1\", SubnetArgs.builder()\n            .networkId(network1.id())\n            .cidr(\"192.168.199.0/24\")\n            .ipVersion(4)\n            .build());\n\n        var router1 = new Router(\"router1\", RouterArgs.builder()\n            .name(\"my_router\")\n            .externalNetworkId(\"f67f0d72-0ddf-11e4-9d95-e1f29f417e2f\")\n            .build());\n\n        var routerInterface1 = new RouterInterface(\"routerInterface1\", RouterInterfaceArgs.builder()\n            .routerId(router1.id())\n            .subnetId(subnet1.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  network1:\n    type: openstack:networking:Network\n    name: network_1\n    properties:\n      name: tf_test_network\n      adminStateUp: 'true'\n  subnet1:\n    type: openstack:networking:Subnet\n    name: subnet_1\n    properties:\n      networkId: ${network1.id}\n      cidr: 192.168.199.0/24\n      ipVersion: 4\n  router1:\n    type: openstack:networking:Router\n    name: router_1\n    properties:\n      name: my_router\n      externalNetworkId: f67f0d72-0ddf-11e4-9d95-e1f29f417e2f\n  routerInterface1:\n    type: openstack:networking:RouterInterface\n    name: router_interface_1\n    properties:\n      routerId: ${router1.id}\n      subnetId: ${subnet1.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRouter Interfaces can be imported using the port `id`, e.g.\n\n$ openstack port list --router \u003crouter name or id\u003e\n\n```sh\n$ pulumi import openstack:networking/routerInterface:RouterInterface int_1 port_id\n```\n\n","properties":{"forceDestroy":{"type":"boolean","description":"A boolean indicating whether the routes from the\ncorresponding router ID should be deleted so that the router interface can\nbe destroyed without any errors. The default value is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"portId":{"type":"string","description":"ID of the port this interface connects to. Changing\nthis creates a new router interface.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to create a router. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nrouter interface.\n"},"routerId":{"type":"string","description":"ID of the router this interface belongs to. Changing\nthis creates a new router interface.\n"},"subnetId":{"type":"string","description":"ID of the subnet this interface connects to. Changing\nthis creates a new router interface.\n"}},"required":["portId","region","routerId","subnetId"],"inputProperties":{"forceDestroy":{"type":"boolean","description":"A boolean indicating whether the routes from the\ncorresponding router ID should be deleted so that the router interface can\nbe destroyed without any errors. The default value is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"portId":{"type":"string","description":"ID of the port this interface connects to. Changing\nthis creates a new router interface.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to create a router. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nrouter interface.\n","willReplaceOnChanges":true},"routerId":{"type":"string","description":"ID of the router this interface belongs to. Changing\nthis creates a new router interface.\n","willReplaceOnChanges":true},"subnetId":{"type":"string","description":"ID of the subnet this interface connects to. Changing\nthis creates a new router interface.\n","willReplaceOnChanges":true}},"requiredInputs":["routerId"],"stateInputs":{"description":"Input properties used for looking up and filtering RouterInterface resources.\n","properties":{"forceDestroy":{"type":"boolean","description":"A boolean indicating whether the routes from the\ncorresponding router ID should be deleted so that the router interface can\nbe destroyed without any errors. The default value is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"portId":{"type":"string","description":"ID of the port this interface connects to. Changing\nthis creates a new router interface.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to create a router. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nrouter interface.\n","willReplaceOnChanges":true},"routerId":{"type":"string","description":"ID of the router this interface belongs to. Changing\nthis creates a new router interface.\n","willReplaceOnChanges":true},"subnetId":{"type":"string","description":"ID of the subnet this interface connects to. Changing\nthis creates a new router interface.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:networking/routerRoute:RouterRoute":{"description":"Creates a routing entry on a OpenStack V2 router.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst router1 = new openstack.networking.Router(\"router_1\", {\n    name: \"router_1\",\n    adminStateUp: true,\n});\nconst network1 = new openstack.networking.Network(\"network_1\", {\n    name: \"network_1\",\n    adminStateUp: true,\n});\nconst subnet1 = new openstack.networking.Subnet(\"subnet_1\", {\n    networkId: network1.id,\n    cidr: \"192.168.199.0/24\",\n    ipVersion: 4,\n});\nconst int1 = new openstack.networking.RouterInterface(\"int_1\", {\n    routerId: router1.id,\n    subnetId: subnet1.id,\n});\nconst routerRoute1 = new openstack.networking.RouterRoute(\"router_route_1\", {\n    routerId: router1.id,\n    destinationCidr: \"10.0.1.0/24\",\n    nextHop: \"192.168.199.254\",\n}, {\n    dependsOn: [int1],\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nrouter1 = openstack.networking.Router(\"router_1\",\n    name=\"router_1\",\n    admin_state_up=True)\nnetwork1 = openstack.networking.Network(\"network_1\",\n    name=\"network_1\",\n    admin_state_up=True)\nsubnet1 = openstack.networking.Subnet(\"subnet_1\",\n    network_id=network1.id,\n    cidr=\"192.168.199.0/24\",\n    ip_version=4)\nint1 = openstack.networking.RouterInterface(\"int_1\",\n    router_id=router1.id,\n    subnet_id=subnet1.id)\nrouter_route1 = openstack.networking.RouterRoute(\"router_route_1\",\n    router_id=router1.id,\n    destination_cidr=\"10.0.1.0/24\",\n    next_hop=\"192.168.199.254\",\n    opts = pulumi.ResourceOptions(depends_on=[int1]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var router1 = new OpenStack.Networking.Router(\"router_1\", new()\n    {\n        Name = \"router_1\",\n        AdminStateUp = true,\n    });\n\n    var network1 = new OpenStack.Networking.Network(\"network_1\", new()\n    {\n        Name = \"network_1\",\n        AdminStateUp = true,\n    });\n\n    var subnet1 = new OpenStack.Networking.Subnet(\"subnet_1\", new()\n    {\n        NetworkId = network1.Id,\n        Cidr = \"192.168.199.0/24\",\n        IpVersion = 4,\n    });\n\n    var int1 = new OpenStack.Networking.RouterInterface(\"int_1\", new()\n    {\n        RouterId = router1.Id,\n        SubnetId = subnet1.Id,\n    });\n\n    var routerRoute1 = new OpenStack.Networking.RouterRoute(\"router_route_1\", new()\n    {\n        RouterId = router1.Id,\n        DestinationCidr = \"10.0.1.0/24\",\n        NextHop = \"192.168.199.254\",\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            int1,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\trouter1, err := networking.NewRouter(ctx, \"router_1\", \u0026networking.RouterArgs{\n\t\t\tName:         pulumi.String(\"router_1\"),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork1, err := networking.NewNetwork(ctx, \"network_1\", \u0026networking.NetworkArgs{\n\t\t\tName:         pulumi.String(\"network_1\"),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet1, err := networking.NewSubnet(ctx, \"subnet_1\", \u0026networking.SubnetArgs{\n\t\t\tNetworkId: network1.ID(),\n\t\t\tCidr:      pulumi.String(\"192.168.199.0/24\"),\n\t\t\tIpVersion: pulumi.Int(4),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tint1, err := networking.NewRouterInterface(ctx, \"int_1\", \u0026networking.RouterInterfaceArgs{\n\t\t\tRouterId: router1.ID(),\n\t\t\tSubnetId: subnet1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networking.NewRouterRoute(ctx, \"router_route_1\", \u0026networking.RouterRouteArgs{\n\t\t\tRouterId:        router1.ID(),\n\t\t\tDestinationCidr: pulumi.String(\"10.0.1.0/24\"),\n\t\t\tNextHop:         pulumi.String(\"192.168.199.254\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tint1,\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.openstack.networking.Router;\nimport com.pulumi.openstack.networking.RouterArgs;\nimport com.pulumi.openstack.networking.Network;\nimport com.pulumi.openstack.networking.NetworkArgs;\nimport com.pulumi.openstack.networking.Subnet;\nimport com.pulumi.openstack.networking.SubnetArgs;\nimport com.pulumi.openstack.networking.RouterInterface;\nimport com.pulumi.openstack.networking.RouterInterfaceArgs;\nimport com.pulumi.openstack.networking.RouterRoute;\nimport com.pulumi.openstack.networking.RouterRouteArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var router1 = new Router(\"router1\", RouterArgs.builder()\n            .name(\"router_1\")\n            .adminStateUp(true)\n            .build());\n\n        var network1 = new Network(\"network1\", NetworkArgs.builder()\n            .name(\"network_1\")\n            .adminStateUp(true)\n            .build());\n\n        var subnet1 = new Subnet(\"subnet1\", SubnetArgs.builder()\n            .networkId(network1.id())\n            .cidr(\"192.168.199.0/24\")\n            .ipVersion(4)\n            .build());\n\n        var int1 = new RouterInterface(\"int1\", RouterInterfaceArgs.builder()\n            .routerId(router1.id())\n            .subnetId(subnet1.id())\n            .build());\n\n        var routerRoute1 = new RouterRoute(\"routerRoute1\", RouterRouteArgs.builder()\n            .routerId(router1.id())\n            .destinationCidr(\"10.0.1.0/24\")\n            .nextHop(\"192.168.199.254\")\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(int1)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  router1:\n    type: openstack:networking:Router\n    name: router_1\n    properties:\n      name: router_1\n      adminStateUp: 'true'\n  network1:\n    type: openstack:networking:Network\n    name: network_1\n    properties:\n      name: network_1\n      adminStateUp: 'true'\n  subnet1:\n    type: openstack:networking:Subnet\n    name: subnet_1\n    properties:\n      networkId: ${network1.id}\n      cidr: 192.168.199.0/24\n      ipVersion: 4\n  int1:\n    type: openstack:networking:RouterInterface\n    name: int_1\n    properties:\n      routerId: ${router1.id}\n      subnetId: ${subnet1.id}\n  routerRoute1:\n    type: openstack:networking:RouterRoute\n    name: router_route_1\n    properties:\n      routerId: ${router1.id}\n      destinationCidr: 10.0.1.0/24\n      nextHop: 192.168.199.254\n    options:\n      dependsOn:\n        - ${int1}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Notes\n\nThe \u003cspan pulumi-lang-nodejs=\"`nextHop`\" pulumi-lang-dotnet=\"`NextHop`\" pulumi-lang-go=\"`nextHop`\" pulumi-lang-python=\"`next_hop`\" pulumi-lang-yaml=\"`nextHop`\" pulumi-lang-java=\"`nextHop`\"\u003e`next_hop`\u003c/span\u003e IP address must be directly reachable from the router at the `\u003cspan pulumi-lang-nodejs=\"`openstack.networking.RouterRoute`\" pulumi-lang-dotnet=\"`openstack.networking.RouterRoute`\" pulumi-lang-go=\"`networking.RouterRoute`\" pulumi-lang-python=\"`networking.RouterRoute`\" pulumi-lang-yaml=\"`openstack.networking.RouterRoute`\" pulumi-lang-java=\"`openstack.networking.RouterRoute`\"\u003e`openstack.networking.RouterRoute`\u003c/span\u003e`\nresource creation time.  You can ensure that by explicitly specifying a dependency on the `\u003cspan pulumi-lang-nodejs=\"`openstack.networking.RouterInterface`\" pulumi-lang-dotnet=\"`openstack.networking.RouterInterface`\" pulumi-lang-go=\"`networking.RouterInterface`\" pulumi-lang-python=\"`networking.RouterInterface`\" pulumi-lang-yaml=\"`openstack.networking.RouterInterface`\" pulumi-lang-java=\"`openstack.networking.RouterInterface`\"\u003e`openstack.networking.RouterInterface`\u003c/span\u003e`\nresource that connects the next hop to the router, as in the example above.\n\n## Import\n\nRouting entries can be imported using a combined ID using the following format: `\u003crouter_id\u003e-route-\u003cdestination_cidr\u003e-\u003cnext_hop\u003e`\n\n```sh\n$ pulumi import openstack:networking/routerRoute:RouterRoute router_route_1 686fe248-386c-4f70-9f6c-281607dad079-route-10.0.1.0/24-192.168.199.25\n```\n","properties":{"destinationCidr":{"type":"string","description":"CIDR block to match on the packet’s destination IP. Changing\nthis creates a new routing entry.\n"},"nextHop":{"type":"string","description":"IP address of the next hop gateway.  Changing\nthis creates a new routing entry.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to configure a routing entry on a router. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nrouting entry.\n"},"routerId":{"type":"string","description":"ID of the router this routing entry belongs to. Changing\nthis creates a new routing entry.\n"}},"required":["destinationCidr","nextHop","region","routerId"],"inputProperties":{"destinationCidr":{"type":"string","description":"CIDR block to match on the packet’s destination IP. Changing\nthis creates a new routing entry.\n","willReplaceOnChanges":true},"nextHop":{"type":"string","description":"IP address of the next hop gateway.  Changing\nthis creates a new routing entry.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to configure a routing entry on a router. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nrouting entry.\n","willReplaceOnChanges":true},"routerId":{"type":"string","description":"ID of the router this routing entry belongs to. Changing\nthis creates a new routing entry.\n","willReplaceOnChanges":true}},"requiredInputs":["destinationCidr","nextHop","routerId"],"stateInputs":{"description":"Input properties used for looking up and filtering RouterRoute resources.\n","properties":{"destinationCidr":{"type":"string","description":"CIDR block to match on the packet’s destination IP. Changing\nthis creates a new routing entry.\n","willReplaceOnChanges":true},"nextHop":{"type":"string","description":"IP address of the next hop gateway.  Changing\nthis creates a new routing entry.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to configure a routing entry on a router. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nrouting entry.\n","willReplaceOnChanges":true},"routerId":{"type":"string","description":"ID of the router this routing entry belongs to. Changing\nthis creates a new routing entry.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:networking/routerRoutesV2:RouterRoutesV2":{"description":"Creates routing entries on a OpenStack V2 router.\n\n\u003e **Note:** This resource uses the OpenStack Neutron `extraroute-atomic`\nextension. If your environment does not have this extension, you should use the\n\u003cspan pulumi-lang-nodejs=\"`openstack.networking.RouterRoute`\" pulumi-lang-dotnet=\"`openstack.networking.RouterRoute`\" pulumi-lang-go=\"`networking.RouterRoute`\" pulumi-lang-python=\"`networking.RouterRoute`\" pulumi-lang-yaml=\"`openstack.networking.RouterRoute`\" pulumi-lang-java=\"`openstack.networking.RouterRoute`\"\u003e`openstack.networking.RouterRoute`\u003c/span\u003e resource to add routes instead.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst router1 = new openstack.networking.Router(\"router_1\", {\n    name: \"router_1\",\n    adminStateUp: true,\n});\nconst network1 = new openstack.networking.Network(\"network_1\", {\n    name: \"network_1\",\n    adminStateUp: true,\n});\nconst subnet1 = new openstack.networking.Subnet(\"subnet_1\", {\n    networkId: network1.id,\n    cidr: \"192.168.199.0/24\",\n    ipVersion: 4,\n});\nconst int1 = new openstack.networking.RouterInterface(\"int_1\", {\n    routerId: router1.id,\n    subnetId: subnet1.id,\n});\nconst routerRoutes1 = new openstack.networking.RouterRoutesV2(\"router_routes_1\", {\n    routerId: int1.routerId,\n    routes: [\n        {\n            destinationCidr: \"10.0.1.0/24\",\n            nextHop: \"192.168.199.254\",\n        },\n        {\n            destinationCidr: \"10.0.2.0/24\",\n            nextHop: \"192.168.199.254\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nrouter1 = openstack.networking.Router(\"router_1\",\n    name=\"router_1\",\n    admin_state_up=True)\nnetwork1 = openstack.networking.Network(\"network_1\",\n    name=\"network_1\",\n    admin_state_up=True)\nsubnet1 = openstack.networking.Subnet(\"subnet_1\",\n    network_id=network1.id,\n    cidr=\"192.168.199.0/24\",\n    ip_version=4)\nint1 = openstack.networking.RouterInterface(\"int_1\",\n    router_id=router1.id,\n    subnet_id=subnet1.id)\nrouter_routes1 = openstack.networking.RouterRoutesV2(\"router_routes_1\",\n    router_id=int1.router_id,\n    routes=[\n        {\n            \"destination_cidr\": \"10.0.1.0/24\",\n            \"next_hop\": \"192.168.199.254\",\n        },\n        {\n            \"destination_cidr\": \"10.0.2.0/24\",\n            \"next_hop\": \"192.168.199.254\",\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var router1 = new OpenStack.Networking.Router(\"router_1\", new()\n    {\n        Name = \"router_1\",\n        AdminStateUp = true,\n    });\n\n    var network1 = new OpenStack.Networking.Network(\"network_1\", new()\n    {\n        Name = \"network_1\",\n        AdminStateUp = true,\n    });\n\n    var subnet1 = new OpenStack.Networking.Subnet(\"subnet_1\", new()\n    {\n        NetworkId = network1.Id,\n        Cidr = \"192.168.199.0/24\",\n        IpVersion = 4,\n    });\n\n    var int1 = new OpenStack.Networking.RouterInterface(\"int_1\", new()\n    {\n        RouterId = router1.Id,\n        SubnetId = subnet1.Id,\n    });\n\n    var routerRoutes1 = new OpenStack.Networking.RouterRoutesV2(\"router_routes_1\", new()\n    {\n        RouterId = int1.RouterId,\n        Routes = new[]\n        {\n            new OpenStack.Networking.Inputs.RouterRoutesV2RouteArgs\n            {\n                DestinationCidr = \"10.0.1.0/24\",\n                NextHop = \"192.168.199.254\",\n            },\n            new OpenStack.Networking.Inputs.RouterRoutesV2RouteArgs\n            {\n                DestinationCidr = \"10.0.2.0/24\",\n                NextHop = \"192.168.199.254\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\trouter1, err := networking.NewRouter(ctx, \"router_1\", \u0026networking.RouterArgs{\n\t\t\tName:         pulumi.String(\"router_1\"),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork1, err := networking.NewNetwork(ctx, \"network_1\", \u0026networking.NetworkArgs{\n\t\t\tName:         pulumi.String(\"network_1\"),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet1, err := networking.NewSubnet(ctx, \"subnet_1\", \u0026networking.SubnetArgs{\n\t\t\tNetworkId: network1.ID(),\n\t\t\tCidr:      pulumi.String(\"192.168.199.0/24\"),\n\t\t\tIpVersion: pulumi.Int(4),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tint1, err := networking.NewRouterInterface(ctx, \"int_1\", \u0026networking.RouterInterfaceArgs{\n\t\t\tRouterId: router1.ID(),\n\t\t\tSubnetId: subnet1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networking.NewRouterRoutesV2(ctx, \"router_routes_1\", \u0026networking.RouterRoutesV2Args{\n\t\t\tRouterId: int1.RouterId,\n\t\t\tRoutes: networking.RouterRoutesV2RouteArray{\n\t\t\t\t\u0026networking.RouterRoutesV2RouteArgs{\n\t\t\t\t\tDestinationCidr: pulumi.String(\"10.0.1.0/24\"),\n\t\t\t\t\tNextHop:         pulumi.String(\"192.168.199.254\"),\n\t\t\t\t},\n\t\t\t\t\u0026networking.RouterRoutesV2RouteArgs{\n\t\t\t\t\tDestinationCidr: pulumi.String(\"10.0.2.0/24\"),\n\t\t\t\t\tNextHop:         pulumi.String(\"192.168.199.254\"),\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.openstack.networking.Router;\nimport com.pulumi.openstack.networking.RouterArgs;\nimport com.pulumi.openstack.networking.Network;\nimport com.pulumi.openstack.networking.NetworkArgs;\nimport com.pulumi.openstack.networking.Subnet;\nimport com.pulumi.openstack.networking.SubnetArgs;\nimport com.pulumi.openstack.networking.RouterInterface;\nimport com.pulumi.openstack.networking.RouterInterfaceArgs;\nimport com.pulumi.openstack.networking.RouterRoutesV2;\nimport com.pulumi.openstack.networking.RouterRoutesV2Args;\nimport com.pulumi.openstack.networking.inputs.RouterRoutesV2RouteArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 router1 = new Router(\"router1\", RouterArgs.builder()\n            .name(\"router_1\")\n            .adminStateUp(true)\n            .build());\n\n        var network1 = new Network(\"network1\", NetworkArgs.builder()\n            .name(\"network_1\")\n            .adminStateUp(true)\n            .build());\n\n        var subnet1 = new Subnet(\"subnet1\", SubnetArgs.builder()\n            .networkId(network1.id())\n            .cidr(\"192.168.199.0/24\")\n            .ipVersion(4)\n            .build());\n\n        var int1 = new RouterInterface(\"int1\", RouterInterfaceArgs.builder()\n            .routerId(router1.id())\n            .subnetId(subnet1.id())\n            .build());\n\n        var routerRoutes1 = new RouterRoutesV2(\"routerRoutes1\", RouterRoutesV2Args.builder()\n            .routerId(int1.routerId())\n            .routes(            \n                RouterRoutesV2RouteArgs.builder()\n                    .destinationCidr(\"10.0.1.0/24\")\n                    .nextHop(\"192.168.199.254\")\n                    .build(),\n                RouterRoutesV2RouteArgs.builder()\n                    .destinationCidr(\"10.0.2.0/24\")\n                    .nextHop(\"192.168.199.254\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  router1:\n    type: openstack:networking:Router\n    name: router_1\n    properties:\n      name: router_1\n      adminStateUp: 'true'\n  network1:\n    type: openstack:networking:Network\n    name: network_1\n    properties:\n      name: network_1\n      adminStateUp: 'true'\n  subnet1:\n    type: openstack:networking:Subnet\n    name: subnet_1\n    properties:\n      networkId: ${network1.id}\n      cidr: 192.168.199.0/24\n      ipVersion: 4\n  int1:\n    type: openstack:networking:RouterInterface\n    name: int_1\n    properties:\n      routerId: ${router1.id}\n      subnetId: ${subnet1.id}\n  routerRoutes1:\n    type: openstack:networking:RouterRoutesV2\n    name: router_routes_1\n    properties:\n      routerId: ${int1.routerId}\n      routes:\n        - destinationCidr: 10.0.1.0/24\n          nextHop: 192.168.199.254\n        - destinationCidr: 10.0.2.0/24\n          nextHop: 192.168.199.254\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Notes\n\nThe \u003cspan pulumi-lang-nodejs=\"`nextHop`\" pulumi-lang-dotnet=\"`NextHop`\" pulumi-lang-go=\"`nextHop`\" pulumi-lang-python=\"`next_hop`\" pulumi-lang-yaml=\"`nextHop`\" pulumi-lang-java=\"`nextHop`\"\u003e`next_hop`\u003c/span\u003e IP address must be directly reachable from the router at the\n`\u003cspan pulumi-lang-nodejs=\"`openstack.networking.RouterRoutesV2`\" pulumi-lang-dotnet=\"`openstack.networking.RouterRoutesV2`\" pulumi-lang-go=\"`networking.RouterRoutesV2`\" pulumi-lang-python=\"`networking.RouterRoutesV2`\" pulumi-lang-yaml=\"`openstack.networking.RouterRoutesV2`\" pulumi-lang-java=\"`openstack.networking.RouterRoutesV2`\"\u003e`openstack.networking.RouterRoutesV2`\u003c/span\u003e` resource creation time.  You can\nensure that by explicitly specifying a dependency on the\n`\u003cspan pulumi-lang-nodejs=\"`openstack.networking.RouterInterface`\" pulumi-lang-dotnet=\"`openstack.networking.RouterInterface`\" pulumi-lang-go=\"`networking.RouterInterface`\" pulumi-lang-python=\"`networking.RouterInterface`\" pulumi-lang-yaml=\"`openstack.networking.RouterInterface`\" pulumi-lang-java=\"`openstack.networking.RouterInterface`\"\u003e`openstack.networking.RouterInterface`\u003c/span\u003e` resource that connects the next\nhop to the router, as in the example above.\n\n## Import\n\nRouting entries can be imported using a router `id`:\n\n```sh\n$ pulumi import openstack:networking/routerRoutesV2:RouterRoutesV2 router_routes_1 686fe248-386c-4f70-9f6c-281607dad079\n```\n","properties":{"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to configure routing entres on a router. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\nnew routing entries.\n"},"routerId":{"type":"string","description":"ID of the router these routing entries belong to.\nChanging this creates new routing entries.\n"},"routes":{"type":"array","items":{"$ref":"#/types/openstack:networking/RouterRoutesV2Route:RouterRoutesV2Route"},"description":"A set of routing entries to add to the router.\n"}},"required":["region","routerId"],"inputProperties":{"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to configure routing entres on a router. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\nnew routing entries.\n","willReplaceOnChanges":true},"routerId":{"type":"string","description":"ID of the router these routing entries belong to.\nChanging this creates new routing entries.\n","willReplaceOnChanges":true},"routes":{"type":"array","items":{"$ref":"#/types/openstack:networking/RouterRoutesV2Route:RouterRoutesV2Route"},"description":"A set of routing entries to add to the router.\n"}},"requiredInputs":["routerId"],"stateInputs":{"description":"Input properties used for looking up and filtering RouterRoutesV2 resources.\n","properties":{"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to configure routing entres on a router. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\nnew routing entries.\n","willReplaceOnChanges":true},"routerId":{"type":"string","description":"ID of the router these routing entries belong to.\nChanging this creates new routing entries.\n","willReplaceOnChanges":true},"routes":{"type":"array","items":{"$ref":"#/types/openstack:networking/RouterRoutesV2Route:RouterRoutesV2Route"},"description":"A set of routing entries to add to the router.\n"}},"type":"object"}},"openstack:networking/secGroup:SecGroup":{"description":"\n\n## Import\n\nSecurity Groups can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:networking/secGroup:SecGroup secgroup_1 38809219-5e8a-4852-9139-6f461c90e8bc\n```\n","properties":{"allTags":{"type":"array","items":{"type":"string"},"description":"The collection of tags assigned on the security group, which have\nbeen explicitly and implicitly added.\n"},"deleteDefaultRules":{"type":"boolean","description":"Whether or not to delete the default\negress security rules. This is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e by default. See the below note\nfor more information.\n"},"description":{"type":"string","description":"A unique name for the security group.\n"},"name":{"type":"string","description":"A unique name for the security group.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to create a port. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nsecurity group.\n"},"stateful":{"type":"boolean","description":"Indicates if the security group is stateful or\nstateless. Update of the stateful argument is allowed when there is no port\nassociated with the security group. Available only in OpenStack environments\nwith the `stateful-security-group` extension. Defaults to true.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A set of string tags for the security group.\n"},"tenantId":{"type":"string","description":"The owner of the security group. Required if admin\nwants to create a port for another tenant. Changing this creates a new\nsecurity group.\n"}},"required":["allTags","description","name","region","stateful","tenantId"],"inputProperties":{"deleteDefaultRules":{"type":"boolean","description":"Whether or not to delete the default\negress security rules. This is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e by default. See the below note\nfor more information.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"A unique name for the security group.\n"},"name":{"type":"string","description":"A unique name for the security group.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to create a port. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nsecurity group.\n","willReplaceOnChanges":true},"stateful":{"type":"boolean","description":"Indicates if the security group is stateful or\nstateless. Update of the stateful argument is allowed when there is no port\nassociated with the security group. Available only in OpenStack environments\nwith the `stateful-security-group` extension. Defaults to true.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A set of string tags for the security group.\n"},"tenantId":{"type":"string","description":"The owner of the security group. Required if admin\nwants to create a port for another tenant. Changing this creates a new\nsecurity group.\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering SecGroup resources.\n","properties":{"allTags":{"type":"array","items":{"type":"string"},"description":"The collection of tags assigned on the security group, which have\nbeen explicitly and implicitly added.\n"},"deleteDefaultRules":{"type":"boolean","description":"Whether or not to delete the default\negress security rules. This is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e by default. See the below note\nfor more information.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"A unique name for the security group.\n"},"name":{"type":"string","description":"A unique name for the security group.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to create a port. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nsecurity group.\n","willReplaceOnChanges":true},"stateful":{"type":"boolean","description":"Indicates if the security group is stateful or\nstateless. Update of the stateful argument is allowed when there is no port\nassociated with the security group. Available only in OpenStack environments\nwith the `stateful-security-group` extension. Defaults to true.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A set of string tags for the security group.\n"},"tenantId":{"type":"string","description":"The owner of the security group. Required if admin\nwants to create a port for another tenant. Changing this creates a new\nsecurity group.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:networking/secGroupRule:SecGroupRule":{"description":"Manages a V2 neutron security group rule resource within OpenStack.\nUnlike Nova security groups, neutron separates the group from the rules\nand also allows an admin to target a specific tenant_id.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst secgroup1 = new openstack.networking.SecGroup(\"secgroup_1\", {\n    name: \"secgroup_1\",\n    description: \"My neutron security group\",\n});\nconst secgroupRule1 = new openstack.networking.SecGroupRule(\"secgroup_rule_1\", {\n    direction: \"ingress\",\n    ethertype: \"IPv4\",\n    protocol: \"tcp\",\n    portRangeMin: 22,\n    portRangeMax: 22,\n    remoteIpPrefix: \"0.0.0.0/0\",\n    securityGroupId: secgroup1.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nsecgroup1 = openstack.networking.SecGroup(\"secgroup_1\",\n    name=\"secgroup_1\",\n    description=\"My neutron security group\")\nsecgroup_rule1 = openstack.networking.SecGroupRule(\"secgroup_rule_1\",\n    direction=\"ingress\",\n    ethertype=\"IPv4\",\n    protocol=\"tcp\",\n    port_range_min=22,\n    port_range_max=22,\n    remote_ip_prefix=\"0.0.0.0/0\",\n    security_group_id=secgroup1.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var secgroup1 = new OpenStack.Networking.SecGroup(\"secgroup_1\", new()\n    {\n        Name = \"secgroup_1\",\n        Description = \"My neutron security group\",\n    });\n\n    var secgroupRule1 = new OpenStack.Networking.SecGroupRule(\"secgroup_rule_1\", new()\n    {\n        Direction = \"ingress\",\n        Ethertype = \"IPv4\",\n        Protocol = \"tcp\",\n        PortRangeMin = 22,\n        PortRangeMax = 22,\n        RemoteIpPrefix = \"0.0.0.0/0\",\n        SecurityGroupId = secgroup1.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsecgroup1, err := networking.NewSecGroup(ctx, \"secgroup_1\", \u0026networking.SecGroupArgs{\n\t\t\tName:        pulumi.String(\"secgroup_1\"),\n\t\t\tDescription: pulumi.String(\"My neutron security group\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networking.NewSecGroupRule(ctx, \"secgroup_rule_1\", \u0026networking.SecGroupRuleArgs{\n\t\t\tDirection:       pulumi.String(\"ingress\"),\n\t\t\tEthertype:       pulumi.String(\"IPv4\"),\n\t\t\tProtocol:        pulumi.String(\"tcp\"),\n\t\t\tPortRangeMin:    pulumi.Int(22),\n\t\t\tPortRangeMax:    pulumi.Int(22),\n\t\t\tRemoteIpPrefix:  pulumi.String(\"0.0.0.0/0\"),\n\t\t\tSecurityGroupId: secgroup1.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.openstack.networking.SecGroup;\nimport com.pulumi.openstack.networking.SecGroupArgs;\nimport com.pulumi.openstack.networking.SecGroupRule;\nimport com.pulumi.openstack.networking.SecGroupRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 secgroup1 = new SecGroup(\"secgroup1\", SecGroupArgs.builder()\n            .name(\"secgroup_1\")\n            .description(\"My neutron security group\")\n            .build());\n\n        var secgroupRule1 = new SecGroupRule(\"secgroupRule1\", SecGroupRuleArgs.builder()\n            .direction(\"ingress\")\n            .ethertype(\"IPv4\")\n            .protocol(\"tcp\")\n            .portRangeMin(22)\n            .portRangeMax(22)\n            .remoteIpPrefix(\"0.0.0.0/0\")\n            .securityGroupId(secgroup1.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  secgroup1:\n    type: openstack:networking:SecGroup\n    name: secgroup_1\n    properties:\n      name: secgroup_1\n      description: My neutron security group\n  secgroupRule1:\n    type: openstack:networking:SecGroupRule\n    name: secgroup_rule_1\n    properties:\n      direction: ingress\n      ethertype: IPv4\n      protocol: tcp\n      portRangeMin: 22\n      portRangeMax: 22\n      remoteIpPrefix: 0.0.0.0/0\n      securityGroupId: ${secgroup1.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003e **Note:** To expose the full port-range 1:65535, use \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e for \u003cspan pulumi-lang-nodejs=\"`portRangeMin`\" pulumi-lang-dotnet=\"`PortRangeMin`\" pulumi-lang-go=\"`portRangeMin`\" pulumi-lang-python=\"`port_range_min`\" pulumi-lang-yaml=\"`portRangeMin`\" pulumi-lang-java=\"`portRangeMin`\"\u003e`port_range_min`\u003c/span\u003e\nand \u003cspan pulumi-lang-nodejs=\"`portRangeMax`\" pulumi-lang-dotnet=\"`PortRangeMax`\" pulumi-lang-go=\"`portRangeMax`\" pulumi-lang-python=\"`port_range_max`\" pulumi-lang-yaml=\"`portRangeMax`\" pulumi-lang-java=\"`portRangeMax`\"\u003e`port_range_max`\u003c/span\u003e.\n\n## Import\n\nSecurity Group Rules can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:networking/secGroupRule:SecGroupRule secgroup_rule_1 aeb68ee3-6e9d-4256-955c-9584a6212745\n```\n","properties":{"description":{"type":"string","description":"A description of the rule. Changing this creates a new security group rule.\n"},"direction":{"type":"string","description":"The direction of the rule, valid values are __ingress__\nor __egress__. Changing this creates a new security group rule.\n"},"ethertype":{"type":"string","description":"The layer 3 protocol type, valid values are __IPv4__\nor __IPv6__. Changing this creates a new security group rule.\n"},"portRangeMax":{"type":"integer","description":"The higher part of the allowed port range, valid\ninteger value needs to be between 1 and 65535. Changing this creates a new\nsecurity group rule.\n"},"portRangeMin":{"type":"integer","description":"The lower part of the allowed port range, valid\ninteger value needs to be between 1 and 65535. Changing this creates a new\nsecurity group rule.\n"},"protocol":{"type":"string","description":"The layer 4 protocol type, valid values are\nfollowing. Changing this creates a new security group rule. This is required\nif you want to specify a port range.\n* empty string or omitted (any protocol)\n* integer value between 0 and 255 (valid IP protocol number)\n* __tcp__\n* __udp__\n* __icmp__\n* __ah__\n* __dccp__\n* __egp__\n* __esp__\n* __gre__\n* __igmp__\n* __ipv6-encap__\n* __ipv6-frag__\n* __ipv6-icmp__\n* __ipv6-nonxt__\n* __ipv6-opts__\n* __ipv6-route__\n* __ospf__\n* __pgm__\n* __rsvp__\n* __sctp__\n* __udplite__\n* __vrrp__\n* __ipip__\n"},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to create a port. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nsecurity group rule.\n"},"remoteAddressGroupId":{"type":"string","description":"The remote address group id, the value\nneeds to be an OpenStack ID of an address group in the same tenant. Changing\nthis creates a new security group rule. This argument is mutually exclusive\nwith \u003cspan pulumi-lang-nodejs=\"`remoteIpPrefix`\" pulumi-lang-dotnet=\"`RemoteIpPrefix`\" pulumi-lang-go=\"`remoteIpPrefix`\" pulumi-lang-python=\"`remote_ip_prefix`\" pulumi-lang-yaml=\"`remoteIpPrefix`\" pulumi-lang-java=\"`remoteIpPrefix`\"\u003e`remote_ip_prefix`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`remoteGroupId`\" pulumi-lang-dotnet=\"`RemoteGroupId`\" pulumi-lang-go=\"`remoteGroupId`\" pulumi-lang-python=\"`remote_group_id`\" pulumi-lang-yaml=\"`remoteGroupId`\" pulumi-lang-java=\"`remoteGroupId`\"\u003e`remote_group_id`\u003c/span\u003e.\n"},"remoteGroupId":{"type":"string","description":"The remote group id, the value needs to be an\nOpenstack ID of a security group in the same tenant. Changing this creates\na new security group rule.\n"},"remoteIpPrefix":{"type":"string","description":"The remote CIDR, the value needs to be a valid\nCIDR (i.e. 192.168.0.0/16). Changing this creates a new security group rule.\n"},"securityGroupId":{"type":"string","description":"The security group id the rule should belong\nto, the value needs to be an Openstack ID of a security group in the same\ntenant. Changing this creates a new security group rule.\n"},"tenantId":{"type":"string","description":"The owner of the security group. Required if admin\nwants to create a port for another tenant. Changing this creates a new\nsecurity group rule.\n"}},"required":["direction","ethertype","region","remoteAddressGroupId","remoteGroupId","remoteIpPrefix","securityGroupId","tenantId"],"inputProperties":{"description":{"type":"string","description":"A description of the rule. Changing this creates a new security group rule.\n","willReplaceOnChanges":true},"direction":{"type":"string","description":"The direction of the rule, valid values are __ingress__\nor __egress__. Changing this creates a new security group rule.\n","willReplaceOnChanges":true},"ethertype":{"type":"string","description":"The layer 3 protocol type, valid values are __IPv4__\nor __IPv6__. Changing this creates a new security group rule.\n","willReplaceOnChanges":true},"portRangeMax":{"type":"integer","description":"The higher part of the allowed port range, valid\ninteger value needs to be between 1 and 65535. Changing this creates a new\nsecurity group rule.\n","willReplaceOnChanges":true},"portRangeMin":{"type":"integer","description":"The lower part of the allowed port range, valid\ninteger value needs to be between 1 and 65535. Changing this creates a new\nsecurity group rule.\n","willReplaceOnChanges":true},"protocol":{"type":"string","description":"The layer 4 protocol type, valid values are\nfollowing. Changing this creates a new security group rule. This is required\nif you want to specify a port range.\n* empty string or omitted (any protocol)\n* integer value between 0 and 255 (valid IP protocol number)\n* __tcp__\n* __udp__\n* __icmp__\n* __ah__\n* __dccp__\n* __egp__\n* __esp__\n* __gre__\n* __igmp__\n* __ipv6-encap__\n* __ipv6-frag__\n* __ipv6-icmp__\n* __ipv6-nonxt__\n* __ipv6-opts__\n* __ipv6-route__\n* __ospf__\n* __pgm__\n* __rsvp__\n* __sctp__\n* __udplite__\n* __vrrp__\n* __ipip__\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to create a port. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nsecurity group rule.\n","willReplaceOnChanges":true},"remoteAddressGroupId":{"type":"string","description":"The remote address group id, the value\nneeds to be an OpenStack ID of an address group in the same tenant. Changing\nthis creates a new security group rule. This argument is mutually exclusive\nwith \u003cspan pulumi-lang-nodejs=\"`remoteIpPrefix`\" pulumi-lang-dotnet=\"`RemoteIpPrefix`\" pulumi-lang-go=\"`remoteIpPrefix`\" pulumi-lang-python=\"`remote_ip_prefix`\" pulumi-lang-yaml=\"`remoteIpPrefix`\" pulumi-lang-java=\"`remoteIpPrefix`\"\u003e`remote_ip_prefix`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`remoteGroupId`\" pulumi-lang-dotnet=\"`RemoteGroupId`\" pulumi-lang-go=\"`remoteGroupId`\" pulumi-lang-python=\"`remote_group_id`\" pulumi-lang-yaml=\"`remoteGroupId`\" pulumi-lang-java=\"`remoteGroupId`\"\u003e`remote_group_id`\u003c/span\u003e.\n","willReplaceOnChanges":true},"remoteGroupId":{"type":"string","description":"The remote group id, the value needs to be an\nOpenstack ID of a security group in the same tenant. Changing this creates\na new security group rule.\n","willReplaceOnChanges":true},"remoteIpPrefix":{"type":"string","description":"The remote CIDR, the value needs to be a valid\nCIDR (i.e. 192.168.0.0/16). Changing this creates a new security group rule.\n","willReplaceOnChanges":true},"securityGroupId":{"type":"string","description":"The security group id the rule should belong\nto, the value needs to be an Openstack ID of a security group in the same\ntenant. Changing this creates a new security group rule.\n","willReplaceOnChanges":true},"tenantId":{"type":"string","description":"The owner of the security group. Required if admin\nwants to create a port for another tenant. Changing this creates a new\nsecurity group rule.\n","willReplaceOnChanges":true}},"requiredInputs":["direction","ethertype","securityGroupId"],"stateInputs":{"description":"Input properties used for looking up and filtering SecGroupRule resources.\n","properties":{"description":{"type":"string","description":"A description of the rule. Changing this creates a new security group rule.\n","willReplaceOnChanges":true},"direction":{"type":"string","description":"The direction of the rule, valid values are __ingress__\nor __egress__. Changing this creates a new security group rule.\n","willReplaceOnChanges":true},"ethertype":{"type":"string","description":"The layer 3 protocol type, valid values are __IPv4__\nor __IPv6__. Changing this creates a new security group rule.\n","willReplaceOnChanges":true},"portRangeMax":{"type":"integer","description":"The higher part of the allowed port range, valid\ninteger value needs to be between 1 and 65535. Changing this creates a new\nsecurity group rule.\n","willReplaceOnChanges":true},"portRangeMin":{"type":"integer","description":"The lower part of the allowed port range, valid\ninteger value needs to be between 1 and 65535. Changing this creates a new\nsecurity group rule.\n","willReplaceOnChanges":true},"protocol":{"type":"string","description":"The layer 4 protocol type, valid values are\nfollowing. Changing this creates a new security group rule. This is required\nif you want to specify a port range.\n* empty string or omitted (any protocol)\n* integer value between 0 and 255 (valid IP protocol number)\n* __tcp__\n* __udp__\n* __icmp__\n* __ah__\n* __dccp__\n* __egp__\n* __esp__\n* __gre__\n* __igmp__\n* __ipv6-encap__\n* __ipv6-frag__\n* __ipv6-icmp__\n* __ipv6-nonxt__\n* __ipv6-opts__\n* __ipv6-route__\n* __ospf__\n* __pgm__\n* __rsvp__\n* __sctp__\n* __udplite__\n* __vrrp__\n* __ipip__\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to create a port. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nsecurity group rule.\n","willReplaceOnChanges":true},"remoteAddressGroupId":{"type":"string","description":"The remote address group id, the value\nneeds to be an OpenStack ID of an address group in the same tenant. Changing\nthis creates a new security group rule. This argument is mutually exclusive\nwith \u003cspan pulumi-lang-nodejs=\"`remoteIpPrefix`\" pulumi-lang-dotnet=\"`RemoteIpPrefix`\" pulumi-lang-go=\"`remoteIpPrefix`\" pulumi-lang-python=\"`remote_ip_prefix`\" pulumi-lang-yaml=\"`remoteIpPrefix`\" pulumi-lang-java=\"`remoteIpPrefix`\"\u003e`remote_ip_prefix`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`remoteGroupId`\" pulumi-lang-dotnet=\"`RemoteGroupId`\" pulumi-lang-go=\"`remoteGroupId`\" pulumi-lang-python=\"`remote_group_id`\" pulumi-lang-yaml=\"`remoteGroupId`\" pulumi-lang-java=\"`remoteGroupId`\"\u003e`remote_group_id`\u003c/span\u003e.\n","willReplaceOnChanges":true},"remoteGroupId":{"type":"string","description":"The remote group id, the value needs to be an\nOpenstack ID of a security group in the same tenant. Changing this creates\na new security group rule.\n","willReplaceOnChanges":true},"remoteIpPrefix":{"type":"string","description":"The remote CIDR, the value needs to be a valid\nCIDR (i.e. 192.168.0.0/16). Changing this creates a new security group rule.\n","willReplaceOnChanges":true},"securityGroupId":{"type":"string","description":"The security group id the rule should belong\nto, the value needs to be an Openstack ID of a security group in the same\ntenant. Changing this creates a new security group rule.\n","willReplaceOnChanges":true},"tenantId":{"type":"string","description":"The owner of the security group. Required if admin\nwants to create a port for another tenant. Changing this creates a new\nsecurity group rule.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:networking/segmentV2:SegmentV2":{"description":"Manages a Neutron network segment resource within OpenStack.\n\n\u003e **Note:** This resource is only available if the Neutron service is\nconfigured with the \u003cspan pulumi-lang-nodejs=\"`segments`\" pulumi-lang-dotnet=\"`Segments`\" pulumi-lang-go=\"`segments`\" pulumi-lang-python=\"`segments`\" pulumi-lang-yaml=\"`segments`\" pulumi-lang-java=\"`segments`\"\u003e`segments`\u003c/span\u003e extension.\n\n\u003e **Note:** This ussually requires admin privileges to create or manage\nsegments.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst net1 = new openstack.networking.Network(\"net_1\", {name: \"demo-net\"});\nconst segment1 = new openstack.networking.SegmentV2(\"segment_1\", {\n    name: \"flat-segment\",\n    description: \"Example flat segment\",\n    networkId: net1.id,\n    networkType: \"flat\",\n    physicalNetwork: \"public\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nnet1 = openstack.networking.Network(\"net_1\", name=\"demo-net\")\nsegment1 = openstack.networking.SegmentV2(\"segment_1\",\n    name=\"flat-segment\",\n    description=\"Example flat segment\",\n    network_id=net1.id,\n    network_type=\"flat\",\n    physical_network=\"public\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var net1 = new OpenStack.Networking.Network(\"net_1\", new()\n    {\n        Name = \"demo-net\",\n    });\n\n    var segment1 = new OpenStack.Networking.SegmentV2(\"segment_1\", new()\n    {\n        Name = \"flat-segment\",\n        Description = \"Example flat segment\",\n        NetworkId = net1.Id,\n        NetworkType = \"flat\",\n        PhysicalNetwork = \"public\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnet1, err := networking.NewNetwork(ctx, \"net_1\", \u0026networking.NetworkArgs{\n\t\t\tName: pulumi.String(\"demo-net\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networking.NewSegmentV2(ctx, \"segment_1\", \u0026networking.SegmentV2Args{\n\t\t\tName:            pulumi.String(\"flat-segment\"),\n\t\t\tDescription:     pulumi.String(\"Example flat segment\"),\n\t\t\tNetworkId:       net1.ID(),\n\t\t\tNetworkType:     pulumi.String(\"flat\"),\n\t\t\tPhysicalNetwork: pulumi.String(\"public\"),\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.openstack.networking.Network;\nimport com.pulumi.openstack.networking.NetworkArgs;\nimport com.pulumi.openstack.networking.SegmentV2;\nimport com.pulumi.openstack.networking.SegmentV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 net1 = new Network(\"net1\", NetworkArgs.builder()\n            .name(\"demo-net\")\n            .build());\n\n        var segment1 = new SegmentV2(\"segment1\", SegmentV2Args.builder()\n            .name(\"flat-segment\")\n            .description(\"Example flat segment\")\n            .networkId(net1.id())\n            .networkType(\"flat\")\n            .physicalNetwork(\"public\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  net1:\n    type: openstack:networking:Network\n    name: net_1\n    properties:\n      name: demo-net\n  segment1:\n    type: openstack:networking:SegmentV2\n    name: segment_1\n    properties:\n      name: flat-segment\n      description: Example flat segment\n      networkId: ${net1.id}\n      networkType: flat\n      physicalNetwork: public\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource can be imported by specifying the segment ID:\n\n```sh\n$ pulumi import openstack:networking/segmentV2:SegmentV2 segment1 a5e3a494-26ee-4fde-ad26-2d846c47072e\n```\n\n","properties":{"createdAt":{"type":"string","description":"Creation timestamp (RFC3339 format).\n"},"description":{"type":"string","description":"A description for the segment.\n"},"name":{"type":"string","description":"A name for the segment.\n"},"networkId":{"type":"string","description":"The UUID of the network this segment belongs to.\nChanging this will create a new segment.\n"},"networkType":{"type":"string","description":"The network type. Valid values depend on the\nbackend (e.g., \u003cspan pulumi-lang-nodejs=\"`vlan`\" pulumi-lang-dotnet=\"`Vlan`\" pulumi-lang-go=\"`vlan`\" pulumi-lang-python=\"`vlan`\" pulumi-lang-yaml=\"`vlan`\" pulumi-lang-java=\"`vlan`\"\u003e`vlan`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`vxlan`\" pulumi-lang-dotnet=\"`Vxlan`\" pulumi-lang-go=\"`vxlan`\" pulumi-lang-python=\"`vxlan`\" pulumi-lang-yaml=\"`vxlan`\" pulumi-lang-java=\"`vxlan`\"\u003e`vxlan`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`flat`\" pulumi-lang-dotnet=\"`Flat`\" pulumi-lang-go=\"`flat`\" pulumi-lang-python=\"`flat`\" pulumi-lang-yaml=\"`flat`\" pulumi-lang-java=\"`flat`\"\u003e`flat`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gre`\" pulumi-lang-dotnet=\"`Gre`\" pulumi-lang-go=\"`gre`\" pulumi-lang-python=\"`gre`\" pulumi-lang-yaml=\"`gre`\" pulumi-lang-java=\"`gre`\"\u003e`gre`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`geneve`\" pulumi-lang-dotnet=\"`Geneve`\" pulumi-lang-go=\"`geneve`\" pulumi-lang-python=\"`geneve`\" pulumi-lang-yaml=\"`geneve`\" pulumi-lang-java=\"`geneve`\"\u003e`geneve`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`local`\" pulumi-lang-dotnet=\"`Local`\" pulumi-lang-go=\"`local`\" pulumi-lang-python=\"`local`\" pulumi-lang-yaml=\"`local`\" pulumi-lang-java=\"`local`\"\u003e`local`\u003c/span\u003e). Changing\nthis will create a new segment.\n"},"physicalNetwork":{"type":"string","description":"The name of the physical network. Changing this\nwill create a new segment.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron network. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nsegment.\n"},"revisionNumber":{"type":"integer","description":"The revision number of the segment.\n"},"segmentationId":{"type":"integer","description":"A segmentation identifier. Changing is allowed\nonly for \u003cspan pulumi-lang-nodejs=\"`vlan`\" pulumi-lang-dotnet=\"`Vlan`\" pulumi-lang-go=\"`vlan`\" pulumi-lang-python=\"`vlan`\" pulumi-lang-yaml=\"`vlan`\" pulumi-lang-java=\"`vlan`\"\u003e`vlan`\u003c/span\u003e.\n"},"updatedAt":{"type":"string","description":"Last update timestamp (RFC3339 format).\n"}},"required":["createdAt","name","networkId","networkType","region","revisionNumber","segmentationId","updatedAt"],"inputProperties":{"description":{"type":"string","description":"A description for the segment.\n"},"name":{"type":"string","description":"A name for the segment.\n"},"networkId":{"type":"string","description":"The UUID of the network this segment belongs to.\nChanging this will create a new segment.\n","willReplaceOnChanges":true},"networkType":{"type":"string","description":"The network type. Valid values depend on the\nbackend (e.g., \u003cspan pulumi-lang-nodejs=\"`vlan`\" pulumi-lang-dotnet=\"`Vlan`\" pulumi-lang-go=\"`vlan`\" pulumi-lang-python=\"`vlan`\" pulumi-lang-yaml=\"`vlan`\" pulumi-lang-java=\"`vlan`\"\u003e`vlan`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`vxlan`\" pulumi-lang-dotnet=\"`Vxlan`\" pulumi-lang-go=\"`vxlan`\" pulumi-lang-python=\"`vxlan`\" pulumi-lang-yaml=\"`vxlan`\" pulumi-lang-java=\"`vxlan`\"\u003e`vxlan`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`flat`\" pulumi-lang-dotnet=\"`Flat`\" pulumi-lang-go=\"`flat`\" pulumi-lang-python=\"`flat`\" pulumi-lang-yaml=\"`flat`\" pulumi-lang-java=\"`flat`\"\u003e`flat`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gre`\" pulumi-lang-dotnet=\"`Gre`\" pulumi-lang-go=\"`gre`\" pulumi-lang-python=\"`gre`\" pulumi-lang-yaml=\"`gre`\" pulumi-lang-java=\"`gre`\"\u003e`gre`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`geneve`\" pulumi-lang-dotnet=\"`Geneve`\" pulumi-lang-go=\"`geneve`\" pulumi-lang-python=\"`geneve`\" pulumi-lang-yaml=\"`geneve`\" pulumi-lang-java=\"`geneve`\"\u003e`geneve`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`local`\" pulumi-lang-dotnet=\"`Local`\" pulumi-lang-go=\"`local`\" pulumi-lang-python=\"`local`\" pulumi-lang-yaml=\"`local`\" pulumi-lang-java=\"`local`\"\u003e`local`\u003c/span\u003e). Changing\nthis will create a new segment.\n","willReplaceOnChanges":true},"physicalNetwork":{"type":"string","description":"The name of the physical network. Changing this\nwill create a new segment.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron network. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nsegment.\n","willReplaceOnChanges":true},"segmentationId":{"type":"integer","description":"A segmentation identifier. Changing is allowed\nonly for \u003cspan pulumi-lang-nodejs=\"`vlan`\" pulumi-lang-dotnet=\"`Vlan`\" pulumi-lang-go=\"`vlan`\" pulumi-lang-python=\"`vlan`\" pulumi-lang-yaml=\"`vlan`\" pulumi-lang-java=\"`vlan`\"\u003e`vlan`\u003c/span\u003e.\n"}},"requiredInputs":["networkId","networkType"],"stateInputs":{"description":"Input properties used for looking up and filtering SegmentV2 resources.\n","properties":{"createdAt":{"type":"string","description":"Creation timestamp (RFC3339 format).\n"},"description":{"type":"string","description":"A description for the segment.\n"},"name":{"type":"string","description":"A name for the segment.\n"},"networkId":{"type":"string","description":"The UUID of the network this segment belongs to.\nChanging this will create a new segment.\n","willReplaceOnChanges":true},"networkType":{"type":"string","description":"The network type. Valid values depend on the\nbackend (e.g., \u003cspan pulumi-lang-nodejs=\"`vlan`\" pulumi-lang-dotnet=\"`Vlan`\" pulumi-lang-go=\"`vlan`\" pulumi-lang-python=\"`vlan`\" pulumi-lang-yaml=\"`vlan`\" pulumi-lang-java=\"`vlan`\"\u003e`vlan`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`vxlan`\" pulumi-lang-dotnet=\"`Vxlan`\" pulumi-lang-go=\"`vxlan`\" pulumi-lang-python=\"`vxlan`\" pulumi-lang-yaml=\"`vxlan`\" pulumi-lang-java=\"`vxlan`\"\u003e`vxlan`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`flat`\" pulumi-lang-dotnet=\"`Flat`\" pulumi-lang-go=\"`flat`\" pulumi-lang-python=\"`flat`\" pulumi-lang-yaml=\"`flat`\" pulumi-lang-java=\"`flat`\"\u003e`flat`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gre`\" pulumi-lang-dotnet=\"`Gre`\" pulumi-lang-go=\"`gre`\" pulumi-lang-python=\"`gre`\" pulumi-lang-yaml=\"`gre`\" pulumi-lang-java=\"`gre`\"\u003e`gre`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`geneve`\" pulumi-lang-dotnet=\"`Geneve`\" pulumi-lang-go=\"`geneve`\" pulumi-lang-python=\"`geneve`\" pulumi-lang-yaml=\"`geneve`\" pulumi-lang-java=\"`geneve`\"\u003e`geneve`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`local`\" pulumi-lang-dotnet=\"`Local`\" pulumi-lang-go=\"`local`\" pulumi-lang-python=\"`local`\" pulumi-lang-yaml=\"`local`\" pulumi-lang-java=\"`local`\"\u003e`local`\u003c/span\u003e). Changing\nthis will create a new segment.\n","willReplaceOnChanges":true},"physicalNetwork":{"type":"string","description":"The name of the physical network. Changing this\nwill create a new segment.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron network. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nsegment.\n","willReplaceOnChanges":true},"revisionNumber":{"type":"integer","description":"The revision number of the segment.\n"},"segmentationId":{"type":"integer","description":"A segmentation identifier. Changing is allowed\nonly for \u003cspan pulumi-lang-nodejs=\"`vlan`\" pulumi-lang-dotnet=\"`Vlan`\" pulumi-lang-go=\"`vlan`\" pulumi-lang-python=\"`vlan`\" pulumi-lang-yaml=\"`vlan`\" pulumi-lang-java=\"`vlan`\"\u003e`vlan`\u003c/span\u003e.\n"},"updatedAt":{"type":"string","description":"Last update timestamp (RFC3339 format).\n"}},"type":"object"}},"openstack:networking/subnet:Subnet":{"description":"Manages a V2 Neutron subnet resource within OpenStack.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst network1 = new openstack.networking.Network(\"network_1\", {\n    name: \"tf_test_network\",\n    adminStateUp: true,\n});\nconst subnet1 = new openstack.networking.Subnet(\"subnet_1\", {\n    networkId: network1.id,\n    cidr: \"192.168.199.0/24\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nnetwork1 = openstack.networking.Network(\"network_1\",\n    name=\"tf_test_network\",\n    admin_state_up=True)\nsubnet1 = openstack.networking.Subnet(\"subnet_1\",\n    network_id=network1.id,\n    cidr=\"192.168.199.0/24\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var network1 = new OpenStack.Networking.Network(\"network_1\", new()\n    {\n        Name = \"tf_test_network\",\n        AdminStateUp = true,\n    });\n\n    var subnet1 = new OpenStack.Networking.Subnet(\"subnet_1\", new()\n    {\n        NetworkId = network1.Id,\n        Cidr = \"192.168.199.0/24\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork1, err := networking.NewNetwork(ctx, \"network_1\", \u0026networking.NetworkArgs{\n\t\t\tName:         pulumi.String(\"tf_test_network\"),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networking.NewSubnet(ctx, \"subnet_1\", \u0026networking.SubnetArgs{\n\t\t\tNetworkId: network1.ID(),\n\t\t\tCidr:      pulumi.String(\"192.168.199.0/24\"),\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.openstack.networking.Network;\nimport com.pulumi.openstack.networking.NetworkArgs;\nimport com.pulumi.openstack.networking.Subnet;\nimport com.pulumi.openstack.networking.SubnetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 network1 = new Network(\"network1\", NetworkArgs.builder()\n            .name(\"tf_test_network\")\n            .adminStateUp(true)\n            .build());\n\n        var subnet1 = new Subnet(\"subnet1\", SubnetArgs.builder()\n            .networkId(network1.id())\n            .cidr(\"192.168.199.0/24\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  network1:\n    type: openstack:networking:Network\n    name: network_1\n    properties:\n      name: tf_test_network\n      adminStateUp: 'true'\n  subnet1:\n    type: openstack:networking:Subnet\n    name: subnet_1\n    properties:\n      networkId: ${network1.id}\n      cidr: 192.168.199.0/24\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSubnets can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:networking/subnet:Subnet subnet_1 da4faf16-5546-41e4-8330-4d0002b74048\n```\n","properties":{"allTags":{"type":"array","items":{"type":"string"},"description":"The collection of ags assigned on the subnet, which have been\nexplicitly and implicitly added.\n"},"allocationPools":{"type":"array","items":{"$ref":"#/types/openstack:networking/SubnetAllocationPool:SubnetAllocationPool"},"description":"A block declaring the start and end range of\nthe IP addresses available for use with DHCP in this subnet. Multiple\n\u003cspan pulumi-lang-nodejs=\"`allocationPool`\" pulumi-lang-dotnet=\"`AllocationPool`\" pulumi-lang-go=\"`allocationPool`\" pulumi-lang-python=\"`allocation_pool`\" pulumi-lang-yaml=\"`allocationPool`\" pulumi-lang-java=\"`allocationPool`\"\u003e`allocation_pool`\u003c/span\u003e blocks can be declared, providing the subnet with more\nthan one range of IP addresses to use with DHCP. However, each IP range\nmust be from the same CIDR that the subnet is part of.\nThe \u003cspan pulumi-lang-nodejs=\"`allocationPool`\" pulumi-lang-dotnet=\"`AllocationPool`\" pulumi-lang-go=\"`allocationPool`\" pulumi-lang-python=\"`allocation_pool`\" pulumi-lang-yaml=\"`allocationPool`\" pulumi-lang-java=\"`allocationPool`\"\u003e`allocation_pool`\u003c/span\u003e block is documented below.\n"},"cidr":{"type":"string","description":"CIDR representing IP range for this subnet, based on IP\nversion. You can omit this option if you are creating a subnet from a\nsubnet pool.\n"},"description":{"type":"string","description":"Human-readable description of the subnet. Changing this\nupdates the name of the existing subnet.\n"},"dnsNameservers":{"type":"array","items":{"type":"string"},"description":"An array of DNS name server names used by hosts\nin this subnet. Changing this updates the DNS name servers for the existing\nsubnet.\n"},"dnsPublishFixedIp":{"type":"boolean","description":"Whether to publish DNS records for IPs\nfrom this subnet. Defaults is false.\n"},"enableDhcp":{"type":"boolean","description":"The administrative state of the network.\nAcceptable values are \"true\" and \"false\". Changing this value enables or\ndisables the DHCP capabilities of the existing subnet. Defaults to true.\n"},"gatewayIp":{"type":"string","description":"Default gateway used by devices in this subnet.\nLeaving this blank and not setting \u003cspan pulumi-lang-nodejs=\"`noGateway`\" pulumi-lang-dotnet=\"`NoGateway`\" pulumi-lang-go=\"`noGateway`\" pulumi-lang-python=\"`no_gateway`\" pulumi-lang-yaml=\"`noGateway`\" pulumi-lang-java=\"`noGateway`\"\u003e`no_gateway`\u003c/span\u003e will cause a default\ngateway of `.1` to be used. Changing this updates the gateway IP of the\nexisting subnet.\n"},"ipVersion":{"type":"integer","description":"IP version, either 4 (default) or 6. Changing this creates a\nnew subnet.\n"},"ipv6AddressMode":{"type":"string","description":"The IPv6 address mode. Valid values are\n`dhcpv6-stateful`, `dhcpv6-stateless`, or \u003cspan pulumi-lang-nodejs=\"`slaac`\" pulumi-lang-dotnet=\"`Slaac`\" pulumi-lang-go=\"`slaac`\" pulumi-lang-python=\"`slaac`\" pulumi-lang-yaml=\"`slaac`\" pulumi-lang-java=\"`slaac`\"\u003e`slaac`\u003c/span\u003e.\n"},"ipv6RaMode":{"type":"string","description":"The IPv6 Router Advertisement mode. Valid values\nare `dhcpv6-stateful`, `dhcpv6-stateless`, or \u003cspan pulumi-lang-nodejs=\"`slaac`\" pulumi-lang-dotnet=\"`Slaac`\" pulumi-lang-go=\"`slaac`\" pulumi-lang-python=\"`slaac`\" pulumi-lang-yaml=\"`slaac`\" pulumi-lang-java=\"`slaac`\"\u003e`slaac`\u003c/span\u003e.\n"},"name":{"type":"string","description":"The name of the subnet. Changing this updates the name of\nthe existing subnet.\n"},"networkId":{"type":"string","description":"The UUID of the parent network. Changing this\ncreates a new subnet.\n"},"noGateway":{"type":"boolean","description":"Do not set a gateway IP on this subnet. Changing\nthis removes or adds a default gateway IP of the existing subnet.\n"},"prefixLength":{"type":"integer","description":"The prefix length to use when creating a subnet\nfrom a subnet pool. The default subnet pool prefix length that was defined\nwhen creating the subnet pool will be used if not provided. Changing this\ncreates a new subnet.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron subnet. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nsubnet.\n"},"segmentId":{"type":"string","description":"The segment ID of the subnet. This is used to\nspecify which segment the subnet belongs to when using Neutron's routed\nprovider networks. Available when neutron segment extension is enabled.\n"},"serviceTypes":{"type":"array","items":{"type":"string"},"description":"An array of service types used by the subnet.\nChanging this updates the service types for the existing subnet.\n"},"subnetpoolId":{"type":"string","description":"The ID of the subnetpool associated with the subnet.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A set of string tags for the subnet.\n"},"tenantId":{"type":"string","description":"The owner of the subnet. Required if admin wants to\ncreate a subnet for another tenant. Changing this creates a new subnet.\n"},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n"}},"required":["allTags","allocationPools","cidr","gatewayIp","ipv6AddressMode","ipv6RaMode","name","networkId","region","serviceTypes","tenantId"],"inputProperties":{"allocationPools":{"type":"array","items":{"$ref":"#/types/openstack:networking/SubnetAllocationPool:SubnetAllocationPool"},"description":"A block declaring the start and end range of\nthe IP addresses available for use with DHCP in this subnet. Multiple\n\u003cspan pulumi-lang-nodejs=\"`allocationPool`\" pulumi-lang-dotnet=\"`AllocationPool`\" pulumi-lang-go=\"`allocationPool`\" pulumi-lang-python=\"`allocation_pool`\" pulumi-lang-yaml=\"`allocationPool`\" pulumi-lang-java=\"`allocationPool`\"\u003e`allocation_pool`\u003c/span\u003e blocks can be declared, providing the subnet with more\nthan one range of IP addresses to use with DHCP. However, each IP range\nmust be from the same CIDR that the subnet is part of.\nThe \u003cspan pulumi-lang-nodejs=\"`allocationPool`\" pulumi-lang-dotnet=\"`AllocationPool`\" pulumi-lang-go=\"`allocationPool`\" pulumi-lang-python=\"`allocation_pool`\" pulumi-lang-yaml=\"`allocationPool`\" pulumi-lang-java=\"`allocationPool`\"\u003e`allocation_pool`\u003c/span\u003e block is documented below.\n"},"cidr":{"type":"string","description":"CIDR representing IP range for this subnet, based on IP\nversion. You can omit this option if you are creating a subnet from a\nsubnet pool.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"Human-readable description of the subnet. Changing this\nupdates the name of the existing subnet.\n"},"dnsNameservers":{"type":"array","items":{"type":"string"},"description":"An array of DNS name server names used by hosts\nin this subnet. Changing this updates the DNS name servers for the existing\nsubnet.\n"},"dnsPublishFixedIp":{"type":"boolean","description":"Whether to publish DNS records for IPs\nfrom this subnet. Defaults is false.\n"},"enableDhcp":{"type":"boolean","description":"The administrative state of the network.\nAcceptable values are \"true\" and \"false\". Changing this value enables or\ndisables the DHCP capabilities of the existing subnet. Defaults to true.\n"},"gatewayIp":{"type":"string","description":"Default gateway used by devices in this subnet.\nLeaving this blank and not setting \u003cspan pulumi-lang-nodejs=\"`noGateway`\" pulumi-lang-dotnet=\"`NoGateway`\" pulumi-lang-go=\"`noGateway`\" pulumi-lang-python=\"`no_gateway`\" pulumi-lang-yaml=\"`noGateway`\" pulumi-lang-java=\"`noGateway`\"\u003e`no_gateway`\u003c/span\u003e will cause a default\ngateway of `.1` to be used. Changing this updates the gateway IP of the\nexisting subnet.\n"},"ipVersion":{"type":"integer","description":"IP version, either 4 (default) or 6. Changing this creates a\nnew subnet.\n","willReplaceOnChanges":true},"ipv6AddressMode":{"type":"string","description":"The IPv6 address mode. Valid values are\n`dhcpv6-stateful`, `dhcpv6-stateless`, or \u003cspan pulumi-lang-nodejs=\"`slaac`\" pulumi-lang-dotnet=\"`Slaac`\" pulumi-lang-go=\"`slaac`\" pulumi-lang-python=\"`slaac`\" pulumi-lang-yaml=\"`slaac`\" pulumi-lang-java=\"`slaac`\"\u003e`slaac`\u003c/span\u003e.\n","willReplaceOnChanges":true},"ipv6RaMode":{"type":"string","description":"The IPv6 Router Advertisement mode. Valid values\nare `dhcpv6-stateful`, `dhcpv6-stateless`, or \u003cspan pulumi-lang-nodejs=\"`slaac`\" pulumi-lang-dotnet=\"`Slaac`\" pulumi-lang-go=\"`slaac`\" pulumi-lang-python=\"`slaac`\" pulumi-lang-yaml=\"`slaac`\" pulumi-lang-java=\"`slaac`\"\u003e`slaac`\u003c/span\u003e.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"The name of the subnet. Changing this updates the name of\nthe existing subnet.\n"},"networkId":{"type":"string","description":"The UUID of the parent network. Changing this\ncreates a new subnet.\n","willReplaceOnChanges":true},"noGateway":{"type":"boolean","description":"Do not set a gateway IP on this subnet. Changing\nthis removes or adds a default gateway IP of the existing subnet.\n"},"prefixLength":{"type":"integer","description":"The prefix length to use when creating a subnet\nfrom a subnet pool. The default subnet pool prefix length that was defined\nwhen creating the subnet pool will be used if not provided. Changing this\ncreates a new subnet.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron subnet. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nsubnet.\n","willReplaceOnChanges":true},"segmentId":{"type":"string","description":"The segment ID of the subnet. This is used to\nspecify which segment the subnet belongs to when using Neutron's routed\nprovider networks. Available when neutron segment extension is enabled.\n"},"serviceTypes":{"type":"array","items":{"type":"string"},"description":"An array of service types used by the subnet.\nChanging this updates the service types for the existing subnet.\n"},"subnetpoolId":{"type":"string","description":"The ID of the subnetpool associated with the subnet.\n","willReplaceOnChanges":true},"tags":{"type":"array","items":{"type":"string"},"description":"A set of string tags for the subnet.\n"},"tenantId":{"type":"string","description":"The owner of the subnet. Required if admin wants to\ncreate a subnet for another tenant. Changing this creates a new subnet.\n","willReplaceOnChanges":true},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n","willReplaceOnChanges":true}},"requiredInputs":["networkId"],"stateInputs":{"description":"Input properties used for looking up and filtering Subnet resources.\n","properties":{"allTags":{"type":"array","items":{"type":"string"},"description":"The collection of ags assigned on the subnet, which have been\nexplicitly and implicitly added.\n"},"allocationPools":{"type":"array","items":{"$ref":"#/types/openstack:networking/SubnetAllocationPool:SubnetAllocationPool"},"description":"A block declaring the start and end range of\nthe IP addresses available for use with DHCP in this subnet. Multiple\n\u003cspan pulumi-lang-nodejs=\"`allocationPool`\" pulumi-lang-dotnet=\"`AllocationPool`\" pulumi-lang-go=\"`allocationPool`\" pulumi-lang-python=\"`allocation_pool`\" pulumi-lang-yaml=\"`allocationPool`\" pulumi-lang-java=\"`allocationPool`\"\u003e`allocation_pool`\u003c/span\u003e blocks can be declared, providing the subnet with more\nthan one range of IP addresses to use with DHCP. However, each IP range\nmust be from the same CIDR that the subnet is part of.\nThe \u003cspan pulumi-lang-nodejs=\"`allocationPool`\" pulumi-lang-dotnet=\"`AllocationPool`\" pulumi-lang-go=\"`allocationPool`\" pulumi-lang-python=\"`allocation_pool`\" pulumi-lang-yaml=\"`allocationPool`\" pulumi-lang-java=\"`allocationPool`\"\u003e`allocation_pool`\u003c/span\u003e block is documented below.\n"},"cidr":{"type":"string","description":"CIDR representing IP range for this subnet, based on IP\nversion. You can omit this option if you are creating a subnet from a\nsubnet pool.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"Human-readable description of the subnet. Changing this\nupdates the name of the existing subnet.\n"},"dnsNameservers":{"type":"array","items":{"type":"string"},"description":"An array of DNS name server names used by hosts\nin this subnet. Changing this updates the DNS name servers for the existing\nsubnet.\n"},"dnsPublishFixedIp":{"type":"boolean","description":"Whether to publish DNS records for IPs\nfrom this subnet. Defaults is false.\n"},"enableDhcp":{"type":"boolean","description":"The administrative state of the network.\nAcceptable values are \"true\" and \"false\". Changing this value enables or\ndisables the DHCP capabilities of the existing subnet. Defaults to true.\n"},"gatewayIp":{"type":"string","description":"Default gateway used by devices in this subnet.\nLeaving this blank and not setting \u003cspan pulumi-lang-nodejs=\"`noGateway`\" pulumi-lang-dotnet=\"`NoGateway`\" pulumi-lang-go=\"`noGateway`\" pulumi-lang-python=\"`no_gateway`\" pulumi-lang-yaml=\"`noGateway`\" pulumi-lang-java=\"`noGateway`\"\u003e`no_gateway`\u003c/span\u003e will cause a default\ngateway of `.1` to be used. Changing this updates the gateway IP of the\nexisting subnet.\n"},"ipVersion":{"type":"integer","description":"IP version, either 4 (default) or 6. Changing this creates a\nnew subnet.\n","willReplaceOnChanges":true},"ipv6AddressMode":{"type":"string","description":"The IPv6 address mode. Valid values are\n`dhcpv6-stateful`, `dhcpv6-stateless`, or \u003cspan pulumi-lang-nodejs=\"`slaac`\" pulumi-lang-dotnet=\"`Slaac`\" pulumi-lang-go=\"`slaac`\" pulumi-lang-python=\"`slaac`\" pulumi-lang-yaml=\"`slaac`\" pulumi-lang-java=\"`slaac`\"\u003e`slaac`\u003c/span\u003e.\n","willReplaceOnChanges":true},"ipv6RaMode":{"type":"string","description":"The IPv6 Router Advertisement mode. Valid values\nare `dhcpv6-stateful`, `dhcpv6-stateless`, or \u003cspan pulumi-lang-nodejs=\"`slaac`\" pulumi-lang-dotnet=\"`Slaac`\" pulumi-lang-go=\"`slaac`\" pulumi-lang-python=\"`slaac`\" pulumi-lang-yaml=\"`slaac`\" pulumi-lang-java=\"`slaac`\"\u003e`slaac`\u003c/span\u003e.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"The name of the subnet. Changing this updates the name of\nthe existing subnet.\n"},"networkId":{"type":"string","description":"The UUID of the parent network. Changing this\ncreates a new subnet.\n","willReplaceOnChanges":true},"noGateway":{"type":"boolean","description":"Do not set a gateway IP on this subnet. Changing\nthis removes or adds a default gateway IP of the existing subnet.\n"},"prefixLength":{"type":"integer","description":"The prefix length to use when creating a subnet\nfrom a subnet pool. The default subnet pool prefix length that was defined\nwhen creating the subnet pool will be used if not provided. Changing this\ncreates a new subnet.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron subnet. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nsubnet.\n","willReplaceOnChanges":true},"segmentId":{"type":"string","description":"The segment ID of the subnet. This is used to\nspecify which segment the subnet belongs to when using Neutron's routed\nprovider networks. Available when neutron segment extension is enabled.\n"},"serviceTypes":{"type":"array","items":{"type":"string"},"description":"An array of service types used by the subnet.\nChanging this updates the service types for the existing subnet.\n"},"subnetpoolId":{"type":"string","description":"The ID of the subnetpool associated with the subnet.\n","willReplaceOnChanges":true},"tags":{"type":"array","items":{"type":"string"},"description":"A set of string tags for the subnet.\n"},"tenantId":{"type":"string","description":"The owner of the subnet. Required if admin wants to\ncreate a subnet for another tenant. Changing this creates a new subnet.\n","willReplaceOnChanges":true},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:networking/subnetPool:SubnetPool":{"description":"Manages a V2 Neutron subnetpool resource within OpenStack.\n\n## Example Usage\n\n### Create a Subnet Pool\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst subnetpool1 = new openstack.networking.SubnetPool(\"subnetpool_1\", {\n    name: \"subnetpool_1\",\n    ipVersion: 6,\n    prefixes: [\n        \"fdf7:b13d:dead:beef::/64\",\n        \"fd65:86cc:a334:39b7::/64\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nsubnetpool1 = openstack.networking.SubnetPool(\"subnetpool_1\",\n    name=\"subnetpool_1\",\n    ip_version=6,\n    prefixes=[\n        \"fdf7:b13d:dead:beef::/64\",\n        \"fd65:86cc:a334:39b7::/64\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var subnetpool1 = new OpenStack.Networking.SubnetPool(\"subnetpool_1\", new()\n    {\n        Name = \"subnetpool_1\",\n        IpVersion = 6,\n        Prefixes = new[]\n        {\n            \"fdf7:b13d:dead:beef::/64\",\n            \"fd65:86cc:a334:39b7::/64\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networking.NewSubnetPool(ctx, \"subnetpool_1\", \u0026networking.SubnetPoolArgs{\n\t\t\tName:      pulumi.String(\"subnetpool_1\"),\n\t\t\tIpVersion: pulumi.Int(6),\n\t\t\tPrefixes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fdf7:b13d:dead:beef::/64\"),\n\t\t\t\tpulumi.String(\"fd65:86cc:a334:39b7::/64\"),\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.openstack.networking.SubnetPool;\nimport com.pulumi.openstack.networking.SubnetPoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 subnetpool1 = new SubnetPool(\"subnetpool1\", SubnetPoolArgs.builder()\n            .name(\"subnetpool_1\")\n            .ipVersion(6)\n            .prefixes(            \n                \"fdf7:b13d:dead:beef::/64\",\n                \"fd65:86cc:a334:39b7::/64\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  subnetpool1:\n    type: openstack:networking:SubnetPool\n    name: subnetpool_1\n    properties:\n      name: subnetpool_1\n      ipVersion: 6\n      prefixes:\n        - fdf7:b13d:dead:beef::/64\n        - fd65:86cc:a334:39b7::/64\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a Subnet from a Subnet Pool\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst network1 = new openstack.networking.Network(\"network_1\", {\n    name: \"network_1\",\n    adminStateUp: true,\n});\nconst subnetpool1 = new openstack.networking.SubnetPool(\"subnetpool_1\", {\n    name: \"subnetpool_1\",\n    prefixes: [\"10.11.12.0/24\"],\n});\nconst subnet1 = new openstack.networking.Subnet(\"subnet_1\", {\n    name: \"subnet_1\",\n    cidr: \"10.11.12.0/25\",\n    networkId: network1.id,\n    subnetpoolId: subnetpool1.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nnetwork1 = openstack.networking.Network(\"network_1\",\n    name=\"network_1\",\n    admin_state_up=True)\nsubnetpool1 = openstack.networking.SubnetPool(\"subnetpool_1\",\n    name=\"subnetpool_1\",\n    prefixes=[\"10.11.12.0/24\"])\nsubnet1 = openstack.networking.Subnet(\"subnet_1\",\n    name=\"subnet_1\",\n    cidr=\"10.11.12.0/25\",\n    network_id=network1.id,\n    subnetpool_id=subnetpool1.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var network1 = new OpenStack.Networking.Network(\"network_1\", new()\n    {\n        Name = \"network_1\",\n        AdminStateUp = true,\n    });\n\n    var subnetpool1 = new OpenStack.Networking.SubnetPool(\"subnetpool_1\", new()\n    {\n        Name = \"subnetpool_1\",\n        Prefixes = new[]\n        {\n            \"10.11.12.0/24\",\n        },\n    });\n\n    var subnet1 = new OpenStack.Networking.Subnet(\"subnet_1\", new()\n    {\n        Name = \"subnet_1\",\n        Cidr = \"10.11.12.0/25\",\n        NetworkId = network1.Id,\n        SubnetpoolId = subnetpool1.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork1, err := networking.NewNetwork(ctx, \"network_1\", \u0026networking.NetworkArgs{\n\t\t\tName:         pulumi.String(\"network_1\"),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnetpool1, err := networking.NewSubnetPool(ctx, \"subnetpool_1\", \u0026networking.SubnetPoolArgs{\n\t\t\tName: pulumi.String(\"subnetpool_1\"),\n\t\t\tPrefixes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.11.12.0/24\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networking.NewSubnet(ctx, \"subnet_1\", \u0026networking.SubnetArgs{\n\t\t\tName:         pulumi.String(\"subnet_1\"),\n\t\t\tCidr:         pulumi.String(\"10.11.12.0/25\"),\n\t\t\tNetworkId:    network1.ID(),\n\t\t\tSubnetpoolId: subnetpool1.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.openstack.networking.Network;\nimport com.pulumi.openstack.networking.NetworkArgs;\nimport com.pulumi.openstack.networking.SubnetPool;\nimport com.pulumi.openstack.networking.SubnetPoolArgs;\nimport com.pulumi.openstack.networking.Subnet;\nimport com.pulumi.openstack.networking.SubnetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 network1 = new Network(\"network1\", NetworkArgs.builder()\n            .name(\"network_1\")\n            .adminStateUp(true)\n            .build());\n\n        var subnetpool1 = new SubnetPool(\"subnetpool1\", SubnetPoolArgs.builder()\n            .name(\"subnetpool_1\")\n            .prefixes(\"10.11.12.0/24\")\n            .build());\n\n        var subnet1 = new Subnet(\"subnet1\", SubnetArgs.builder()\n            .name(\"subnet_1\")\n            .cidr(\"10.11.12.0/25\")\n            .networkId(network1.id())\n            .subnetpoolId(subnetpool1.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  network1:\n    type: openstack:networking:Network\n    name: network_1\n    properties:\n      name: network_1\n      adminStateUp: 'true'\n  subnetpool1:\n    type: openstack:networking:SubnetPool\n    name: subnetpool_1\n    properties:\n      name: subnetpool_1\n      prefixes:\n        - 10.11.12.0/24\n  subnet1:\n    type: openstack:networking:Subnet\n    name: subnet_1\n    properties:\n      name: subnet_1\n      cidr: 10.11.12.0/25\n      networkId: ${network1.id}\n      subnetpoolId: ${subnetpool1.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSubnetpools can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:networking/subnetPool:SubnetPool subnetpool_1 832cb7f3-59fe-40cf-8f64-8350ffc03272\n```\n","properties":{"addressScopeId":{"type":"string","description":"The Neutron address scope to assign to the\nsubnetpool. Changing this updates the address scope id of the existing\nsubnetpool.\n"},"allTags":{"type":"array","items":{"type":"string"},"description":"The collection of tags assigned on the subnetpool, which have been\nexplicitly and implicitly added.\n"},"createdAt":{"type":"string","description":"The time at which subnetpool was created.\n"},"defaultPrefixlen":{"type":"integer","description":"The size of the prefix to allocate when the cidr\nor prefixlen attributes are omitted when you create the subnet. Defaults to the\nMinPrefixLen. Changing this updates the default prefixlen of the existing\nsubnetpool.\n"},"defaultQuota":{"type":"integer","description":"The per-project quota on the prefix space that can be\nallocated from the subnetpool for project subnets. Changing this updates the\ndefault quota of the existing subnetpool.\n"},"description":{"type":"string","description":"The human-readable description for the subnetpool.\nChanging this updates the description of the existing subnetpool.\n"},"ipVersion":{"type":"integer","description":"The IP protocol version.\n"},"isDefault":{"type":"boolean","description":"Indicates whether the subnetpool is default\nsubnetpool or not. Changing this updates the default status of the existing\nsubnetpool.\n"},"maxPrefixlen":{"type":"integer","description":"The maximum prefix size that can be allocated from\nthe subnetpool. For IPv4 subnetpools, default is 32. For IPv6 subnetpools,\ndefault is 128. Changing this updates the max prefixlen of the existing\nsubnetpool.\n"},"minPrefixlen":{"type":"integer","description":"The smallest prefix that can be allocated from a\nsubnetpool. For IPv4 subnetpools, default is 8. For IPv6 subnetpools, default\nis 64. Changing this updates the min prefixlen of the existing subnetpool.\n"},"name":{"type":"string","description":"The name of the subnetpool. Changing this updates the name of\nthe existing subnetpool.\n"},"prefixes":{"type":"array","items":{"type":"string"},"description":"A list of subnet prefixes to assign to the subnetpool.\nNeutron API merges adjacent prefixes and treats them as a single prefix. Each\nsubnet prefix must be unique among all subnet prefixes in all subnetpools that\nare associated with the address scope. Changing this updates the prefixes list\nof the existing subnetpool.\n"},"projectId":{"type":"string","description":"The owner of the subnetpool. Required if admin wants to\ncreate a subnetpool for another project. Changing this creates a new subnetpool.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron subnetpool. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nsubnetpool.\n"},"revisionNumber":{"type":"integer","description":"The revision number of the subnetpool.\n"},"shared":{"type":"boolean","description":"Indicates whether this subnetpool is shared across\nall projects. Changing this updates the shared status of the existing\nsubnetpool.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A set of string tags for the subnetpool.\n"},"updatedAt":{"type":"string","description":"The time at which subnetpool was created.\n"},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n"}},"required":["allTags","createdAt","defaultPrefixlen","ipVersion","maxPrefixlen","minPrefixlen","name","prefixes","projectId","region","revisionNumber","updatedAt"],"inputProperties":{"addressScopeId":{"type":"string","description":"The Neutron address scope to assign to the\nsubnetpool. Changing this updates the address scope id of the existing\nsubnetpool.\n"},"defaultPrefixlen":{"type":"integer","description":"The size of the prefix to allocate when the cidr\nor prefixlen attributes are omitted when you create the subnet. Defaults to the\nMinPrefixLen. Changing this updates the default prefixlen of the existing\nsubnetpool.\n"},"defaultQuota":{"type":"integer","description":"The per-project quota on the prefix space that can be\nallocated from the subnetpool for project subnets. Changing this updates the\ndefault quota of the existing subnetpool.\n"},"description":{"type":"string","description":"The human-readable description for the subnetpool.\nChanging this updates the description of the existing subnetpool.\n"},"ipVersion":{"type":"integer","description":"The IP protocol version.\n"},"isDefault":{"type":"boolean","description":"Indicates whether the subnetpool is default\nsubnetpool or not. Changing this updates the default status of the existing\nsubnetpool.\n"},"maxPrefixlen":{"type":"integer","description":"The maximum prefix size that can be allocated from\nthe subnetpool. For IPv4 subnetpools, default is 32. For IPv6 subnetpools,\ndefault is 128. Changing this updates the max prefixlen of the existing\nsubnetpool.\n"},"minPrefixlen":{"type":"integer","description":"The smallest prefix that can be allocated from a\nsubnetpool. For IPv4 subnetpools, default is 8. For IPv6 subnetpools, default\nis 64. Changing this updates the min prefixlen of the existing subnetpool.\n"},"name":{"type":"string","description":"The name of the subnetpool. Changing this updates the name of\nthe existing subnetpool.\n"},"prefixes":{"type":"array","items":{"type":"string"},"description":"A list of subnet prefixes to assign to the subnetpool.\nNeutron API merges adjacent prefixes and treats them as a single prefix. Each\nsubnet prefix must be unique among all subnet prefixes in all subnetpools that\nare associated with the address scope. Changing this updates the prefixes list\nof the existing subnetpool.\n"},"projectId":{"type":"string","description":"The owner of the subnetpool. Required if admin wants to\ncreate a subnetpool for another project. Changing this creates a new subnetpool.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron subnetpool. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nsubnetpool.\n","willReplaceOnChanges":true},"shared":{"type":"boolean","description":"Indicates whether this subnetpool is shared across\nall projects. Changing this updates the shared status of the existing\nsubnetpool.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A set of string tags for the subnetpool.\n"},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n","willReplaceOnChanges":true}},"requiredInputs":["prefixes"],"stateInputs":{"description":"Input properties used for looking up and filtering SubnetPool resources.\n","properties":{"addressScopeId":{"type":"string","description":"The Neutron address scope to assign to the\nsubnetpool. Changing this updates the address scope id of the existing\nsubnetpool.\n"},"allTags":{"type":"array","items":{"type":"string"},"description":"The collection of tags assigned on the subnetpool, which have been\nexplicitly and implicitly added.\n"},"createdAt":{"type":"string","description":"The time at which subnetpool was created.\n"},"defaultPrefixlen":{"type":"integer","description":"The size of the prefix to allocate when the cidr\nor prefixlen attributes are omitted when you create the subnet. Defaults to the\nMinPrefixLen. Changing this updates the default prefixlen of the existing\nsubnetpool.\n"},"defaultQuota":{"type":"integer","description":"The per-project quota on the prefix space that can be\nallocated from the subnetpool for project subnets. Changing this updates the\ndefault quota of the existing subnetpool.\n"},"description":{"type":"string","description":"The human-readable description for the subnetpool.\nChanging this updates the description of the existing subnetpool.\n"},"ipVersion":{"type":"integer","description":"The IP protocol version.\n"},"isDefault":{"type":"boolean","description":"Indicates whether the subnetpool is default\nsubnetpool or not. Changing this updates the default status of the existing\nsubnetpool.\n"},"maxPrefixlen":{"type":"integer","description":"The maximum prefix size that can be allocated from\nthe subnetpool. For IPv4 subnetpools, default is 32. For IPv6 subnetpools,\ndefault is 128. Changing this updates the max prefixlen of the existing\nsubnetpool.\n"},"minPrefixlen":{"type":"integer","description":"The smallest prefix that can be allocated from a\nsubnetpool. For IPv4 subnetpools, default is 8. For IPv6 subnetpools, default\nis 64. Changing this updates the min prefixlen of the existing subnetpool.\n"},"name":{"type":"string","description":"The name of the subnetpool. Changing this updates the name of\nthe existing subnetpool.\n"},"prefixes":{"type":"array","items":{"type":"string"},"description":"A list of subnet prefixes to assign to the subnetpool.\nNeutron API merges adjacent prefixes and treats them as a single prefix. Each\nsubnet prefix must be unique among all subnet prefixes in all subnetpools that\nare associated with the address scope. Changing this updates the prefixes list\nof the existing subnetpool.\n"},"projectId":{"type":"string","description":"The owner of the subnetpool. Required if admin wants to\ncreate a subnetpool for another project. Changing this creates a new subnetpool.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron subnetpool. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nsubnetpool.\n","willReplaceOnChanges":true},"revisionNumber":{"type":"integer","description":"The revision number of the subnetpool.\n"},"shared":{"type":"boolean","description":"Indicates whether this subnetpool is shared across\nall projects. Changing this updates the shared status of the existing\nsubnetpool.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A set of string tags for the subnetpool.\n"},"updatedAt":{"type":"string","description":"The time at which subnetpool was created.\n"},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:networking/subnetRoute:SubnetRoute":{"description":"Creates a routing entry on a OpenStack V2 subnet.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst router1 = new openstack.networking.Router(\"router_1\", {\n    name: \"router_1\",\n    adminStateUp: true,\n});\nconst network1 = new openstack.networking.Network(\"network_1\", {\n    name: \"network_1\",\n    adminStateUp: true,\n});\nconst subnet1 = new openstack.networking.Subnet(\"subnet_1\", {\n    networkId: network1.id,\n    cidr: \"192.168.199.0/24\",\n    ipVersion: 4,\n});\nconst subnetRoute1 = new openstack.networking.SubnetRoute(\"subnet_route_1\", {\n    subnetId: subnet1.id,\n    destinationCidr: \"10.0.1.0/24\",\n    nextHop: \"192.168.199.254\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nrouter1 = openstack.networking.Router(\"router_1\",\n    name=\"router_1\",\n    admin_state_up=True)\nnetwork1 = openstack.networking.Network(\"network_1\",\n    name=\"network_1\",\n    admin_state_up=True)\nsubnet1 = openstack.networking.Subnet(\"subnet_1\",\n    network_id=network1.id,\n    cidr=\"192.168.199.0/24\",\n    ip_version=4)\nsubnet_route1 = openstack.networking.SubnetRoute(\"subnet_route_1\",\n    subnet_id=subnet1.id,\n    destination_cidr=\"10.0.1.0/24\",\n    next_hop=\"192.168.199.254\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var router1 = new OpenStack.Networking.Router(\"router_1\", new()\n    {\n        Name = \"router_1\",\n        AdminStateUp = true,\n    });\n\n    var network1 = new OpenStack.Networking.Network(\"network_1\", new()\n    {\n        Name = \"network_1\",\n        AdminStateUp = true,\n    });\n\n    var subnet1 = new OpenStack.Networking.Subnet(\"subnet_1\", new()\n    {\n        NetworkId = network1.Id,\n        Cidr = \"192.168.199.0/24\",\n        IpVersion = 4,\n    });\n\n    var subnetRoute1 = new OpenStack.Networking.SubnetRoute(\"subnet_route_1\", new()\n    {\n        SubnetId = subnet1.Id,\n        DestinationCidr = \"10.0.1.0/24\",\n        NextHop = \"192.168.199.254\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networking.NewRouter(ctx, \"router_1\", \u0026networking.RouterArgs{\n\t\t\tName:         pulumi.String(\"router_1\"),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork1, err := networking.NewNetwork(ctx, \"network_1\", \u0026networking.NetworkArgs{\n\t\t\tName:         pulumi.String(\"network_1\"),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet1, err := networking.NewSubnet(ctx, \"subnet_1\", \u0026networking.SubnetArgs{\n\t\t\tNetworkId: network1.ID(),\n\t\t\tCidr:      pulumi.String(\"192.168.199.0/24\"),\n\t\t\tIpVersion: pulumi.Int(4),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networking.NewSubnetRoute(ctx, \"subnet_route_1\", \u0026networking.SubnetRouteArgs{\n\t\t\tSubnetId:        subnet1.ID(),\n\t\t\tDestinationCidr: pulumi.String(\"10.0.1.0/24\"),\n\t\t\tNextHop:         pulumi.String(\"192.168.199.254\"),\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.openstack.networking.Router;\nimport com.pulumi.openstack.networking.RouterArgs;\nimport com.pulumi.openstack.networking.Network;\nimport com.pulumi.openstack.networking.NetworkArgs;\nimport com.pulumi.openstack.networking.Subnet;\nimport com.pulumi.openstack.networking.SubnetArgs;\nimport com.pulumi.openstack.networking.SubnetRoute;\nimport com.pulumi.openstack.networking.SubnetRouteArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 router1 = new Router(\"router1\", RouterArgs.builder()\n            .name(\"router_1\")\n            .adminStateUp(true)\n            .build());\n\n        var network1 = new Network(\"network1\", NetworkArgs.builder()\n            .name(\"network_1\")\n            .adminStateUp(true)\n            .build());\n\n        var subnet1 = new Subnet(\"subnet1\", SubnetArgs.builder()\n            .networkId(network1.id())\n            .cidr(\"192.168.199.0/24\")\n            .ipVersion(4)\n            .build());\n\n        var subnetRoute1 = new SubnetRoute(\"subnetRoute1\", SubnetRouteArgs.builder()\n            .subnetId(subnet1.id())\n            .destinationCidr(\"10.0.1.0/24\")\n            .nextHop(\"192.168.199.254\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  router1:\n    type: openstack:networking:Router\n    name: router_1\n    properties:\n      name: router_1\n      adminStateUp: 'true'\n  network1:\n    type: openstack:networking:Network\n    name: network_1\n    properties:\n      name: network_1\n      adminStateUp: 'true'\n  subnet1:\n    type: openstack:networking:Subnet\n    name: subnet_1\n    properties:\n      networkId: ${network1.id}\n      cidr: 192.168.199.0/24\n      ipVersion: 4\n  subnetRoute1:\n    type: openstack:networking:SubnetRoute\n    name: subnet_route_1\n    properties:\n      subnetId: ${subnet1.id}\n      destinationCidr: 10.0.1.0/24\n      nextHop: 192.168.199.254\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRouting entries can be imported using a combined ID using the following format: `\u003csubnet_id\u003e-route-\u003cdestination_cidr\u003e-\u003cnext_hop\u003e`\n\n```sh\n$ pulumi import openstack:networking/subnetRoute:SubnetRoute subnet_route_1 686fe248-386c-4f70-9f6c-281607dad079-route-10.0.1.0/24-192.168.199.25\n```\n","properties":{"destinationCidr":{"type":"string","description":"CIDR block to match on the packet’s destination IP. Changing\nthis creates a new routing entry.\n"},"nextHop":{"type":"string","description":"IP address of the next hop gateway.  Changing\nthis creates a new routing entry.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to configure a routing entry on a subnet. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nrouting entry.\n"},"subnetId":{"type":"string","description":"ID of the subnet this routing entry belongs to. Changing\nthis creates a new routing entry.\n"}},"required":["destinationCidr","nextHop","region","subnetId"],"inputProperties":{"destinationCidr":{"type":"string","description":"CIDR block to match on the packet’s destination IP. Changing\nthis creates a new routing entry.\n","willReplaceOnChanges":true},"nextHop":{"type":"string","description":"IP address of the next hop gateway.  Changing\nthis creates a new routing entry.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to configure a routing entry on a subnet. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nrouting entry.\n","willReplaceOnChanges":true},"subnetId":{"type":"string","description":"ID of the subnet this routing entry belongs to. Changing\nthis creates a new routing entry.\n","willReplaceOnChanges":true}},"requiredInputs":["destinationCidr","nextHop","subnetId"],"stateInputs":{"description":"Input properties used for looking up and filtering SubnetRoute resources.\n","properties":{"destinationCidr":{"type":"string","description":"CIDR block to match on the packet’s destination IP. Changing\nthis creates a new routing entry.\n","willReplaceOnChanges":true},"nextHop":{"type":"string","description":"IP address of the next hop gateway.  Changing\nthis creates a new routing entry.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to configure a routing entry on a subnet. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nrouting entry.\n","willReplaceOnChanges":true},"subnetId":{"type":"string","description":"ID of the subnet this routing entry belongs to. Changing\nthis creates a new routing entry.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:networking/trunk:Trunk":{"description":"Manages a networking V2 trunk resource within OpenStack.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst network1 = new openstack.networking.Network(\"network_1\", {\n    name: \"network_1\",\n    adminStateUp: true,\n});\nconst subnet1 = new openstack.networking.Subnet(\"subnet_1\", {\n    name: \"subnet_1\",\n    networkId: network1.id,\n    cidr: \"192.168.1.0/24\",\n    ipVersion: 4,\n    enableDhcp: true,\n    noGateway: true,\n});\nconst parentPort1 = new openstack.networking.Port(\"parent_port_1\", {\n    name: \"parent_port_1\",\n    networkId: network1.id,\n    adminStateUp: true,\n}, {\n    dependsOn: [subnet1],\n});\nconst subport1 = new openstack.networking.Port(\"subport_1\", {\n    name: \"subport_1\",\n    networkId: network1.id,\n    adminStateUp: true,\n}, {\n    dependsOn: [subnet1],\n});\nconst trunk1 = new openstack.networking.Trunk(\"trunk_1\", {\n    name: \"trunk_1\",\n    adminStateUp: true,\n    portId: parentPort1.id,\n    subPorts: [{\n        portId: subport1.id,\n        segmentationId: 1,\n        segmentationType: \"vlan\",\n    }],\n});\nconst instance1 = new openstack.compute.Instance(\"instance_1\", {\n    name: \"instance_1\",\n    securityGroups: [\"default\"],\n    networks: [{\n        port: trunk1.portId,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nnetwork1 = openstack.networking.Network(\"network_1\",\n    name=\"network_1\",\n    admin_state_up=True)\nsubnet1 = openstack.networking.Subnet(\"subnet_1\",\n    name=\"subnet_1\",\n    network_id=network1.id,\n    cidr=\"192.168.1.0/24\",\n    ip_version=4,\n    enable_dhcp=True,\n    no_gateway=True)\nparent_port1 = openstack.networking.Port(\"parent_port_1\",\n    name=\"parent_port_1\",\n    network_id=network1.id,\n    admin_state_up=True,\n    opts = pulumi.ResourceOptions(depends_on=[subnet1]))\nsubport1 = openstack.networking.Port(\"subport_1\",\n    name=\"subport_1\",\n    network_id=network1.id,\n    admin_state_up=True,\n    opts = pulumi.ResourceOptions(depends_on=[subnet1]))\ntrunk1 = openstack.networking.Trunk(\"trunk_1\",\n    name=\"trunk_1\",\n    admin_state_up=True,\n    port_id=parent_port1.id,\n    sub_ports=[{\n        \"port_id\": subport1.id,\n        \"segmentation_id\": 1,\n        \"segmentation_type\": \"vlan\",\n    }])\ninstance1 = openstack.compute.Instance(\"instance_1\",\n    name=\"instance_1\",\n    security_groups=[\"default\"],\n    networks=[{\n        \"port\": trunk1.port_id,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var network1 = new OpenStack.Networking.Network(\"network_1\", new()\n    {\n        Name = \"network_1\",\n        AdminStateUp = true,\n    });\n\n    var subnet1 = new OpenStack.Networking.Subnet(\"subnet_1\", new()\n    {\n        Name = \"subnet_1\",\n        NetworkId = network1.Id,\n        Cidr = \"192.168.1.0/24\",\n        IpVersion = 4,\n        EnableDhcp = true,\n        NoGateway = true,\n    });\n\n    var parentPort1 = new OpenStack.Networking.Port(\"parent_port_1\", new()\n    {\n        Name = \"parent_port_1\",\n        NetworkId = network1.Id,\n        AdminStateUp = true,\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            subnet1,\n        },\n    });\n\n    var subport1 = new OpenStack.Networking.Port(\"subport_1\", new()\n    {\n        Name = \"subport_1\",\n        NetworkId = network1.Id,\n        AdminStateUp = true,\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            subnet1,\n        },\n    });\n\n    var trunk1 = new OpenStack.Networking.Trunk(\"trunk_1\", new()\n    {\n        Name = \"trunk_1\",\n        AdminStateUp = true,\n        PortId = parentPort1.Id,\n        SubPorts = new[]\n        {\n            new OpenStack.Networking.Inputs.TrunkSubPortArgs\n            {\n                PortId = subport1.Id,\n                SegmentationId = 1,\n                SegmentationType = \"vlan\",\n            },\n        },\n    });\n\n    var instance1 = new OpenStack.Compute.Instance(\"instance_1\", new()\n    {\n        Name = \"instance_1\",\n        SecurityGroups = new[]\n        {\n            \"default\",\n        },\n        Networks = new[]\n        {\n            new OpenStack.Compute.Inputs.InstanceNetworkArgs\n            {\n                Port = trunk1.PortId,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/compute\"\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork1, err := networking.NewNetwork(ctx, \"network_1\", \u0026networking.NetworkArgs{\n\t\t\tName:         pulumi.String(\"network_1\"),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet1, err := networking.NewSubnet(ctx, \"subnet_1\", \u0026networking.SubnetArgs{\n\t\t\tName:       pulumi.String(\"subnet_1\"),\n\t\t\tNetworkId:  network1.ID(),\n\t\t\tCidr:       pulumi.String(\"192.168.1.0/24\"),\n\t\t\tIpVersion:  pulumi.Int(4),\n\t\t\tEnableDhcp: pulumi.Bool(true),\n\t\t\tNoGateway:  pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tparentPort1, err := networking.NewPort(ctx, \"parent_port_1\", \u0026networking.PortArgs{\n\t\t\tName:         pulumi.String(\"parent_port_1\"),\n\t\t\tNetworkId:    network1.ID(),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsubnet1,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubport1, err := networking.NewPort(ctx, \"subport_1\", \u0026networking.PortArgs{\n\t\t\tName:         pulumi.String(\"subport_1\"),\n\t\t\tNetworkId:    network1.ID(),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsubnet1,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttrunk1, err := networking.NewTrunk(ctx, \"trunk_1\", \u0026networking.TrunkArgs{\n\t\t\tName:         pulumi.String(\"trunk_1\"),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t\tPortId:       parentPort1.ID(),\n\t\t\tSubPorts: networking.TrunkSubPortArray{\n\t\t\t\t\u0026networking.TrunkSubPortArgs{\n\t\t\t\t\tPortId:           subport1.ID(),\n\t\t\t\t\tSegmentationId:   pulumi.Int(1),\n\t\t\t\t\tSegmentationType: pulumi.String(\"vlan\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"instance_1\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"instance_1\"),\n\t\t\tSecurityGroups: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"default\"),\n\t\t\t},\n\t\t\tNetworks: compute.InstanceNetworkArray{\n\t\t\t\t\u0026compute.InstanceNetworkArgs{\n\t\t\t\t\tPort: trunk1.PortId,\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.openstack.networking.Network;\nimport com.pulumi.openstack.networking.NetworkArgs;\nimport com.pulumi.openstack.networking.Subnet;\nimport com.pulumi.openstack.networking.SubnetArgs;\nimport com.pulumi.openstack.networking.Port;\nimport com.pulumi.openstack.networking.PortArgs;\nimport com.pulumi.openstack.networking.Trunk;\nimport com.pulumi.openstack.networking.TrunkArgs;\nimport com.pulumi.openstack.networking.inputs.TrunkSubPortArgs;\nimport com.pulumi.openstack.compute.Instance;\nimport com.pulumi.openstack.compute.InstanceArgs;\nimport com.pulumi.openstack.compute.inputs.InstanceNetworkArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var network1 = new Network(\"network1\", NetworkArgs.builder()\n            .name(\"network_1\")\n            .adminStateUp(true)\n            .build());\n\n        var subnet1 = new Subnet(\"subnet1\", SubnetArgs.builder()\n            .name(\"subnet_1\")\n            .networkId(network1.id())\n            .cidr(\"192.168.1.0/24\")\n            .ipVersion(4)\n            .enableDhcp(true)\n            .noGateway(true)\n            .build());\n\n        var parentPort1 = new Port(\"parentPort1\", PortArgs.builder()\n            .name(\"parent_port_1\")\n            .networkId(network1.id())\n            .adminStateUp(true)\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(subnet1)\n                .build());\n\n        var subport1 = new Port(\"subport1\", PortArgs.builder()\n            .name(\"subport_1\")\n            .networkId(network1.id())\n            .adminStateUp(true)\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(subnet1)\n                .build());\n\n        var trunk1 = new Trunk(\"trunk1\", TrunkArgs.builder()\n            .name(\"trunk_1\")\n            .adminStateUp(true)\n            .portId(parentPort1.id())\n            .subPorts(TrunkSubPortArgs.builder()\n                .portId(subport1.id())\n                .segmentationId(1)\n                .segmentationType(\"vlan\")\n                .build())\n            .build());\n\n        var instance1 = new Instance(\"instance1\", InstanceArgs.builder()\n            .name(\"instance_1\")\n            .securityGroups(\"default\")\n            .networks(InstanceNetworkArgs.builder()\n                .port(trunk1.portId())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  network1:\n    type: openstack:networking:Network\n    name: network_1\n    properties:\n      name: network_1\n      adminStateUp: 'true'\n  subnet1:\n    type: openstack:networking:Subnet\n    name: subnet_1\n    properties:\n      name: subnet_1\n      networkId: ${network1.id}\n      cidr: 192.168.1.0/24\n      ipVersion: 4\n      enableDhcp: true\n      noGateway: true\n  parentPort1:\n    type: openstack:networking:Port\n    name: parent_port_1\n    properties:\n      name: parent_port_1\n      networkId: ${network1.id}\n      adminStateUp: 'true'\n    options:\n      dependsOn:\n        - ${subnet1}\n  subport1:\n    type: openstack:networking:Port\n    name: subport_1\n    properties:\n      name: subport_1\n      networkId: ${network1.id}\n      adminStateUp: 'true'\n    options:\n      dependsOn:\n        - ${subnet1}\n  trunk1:\n    type: openstack:networking:Trunk\n    name: trunk_1\n    properties:\n      name: trunk_1\n      adminStateUp: 'true'\n      portId: ${parentPort1.id}\n      subPorts:\n        - portId: ${subport1.id}\n          segmentationId: 1\n          segmentationType: vlan\n  instance1:\n    type: openstack:compute:Instance\n    name: instance_1\n    properties:\n      name: instance_1\n      securityGroups:\n        - default\n      networks:\n        - port: ${trunk1.portId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"adminStateUp":{"type":"boolean","description":"Administrative up/down status for the trunk\n(must be \"true\" or \"false\" if provided). Changing this updates the\n\u003cspan pulumi-lang-nodejs=\"`adminStateUp`\" pulumi-lang-dotnet=\"`AdminStateUp`\" pulumi-lang-go=\"`adminStateUp`\" pulumi-lang-python=\"`admin_state_up`\" pulumi-lang-yaml=\"`adminStateUp`\" pulumi-lang-java=\"`adminStateUp`\"\u003e`admin_state_up`\u003c/span\u003e of an existing trunk.\n"},"allTags":{"type":"array","items":{"type":"string"},"description":"The collection of tags assigned on the trunk, which have been\nexplicitly and implicitly added.\n"},"description":{"type":"string","description":"Human-readable description of the trunk. Changing this\nupdates the name of the existing trunk.\n"},"name":{"type":"string","description":"A unique name for the trunk. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e of an existing trunk.\n"},"portId":{"type":"string","description":"The ID of the port to be used as the parent port of the\ntrunk. This is the port that should be used as the compute instance network\nport. Changing this creates a new trunk.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to create a trunk. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\ntrunk.\n"},"subPorts":{"type":"array","items":{"$ref":"#/types/openstack:networking/TrunkSubPort:TrunkSubPort"},"description":"The set of ports that will be made subports of the trunk.\nThe structure of each subport is described below.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A set of string tags for the port.\n"},"tenantId":{"type":"string","description":"The owner of the Trunk. Required if admin wants\nto create a trunk on behalf of another tenant. Changing this creates a new trunk.\n"}},"required":["allTags","name","portId","region","tenantId"],"inputProperties":{"adminStateUp":{"type":"boolean","description":"Administrative up/down status for the trunk\n(must be \"true\" or \"false\" if provided). Changing this updates the\n\u003cspan pulumi-lang-nodejs=\"`adminStateUp`\" pulumi-lang-dotnet=\"`AdminStateUp`\" pulumi-lang-go=\"`adminStateUp`\" pulumi-lang-python=\"`admin_state_up`\" pulumi-lang-yaml=\"`adminStateUp`\" pulumi-lang-java=\"`adminStateUp`\"\u003e`admin_state_up`\u003c/span\u003e of an existing trunk.\n"},"description":{"type":"string","description":"Human-readable description of the trunk. Changing this\nupdates the name of the existing trunk.\n"},"name":{"type":"string","description":"A unique name for the trunk. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e of an existing trunk.\n"},"portId":{"type":"string","description":"The ID of the port to be used as the parent port of the\ntrunk. This is the port that should be used as the compute instance network\nport. Changing this creates a new trunk.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to create a trunk. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\ntrunk.\n","willReplaceOnChanges":true},"subPorts":{"type":"array","items":{"$ref":"#/types/openstack:networking/TrunkSubPort:TrunkSubPort"},"description":"The set of ports that will be made subports of the trunk.\nThe structure of each subport is described below.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A set of string tags for the port.\n"},"tenantId":{"type":"string","description":"The owner of the Trunk. Required if admin wants\nto create a trunk on behalf of another tenant. Changing this creates a new trunk.\n","willReplaceOnChanges":true}},"requiredInputs":["portId"],"stateInputs":{"description":"Input properties used for looking up and filtering Trunk resources.\n","properties":{"adminStateUp":{"type":"boolean","description":"Administrative up/down status for the trunk\n(must be \"true\" or \"false\" if provided). Changing this updates the\n\u003cspan pulumi-lang-nodejs=\"`adminStateUp`\" pulumi-lang-dotnet=\"`AdminStateUp`\" pulumi-lang-go=\"`adminStateUp`\" pulumi-lang-python=\"`admin_state_up`\" pulumi-lang-yaml=\"`adminStateUp`\" pulumi-lang-java=\"`adminStateUp`\"\u003e`admin_state_up`\u003c/span\u003e of an existing trunk.\n"},"allTags":{"type":"array","items":{"type":"string"},"description":"The collection of tags assigned on the trunk, which have been\nexplicitly and implicitly added.\n"},"description":{"type":"string","description":"Human-readable description of the trunk. Changing this\nupdates the name of the existing trunk.\n"},"name":{"type":"string","description":"A unique name for the trunk. Changing this\nupdates the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e of an existing trunk.\n"},"portId":{"type":"string","description":"The ID of the port to be used as the parent port of the\ntrunk. This is the port that should be used as the compute instance network\nport. Changing this creates a new trunk.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 networking client.\nA networking client is needed to create a trunk. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\ntrunk.\n","willReplaceOnChanges":true},"subPorts":{"type":"array","items":{"$ref":"#/types/openstack:networking/TrunkSubPort:TrunkSubPort"},"description":"The set of ports that will be made subports of the trunk.\nThe structure of each subport is described below.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A set of string tags for the port.\n"},"tenantId":{"type":"string","description":"The owner of the Trunk. Required if admin wants\nto create a trunk on behalf of another tenant. Changing this creates a new trunk.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:objectstorage/accountV1:AccountV1":{"description":"Manages a V1 account resource within OpenStack.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst account1 = new openstack.objectstorage.AccountV1(\"account_1\", {\n    region: \"RegionOne\",\n    metadata: {\n        \"Temp-Url-Key\": \"testkey\",\n        test: \"true\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\naccount1 = openstack.objectstorage.AccountV1(\"account_1\",\n    region=\"RegionOne\",\n    metadata={\n        \"Temp-Url-Key\": \"testkey\",\n        \"test\": \"true\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var account1 = new OpenStack.ObjectStorage.AccountV1(\"account_1\", new()\n    {\n        Region = \"RegionOne\",\n        Metadata = \n        {\n            { \"Temp-Url-Key\", \"testkey\" },\n            { \"test\", \"true\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/objectstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := objectstorage.NewAccountV1(ctx, \"account_1\", \u0026objectstorage.AccountV1Args{\n\t\t\tRegion: pulumi.String(\"RegionOne\"),\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"Temp-Url-Key\": pulumi.String(\"testkey\"),\n\t\t\t\t\"test\":         pulumi.String(\"true\"),\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.openstack.objectstorage.AccountV1;\nimport com.pulumi.openstack.objectstorage.AccountV1Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 account1 = new AccountV1(\"account1\", AccountV1Args.builder()\n            .region(\"RegionOne\")\n            .metadata(Map.ofEntries(\n                Map.entry(\"Temp-Url-Key\", \"testkey\"),\n                Map.entry(\"test\", \"true\")\n            ))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  account1:\n    type: openstack:objectstorage:AccountV1\n    name: account_1\n    properties:\n      region: RegionOne\n      metadata:\n        Temp-Url-Key: testkey\n        test: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource can be imported by specifying the project ID of the account:\n\n```sh\n$ pulumi import openstack:objectstorage/accountV1:AccountV1 account_1 1202b3d0aaa44cfc8b79475c007b0711\n```\n","properties":{"bytesUsed":{"type":"integer","description":"The number of bytes used by the account.\n"},"containerCount":{"type":"integer","description":"The number of containers in the account.\n"},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A map of headers returned for the account.\n"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"A map of custom key/value pairs to associate with the\naccount metadata. Changing the `Quota-Bytes` key value is allowed to be\nupdated only by the cloud administrator.\n"},"objectCount":{"type":"integer","description":"The number of objects in the account.\n"},"projectId":{"type":"string","description":"The project ID of the corresponding account. If\nomitted, the token's project ID is used. Changing this creates a new account.\n"},"quotaBytes":{"type":"integer","description":"The number of bytes allowed for the account.\n"},"region":{"type":"string","description":"The region in which to create the account. If omitted,\nthe \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\naccount.\n"}},"required":["bytesUsed","containerCount","headers","objectCount","projectId","quotaBytes","region"],"inputProperties":{"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"A map of custom key/value pairs to associate with the\naccount metadata. Changing the `Quota-Bytes` key value is allowed to be\nupdated only by the cloud administrator.\n"},"projectId":{"type":"string","description":"The project ID of the corresponding account. If\nomitted, the token's project ID is used. Changing this creates a new account.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to create the account. If omitted,\nthe \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\naccount.\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering AccountV1 resources.\n","properties":{"bytesUsed":{"type":"integer","description":"The number of bytes used by the account.\n"},"containerCount":{"type":"integer","description":"The number of containers in the account.\n"},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A map of headers returned for the account.\n"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"A map of custom key/value pairs to associate with the\naccount metadata. Changing the `Quota-Bytes` key value is allowed to be\nupdated only by the cloud administrator.\n"},"objectCount":{"type":"integer","description":"The number of objects in the account.\n"},"projectId":{"type":"string","description":"The project ID of the corresponding account. If\nomitted, the token's project ID is used. Changing this creates a new account.\n","willReplaceOnChanges":true},"quotaBytes":{"type":"integer","description":"The number of bytes allowed for the account.\n"},"region":{"type":"string","description":"The region in which to create the account. If omitted,\nthe \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\naccount.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:objectstorage/container:Container":{"description":"Manages a V1 container resource within OpenStack.\n\n## Example Usage\n\n### Basic Container\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst container1 = new openstack.objectstorage.Container(\"container_1\", {\n    region: \"RegionOne\",\n    name: \"tf-test-container-1\",\n    metadata: {\n        test: \"true\",\n    },\n    contentType: \"application/json\",\n    versioning: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\ncontainer1 = openstack.objectstorage.Container(\"container_1\",\n    region=\"RegionOne\",\n    name=\"tf-test-container-1\",\n    metadata={\n        \"test\": \"true\",\n    },\n    content_type=\"application/json\",\n    versioning=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var container1 = new OpenStack.ObjectStorage.Container(\"container_1\", new()\n    {\n        Region = \"RegionOne\",\n        Name = \"tf-test-container-1\",\n        Metadata = \n        {\n            { \"test\", \"true\" },\n        },\n        ContentType = \"application/json\",\n        Versioning = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/objectstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := objectstorage.NewContainer(ctx, \"container_1\", \u0026objectstorage.ContainerArgs{\n\t\t\tRegion: pulumi.String(\"RegionOne\"),\n\t\t\tName:   pulumi.String(\"tf-test-container-1\"),\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"test\": pulumi.String(\"true\"),\n\t\t\t},\n\t\t\tContentType: pulumi.String(\"application/json\"),\n\t\t\tVersioning:  pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openstack.objectstorage.Container;\nimport com.pulumi.openstack.objectstorage.ContainerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 container1 = new Container(\"container1\", ContainerArgs.builder()\n            .region(\"RegionOne\")\n            .name(\"tf-test-container-1\")\n            .metadata(Map.of(\"test\", \"true\"))\n            .contentType(\"application/json\")\n            .versioning(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  container1:\n    type: openstack:objectstorage:Container\n    name: container_1\n    properties:\n      region: RegionOne\n      name: tf-test-container-1\n      metadata:\n        test: 'true'\n      contentType: application/json\n      versioning: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Basic Container with legacy versioning\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst container1 = new openstack.objectstorage.Container(\"container_1\", {\n    region: \"RegionOne\",\n    name: \"tf-test-container-1\",\n    metadata: {\n        test: \"true\",\n    },\n    contentType: \"application/json\",\n    versioningLegacy: {\n        type: \"versions\",\n        location: \"tf-test-container-versions\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\ncontainer1 = openstack.objectstorage.Container(\"container_1\",\n    region=\"RegionOne\",\n    name=\"tf-test-container-1\",\n    metadata={\n        \"test\": \"true\",\n    },\n    content_type=\"application/json\",\n    versioning_legacy={\n        \"type\": \"versions\",\n        \"location\": \"tf-test-container-versions\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var container1 = new OpenStack.ObjectStorage.Container(\"container_1\", new()\n    {\n        Region = \"RegionOne\",\n        Name = \"tf-test-container-1\",\n        Metadata = \n        {\n            { \"test\", \"true\" },\n        },\n        ContentType = \"application/json\",\n        VersioningLegacy = new OpenStack.ObjectStorage.Inputs.ContainerVersioningLegacyArgs\n        {\n            Type = \"versions\",\n            Location = \"tf-test-container-versions\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/objectstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := objectstorage.NewContainer(ctx, \"container_1\", \u0026objectstorage.ContainerArgs{\n\t\t\tRegion: pulumi.String(\"RegionOne\"),\n\t\t\tName:   pulumi.String(\"tf-test-container-1\"),\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"test\": pulumi.String(\"true\"),\n\t\t\t},\n\t\t\tContentType: pulumi.String(\"application/json\"),\n\t\t\tVersioningLegacy: \u0026objectstorage.ContainerVersioningLegacyArgs{\n\t\t\t\tType:     pulumi.String(\"versions\"),\n\t\t\t\tLocation: pulumi.String(\"tf-test-container-versions\"),\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.openstack.objectstorage.Container;\nimport com.pulumi.openstack.objectstorage.ContainerArgs;\nimport com.pulumi.openstack.objectstorage.inputs.ContainerVersioningLegacyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 container1 = new Container(\"container1\", ContainerArgs.builder()\n            .region(\"RegionOne\")\n            .name(\"tf-test-container-1\")\n            .metadata(Map.of(\"test\", \"true\"))\n            .contentType(\"application/json\")\n            .versioningLegacy(ContainerVersioningLegacyArgs.builder()\n                .type(\"versions\")\n                .location(\"tf-test-container-versions\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  container1:\n    type: openstack:objectstorage:Container\n    name: container_1\n    properties:\n      region: RegionOne\n      name: tf-test-container-1\n      metadata:\n        test: 'true'\n      contentType: application/json\n      versioningLegacy:\n        type: versions\n        location: tf-test-container-versions\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Global Read Access\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\n// Requires that a user know the object name they are attempting to download\nconst container1 = new openstack.objectstorage.Container(\"container_1\", {\n    region: \"RegionOne\",\n    name: \"tf-test-container-1\",\n    containerRead: \".r:*\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\n# Requires that a user know the object name they are attempting to download\ncontainer1 = openstack.objectstorage.Container(\"container_1\",\n    region=\"RegionOne\",\n    name=\"tf-test-container-1\",\n    container_read=\".r:*\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Requires that a user know the object name they are attempting to download\n    var container1 = new OpenStack.ObjectStorage.Container(\"container_1\", new()\n    {\n        Region = \"RegionOne\",\n        Name = \"tf-test-container-1\",\n        ContainerRead = \".r:*\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/objectstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Requires that a user know the object name they are attempting to download\n\t\t_, err := objectstorage.NewContainer(ctx, \"container_1\", \u0026objectstorage.ContainerArgs{\n\t\t\tRegion:        pulumi.String(\"RegionOne\"),\n\t\t\tName:          pulumi.String(\"tf-test-container-1\"),\n\t\t\tContainerRead: pulumi.String(\".r:*\"),\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.openstack.objectstorage.Container;\nimport com.pulumi.openstack.objectstorage.ContainerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Requires that a user know the object name they are attempting to download\n        var container1 = new Container(\"container1\", ContainerArgs.builder()\n            .region(\"RegionOne\")\n            .name(\"tf-test-container-1\")\n            .containerRead(\".r:*\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Requires that a user know the object name they are attempting to download\n  container1:\n    type: openstack:objectstorage:Container\n    name: container_1\n    properties:\n      region: RegionOne\n      name: tf-test-container-1\n      containerRead: .r:*\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Global Read and List Access\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\n// Any user can read any object, and list all objects in the container\nconst container1 = new openstack.objectstorage.Container(\"container_1\", {\n    region: \"RegionOne\",\n    name: \"tf-test-container-1\",\n    containerRead: \".r:*,.rlistings\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\n# Any user can read any object, and list all objects in the container\ncontainer1 = openstack.objectstorage.Container(\"container_1\",\n    region=\"RegionOne\",\n    name=\"tf-test-container-1\",\n    container_read=\".r:*,.rlistings\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Any user can read any object, and list all objects in the container\n    var container1 = new OpenStack.ObjectStorage.Container(\"container_1\", new()\n    {\n        Region = \"RegionOne\",\n        Name = \"tf-test-container-1\",\n        ContainerRead = \".r:*,.rlistings\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/objectstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Any user can read any object, and list all objects in the container\n\t\t_, err := objectstorage.NewContainer(ctx, \"container_1\", \u0026objectstorage.ContainerArgs{\n\t\t\tRegion:        pulumi.String(\"RegionOne\"),\n\t\t\tName:          pulumi.String(\"tf-test-container-1\"),\n\t\t\tContainerRead: pulumi.String(\".r:*,.rlistings\"),\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.openstack.objectstorage.Container;\nimport com.pulumi.openstack.objectstorage.ContainerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Any user can read any object, and list all objects in the container\n        var container1 = new Container(\"container1\", ContainerArgs.builder()\n            .region(\"RegionOne\")\n            .name(\"tf-test-container-1\")\n            .containerRead(\".r:*,.rlistings\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Any user can read any object, and list all objects in the container\n  container1:\n    type: openstack:objectstorage:Container\n    name: container_1\n    properties:\n      region: RegionOne\n      name: tf-test-container-1\n      containerRead: .r:*,.rlistings\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Write-Only Access for a User\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst current = openstack.identity.getAuthScope({\n    name: \"current\",\n});\n// The named user can only upload objects, not read objects or list the container\nconst container1 = new openstack.objectstorage.Container(\"container_1\", {\n    region: \"RegionOne\",\n    name: \"tf-test-container-1\",\n    containerRead: `.r:-${username}`,\n    containerWrite: current.then(current =\u003e `${current.projectId}:${username}`),\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\ncurrent = openstack.identity.get_auth_scope(name=\"current\")\n# The named user can only upload objects, not read objects or list the container\ncontainer1 = openstack.objectstorage.Container(\"container_1\",\n    region=\"RegionOne\",\n    name=\"tf-test-container-1\",\n    container_read=f\".r:-{username}\",\n    container_write=f\"{current.project_id}:{username}\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var current = OpenStack.Identity.GetAuthScope.Invoke(new()\n    {\n        Name = \"current\",\n    });\n\n    // The named user can only upload objects, not read objects or list the container\n    var container1 = new OpenStack.ObjectStorage.Container(\"container_1\", new()\n    {\n        Region = \"RegionOne\",\n        Name = \"tf-test-container-1\",\n        ContainerRead = $\".r:-{username}\",\n        ContainerWrite = $\"{current.Apply(getAuthScopeResult =\u003e getAuthScopeResult.ProjectId)}:{username}\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/identity\"\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/objectstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := identity.GetAuthScope(ctx, \u0026identity.GetAuthScopeArgs{\n\t\t\tName: \"current\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// The named user can only upload objects, not read objects or list the container\n\t\t_, err = objectstorage.NewContainer(ctx, \"container_1\", \u0026objectstorage.ContainerArgs{\n\t\t\tRegion:         pulumi.String(\"RegionOne\"),\n\t\t\tName:           pulumi.String(\"tf-test-container-1\"),\n\t\t\tContainerRead:  pulumi.Sprintf(\".r:-%v\", username),\n\t\t\tContainerWrite: pulumi.Sprintf(\"%v:%v\", current.ProjectId, username),\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.openstack.identity.IdentityFunctions;\nimport com.pulumi.openstack.identity.inputs.GetAuthScopeArgs;\nimport com.pulumi.openstack.objectstorage.Container;\nimport com.pulumi.openstack.objectstorage.ContainerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 current = IdentityFunctions.getAuthScope(GetAuthScopeArgs.builder()\n            .name(\"current\")\n            .build());\n\n        // The named user can only upload objects, not read objects or list the container\n        var container1 = new Container(\"container1\", ContainerArgs.builder()\n            .region(\"RegionOne\")\n            .name(\"tf-test-container-1\")\n            .containerRead(String.format(\".r:-%s\", username))\n            .containerWrite(String.format(\"%s:%s\", current.projectId(),username))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # The named user can only upload objects, not read objects or list the container\n  container1:\n    type: openstack:objectstorage:Container\n    name: container_1\n    properties:\n      region: RegionOne\n      name: tf-test-container-1\n      containerRead: .r:-${username}\n      containerWrite: ${current.projectId}:${username}\nvariables:\n  current:\n    fn::invoke:\n      function: openstack:identity:getAuthScope\n      arguments:\n        name: current\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Set a custom storage class in the Ceph RGW Swift API\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst container1 = new openstack.objectstorage.Container(\"container_1\", {\n    name: \"tf-test-container-1\",\n    storagePolicy: \"az1\",\n    storageClass: \"SSD\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\ncontainer1 = openstack.objectstorage.Container(\"container_1\",\n    name=\"tf-test-container-1\",\n    storage_policy=\"az1\",\n    storage_class=\"SSD\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var container1 = new OpenStack.ObjectStorage.Container(\"container_1\", new()\n    {\n        Name = \"tf-test-container-1\",\n        StoragePolicy = \"az1\",\n        StorageClass = \"SSD\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/objectstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := objectstorage.NewContainer(ctx, \"container_1\", \u0026objectstorage.ContainerArgs{\n\t\t\tName:          pulumi.String(\"tf-test-container-1\"),\n\t\t\tStoragePolicy: pulumi.String(\"az1\"),\n\t\t\tStorageClass:  pulumi.String(\"SSD\"),\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.openstack.objectstorage.Container;\nimport com.pulumi.openstack.objectstorage.ContainerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 container1 = new Container(\"container1\", ContainerArgs.builder()\n            .name(\"tf-test-container-1\")\n            .storagePolicy(\"az1\")\n            .storageClass(\"SSD\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  container1:\n    type: openstack:objectstorage:Container\n    name: container_1\n    properties:\n      name: tf-test-container-1\n      storagePolicy: az1\n      storageClass: SSD\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource can be imported by specifying the name of the container:\n\nSome attributes can't be imported :\n* `force_destroy`\n* `content_type`\n* `metadata`\n* `container_sync_to`\n* `container_sync_key`\n\nSo you'll have to `pulumi preview` and `pulumi up` after the import to fix those missing attributes.\n\n```sh\n$ pulumi import openstack:objectstorage/container:Container container_1 container_name\n```\n","properties":{"containerRead":{"type":"string","description":"Sets an access control list (ACL) that grants\nread access. This header can contain a comma-delimited list of users that can\nread the container (allows the GET method for all objects in the container).\nChanging this updates the access control list read access.\n"},"containerSyncKey":{"type":"string","description":"The secret key for container\nsynchronization. Changing this updates container synchronization.\n"},"containerSyncTo":{"type":"string","description":"The destination for container\nsynchronization. Changing this updates container synchronization.\n"},"containerWrite":{"type":"string","description":"Sets an ACL that grants write access. Changing\nthis updates the access control list write access.\n"},"contentType":{"type":"string","description":"The MIME type for the container. Changing this\nupdates the MIME type.\n"},"forceDestroy":{"type":"boolean","description":"A boolean that indicates all\nobjects should be deleted from the container so that the container can be\ndestroyed without error. These objects are not recoverable.\n"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom key/value pairs to associate with the\ncontainer. Changing this updates the existing container metadata.\n"},"name":{"type":"string","description":"A unique name for the container. Changing this creates a\nnew container.\n"},"region":{"type":"string","description":"The region in which to create the container. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new container.\n"},"storageClass":{"type":"string","description":"The storage class to be used for the container.\nChanging this creates a new container. This option is only available in Ceph\nRGW Swift API implementation.\n"},"storagePolicy":{"type":"string","description":"The storage policy to be used for the\ncontainer. Changing this creates a new container.\n"},"versioning":{"type":"boolean","description":"A boolean that can enable or disable object\nversioning. The default value is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. To use this feature, your Swift\nversion must be 2.24 or higher (as described in the [OpenStack Swift Ussuri\nrelease\nnotes](https://docs.openstack.org/releasenotes/swift/ussuri.html#relnotes-2-24-0-stable-ussuri)),\nand a cloud administrator must have set the \u003cspan pulumi-lang-nodejs=\"`allowObjectVersioning \" pulumi-lang-dotnet=\"`AllowObjectVersioning \" pulumi-lang-go=\"`allowObjectVersioning \" pulumi-lang-python=\"`allow_object_versioning \" pulumi-lang-yaml=\"`allowObjectVersioning \" pulumi-lang-java=\"`allowObjectVersioning \"\u003e`allow_object_versioning \u003c/span\u003e= true`\nconfiguration option in Swift. If you cannot set this versioning type, you\nmay want to consider using \u003cspan pulumi-lang-nodejs=\"`versioningLegacy`\" pulumi-lang-dotnet=\"`VersioningLegacy`\" pulumi-lang-go=\"`versioningLegacy`\" pulumi-lang-python=\"`versioning_legacy`\" pulumi-lang-yaml=\"`versioningLegacy`\" pulumi-lang-java=\"`versioningLegacy`\"\u003e`versioning_legacy`\u003c/span\u003e instead.\n"},"versioningLegacy":{"$ref":"#/types/openstack:objectstorage/ContainerVersioningLegacy:ContainerVersioningLegacy","description":"Enable legacy object versioning. The\nstructure is described below.\n","deprecationMessage":"Use newer \"versioning\" implementation"}},"required":["name","region","storageClass","storagePolicy"],"inputProperties":{"containerRead":{"type":"string","description":"Sets an access control list (ACL) that grants\nread access. This header can contain a comma-delimited list of users that can\nread the container (allows the GET method for all objects in the container).\nChanging this updates the access control list read access.\n"},"containerSyncKey":{"type":"string","description":"The secret key for container\nsynchronization. Changing this updates container synchronization.\n"},"containerSyncTo":{"type":"string","description":"The destination for container\nsynchronization. Changing this updates container synchronization.\n"},"containerWrite":{"type":"string","description":"Sets an ACL that grants write access. Changing\nthis updates the access control list write access.\n"},"contentType":{"type":"string","description":"The MIME type for the container. Changing this\nupdates the MIME type.\n"},"forceDestroy":{"type":"boolean","description":"A boolean that indicates all\nobjects should be deleted from the container so that the container can be\ndestroyed without error. These objects are not recoverable.\n"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom key/value pairs to associate with the\ncontainer. Changing this updates the existing container metadata.\n"},"name":{"type":"string","description":"A unique name for the container. Changing this creates a\nnew container.\n"},"region":{"type":"string","description":"The region in which to create the container. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new container.\n","willReplaceOnChanges":true},"storageClass":{"type":"string","description":"The storage class to be used for the container.\nChanging this creates a new container. This option is only available in Ceph\nRGW Swift API implementation.\n","willReplaceOnChanges":true},"storagePolicy":{"type":"string","description":"The storage policy to be used for the\ncontainer. Changing this creates a new container.\n","willReplaceOnChanges":true},"versioning":{"type":"boolean","description":"A boolean that can enable or disable object\nversioning. The default value is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. To use this feature, your Swift\nversion must be 2.24 or higher (as described in the [OpenStack Swift Ussuri\nrelease\nnotes](https://docs.openstack.org/releasenotes/swift/ussuri.html#relnotes-2-24-0-stable-ussuri)),\nand a cloud administrator must have set the \u003cspan pulumi-lang-nodejs=\"`allowObjectVersioning \" pulumi-lang-dotnet=\"`AllowObjectVersioning \" pulumi-lang-go=\"`allowObjectVersioning \" pulumi-lang-python=\"`allow_object_versioning \" pulumi-lang-yaml=\"`allowObjectVersioning \" pulumi-lang-java=\"`allowObjectVersioning \"\u003e`allow_object_versioning \u003c/span\u003e= true`\nconfiguration option in Swift. If you cannot set this versioning type, you\nmay want to consider using \u003cspan pulumi-lang-nodejs=\"`versioningLegacy`\" pulumi-lang-dotnet=\"`VersioningLegacy`\" pulumi-lang-go=\"`versioningLegacy`\" pulumi-lang-python=\"`versioning_legacy`\" pulumi-lang-yaml=\"`versioningLegacy`\" pulumi-lang-java=\"`versioningLegacy`\"\u003e`versioning_legacy`\u003c/span\u003e instead.\n"},"versioningLegacy":{"$ref":"#/types/openstack:objectstorage/ContainerVersioningLegacy:ContainerVersioningLegacy","description":"Enable legacy object versioning. The\nstructure is described below.\n","deprecationMessage":"Use newer \"versioning\" implementation"}},"stateInputs":{"description":"Input properties used for looking up and filtering Container resources.\n","properties":{"containerRead":{"type":"string","description":"Sets an access control list (ACL) that grants\nread access. This header can contain a comma-delimited list of users that can\nread the container (allows the GET method for all objects in the container).\nChanging this updates the access control list read access.\n"},"containerSyncKey":{"type":"string","description":"The secret key for container\nsynchronization. Changing this updates container synchronization.\n"},"containerSyncTo":{"type":"string","description":"The destination for container\nsynchronization. Changing this updates container synchronization.\n"},"containerWrite":{"type":"string","description":"Sets an ACL that grants write access. Changing\nthis updates the access control list write access.\n"},"contentType":{"type":"string","description":"The MIME type for the container. Changing this\nupdates the MIME type.\n"},"forceDestroy":{"type":"boolean","description":"A boolean that indicates all\nobjects should be deleted from the container so that the container can be\ndestroyed without error. These objects are not recoverable.\n"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"Custom key/value pairs to associate with the\ncontainer. Changing this updates the existing container metadata.\n"},"name":{"type":"string","description":"A unique name for the container. Changing this creates a\nnew container.\n"},"region":{"type":"string","description":"The region in which to create the container. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new container.\n","willReplaceOnChanges":true},"storageClass":{"type":"string","description":"The storage class to be used for the container.\nChanging this creates a new container. This option is only available in Ceph\nRGW Swift API implementation.\n","willReplaceOnChanges":true},"storagePolicy":{"type":"string","description":"The storage policy to be used for the\ncontainer. Changing this creates a new container.\n","willReplaceOnChanges":true},"versioning":{"type":"boolean","description":"A boolean that can enable or disable object\nversioning. The default value is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. To use this feature, your Swift\nversion must be 2.24 or higher (as described in the [OpenStack Swift Ussuri\nrelease\nnotes](https://docs.openstack.org/releasenotes/swift/ussuri.html#relnotes-2-24-0-stable-ussuri)),\nand a cloud administrator must have set the \u003cspan pulumi-lang-nodejs=\"`allowObjectVersioning \" pulumi-lang-dotnet=\"`AllowObjectVersioning \" pulumi-lang-go=\"`allowObjectVersioning \" pulumi-lang-python=\"`allow_object_versioning \" pulumi-lang-yaml=\"`allowObjectVersioning \" pulumi-lang-java=\"`allowObjectVersioning \"\u003e`allow_object_versioning \u003c/span\u003e= true`\nconfiguration option in Swift. If you cannot set this versioning type, you\nmay want to consider using \u003cspan pulumi-lang-nodejs=\"`versioningLegacy`\" pulumi-lang-dotnet=\"`VersioningLegacy`\" pulumi-lang-go=\"`versioningLegacy`\" pulumi-lang-python=\"`versioning_legacy`\" pulumi-lang-yaml=\"`versioningLegacy`\" pulumi-lang-java=\"`versioningLegacy`\"\u003e`versioning_legacy`\u003c/span\u003e instead.\n"},"versioningLegacy":{"$ref":"#/types/openstack:objectstorage/ContainerVersioningLegacy:ContainerVersioningLegacy","description":"Enable legacy object versioning. The\nstructure is described below.\n","deprecationMessage":"Use newer \"versioning\" implementation"}},"type":"object"}},"openstack:objectstorage/containerObject:ContainerObject":{"description":"Manages a V1 container object resource within OpenStack.\n\n## Example Usage\n\n### Example with simple content\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n  container1:\n    type: openstack:objectstorage:Container\n    name: container_1\n    properties:\n      region: RegionOne\n      name: tf-test-container-1\n      metadata:\n        - test: 'true'\n      contentType: application/json\n  doc1:\n    type: openstack:objectstorage:ContainerObject\n    name: doc_1\n    properties:\n      region: RegionOne\n      containerName: ${container1.name}\n      name: test/default.json\n      metadata:\n        - test: 'true'\n      contentType: application/json\n      content: |2\n                       {\n                         \\\"foo\\\" : \\\"bar\\\"\n                       }\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example with content from file\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n  container1:\n    type: openstack:objectstorage:Container\n    name: container_1\n    properties:\n      region: RegionOne\n      name: tf-test-container-1\n      metadata:\n        - test: 'true'\n      contentType: application/json\n  doc1:\n    type: openstack:objectstorage:ContainerObject\n    name: doc_1\n    properties:\n      region: RegionOne\n      containerName: ${container1.name}\n      name: test/default.json\n      metadata:\n        - test: 'true'\n      contentType: application/json\n      source: ./default.json\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"containerName":{"type":"string","description":"A unique (within an account) name for the container. \nThe container name must be from 1 to 256 characters long and can start\nwith any character and contain any pattern. Character set must be UTF-8.\nThe container name cannot contain a slash (/) character because this\ncharacter delimits the container and object name. For example, the path\n/v1/account/www/pages specifies the www container, not the www/pages container.\n"},"content":{"type":"string","description":"A string representing the content of the object. Conflicts with\n\u003cspan pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\"\u003e`source`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`copyFrom`\" pulumi-lang-dotnet=\"`CopyFrom`\" pulumi-lang-go=\"`copyFrom`\" pulumi-lang-python=\"`copy_from`\" pulumi-lang-yaml=\"`copyFrom`\" pulumi-lang-java=\"`copyFrom`\"\u003e`copy_from`\u003c/span\u003e.\n"},"contentDisposition":{"type":"string","description":"A string which specifies the override behavior for \nthe browser. For example, this header might specify that the browser use a download\nprogram to save this file rather than show the file, which is the default.\n"},"contentEncoding":{"type":"string","description":"A string representing the value of the Content-Encoding\nmetadata.\n"},"contentLength":{"type":"integer","description":"If the operation succeeds, this value is zero (0) or the \nlength of informational or error text in the response body.\n"},"contentType":{"type":"string","description":"A string which sets the MIME type for the object.\n"},"copyFrom":{"type":"string","description":"A string representing the name of an object \nused to create the new object by copying the \u003cspan pulumi-lang-nodejs=\"`copyFrom`\" pulumi-lang-dotnet=\"`CopyFrom`\" pulumi-lang-go=\"`copyFrom`\" pulumi-lang-python=\"`copy_from`\" pulumi-lang-yaml=\"`copyFrom`\" pulumi-lang-java=\"`copyFrom`\"\u003e`copy_from`\u003c/span\u003e object. The value is in form\n{container}/{object}. You must UTF-8-encode and then URL-encode the names of the\ncontainer and object before you include them in the header. Conflicts with \u003cspan pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\"\u003e`source`\u003c/span\u003e and\n\u003cspan pulumi-lang-nodejs=\"`content`\" pulumi-lang-dotnet=\"`Content`\" pulumi-lang-go=\"`content`\" pulumi-lang-python=\"`content`\" pulumi-lang-yaml=\"`content`\" pulumi-lang-java=\"`content`\"\u003e`content`\u003c/span\u003e.\n"},"date":{"type":"string","description":"The date and time the system responded to the request, using the preferred \nformat of RFC 7231 as shown in this example Thu, 16 Jun 2016 15:10:38 GMT. The\ntime is always in UTC.\n"},"deleteAfter":{"type":"integer","description":"An integer representing the number of seconds after which the\nsystem removes the object. Internally, the Object Storage system stores this value in\nthe X-Delete-At metadata item.\n"},"deleteAt":{"type":"string","description":"An string representing the date when the system removes the object. \nFor example, \"2015-08-26\" is equivalent to Mon, Wed, 26 Aug 2015 00:00:00 GMT.\n"},"detectContentType":{"type":"boolean","description":"If set to true, Object Storage guesses the content \ntype based on the file extension and ignores the value sent in the Content-Type\nheader, if present.\n"},"etag":{"type":"string","description":"Used to trigger updates. The only meaningful value is ${md5(file(\"path/to/file\"))}.\n"},"lastModified":{"type":"string","description":"The date and time when the object was last modified. The date and time \nstamp format is ISO 8601:\nCCYY-MM-DDThh:mm:ss±hh:mm\nFor example, 2015-08-27T09:49:58-05:00.\nThe ±hh:mm value, if included, is the time zone as an offset from UTC. In the previous\nexample, the offset value is -05:00.\n"},"metadata":{"type":"object","additionalProperties":{"type":"string"}},"name":{"type":"string","description":"A unique name for the object.\n"},"objectManifest":{"type":"string","description":"A string set to specify that this is a dynamic large \nobject manifest object. The value is the container and object name prefix of the\nsegment objects in the form container/prefix. You must UTF-8-encode and then\nURL-encode the names of the container and prefix before you include them in this\nheader.\n"},"region":{"type":"string","description":"The region in which to create the container. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new container.\n"},"source":{"type":"string","description":"A string representing the local path of a file which will be used\nas the object's content. Conflicts with \u003cspan pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\"\u003e`source`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`copyFrom`\" pulumi-lang-dotnet=\"`CopyFrom`\" pulumi-lang-go=\"`copyFrom`\" pulumi-lang-python=\"`copy_from`\" pulumi-lang-yaml=\"`copyFrom`\" pulumi-lang-java=\"`copyFrom`\"\u003e`copy_from`\u003c/span\u003e.\n"},"transId":{"type":"string","description":"A unique transaction ID for this request. Your service provider might \nneed this value if you report a problem.\n"}},"required":["containerName","contentDisposition","contentEncoding","contentLength","contentType","date","deleteAt","etag","lastModified","name","objectManifest","region","transId"],"inputProperties":{"containerName":{"type":"string","description":"A unique (within an account) name for the container. \nThe container name must be from 1 to 256 characters long and can start\nwith any character and contain any pattern. Character set must be UTF-8.\nThe container name cannot contain a slash (/) character because this\ncharacter delimits the container and object name. For example, the path\n/v1/account/www/pages specifies the www container, not the www/pages container.\n","willReplaceOnChanges":true},"content":{"type":"string","description":"A string representing the content of the object. Conflicts with\n\u003cspan pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\"\u003e`source`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`copyFrom`\" pulumi-lang-dotnet=\"`CopyFrom`\" pulumi-lang-go=\"`copyFrom`\" pulumi-lang-python=\"`copy_from`\" pulumi-lang-yaml=\"`copyFrom`\" pulumi-lang-java=\"`copyFrom`\"\u003e`copy_from`\u003c/span\u003e.\n"},"contentDisposition":{"type":"string","description":"A string which specifies the override behavior for \nthe browser. For example, this header might specify that the browser use a download\nprogram to save this file rather than show the file, which is the default.\n"},"contentEncoding":{"type":"string","description":"A string representing the value of the Content-Encoding\nmetadata.\n"},"contentType":{"type":"string","description":"A string which sets the MIME type for the object.\n"},"copyFrom":{"type":"string","description":"A string representing the name of an object \nused to create the new object by copying the \u003cspan pulumi-lang-nodejs=\"`copyFrom`\" pulumi-lang-dotnet=\"`CopyFrom`\" pulumi-lang-go=\"`copyFrom`\" pulumi-lang-python=\"`copy_from`\" pulumi-lang-yaml=\"`copyFrom`\" pulumi-lang-java=\"`copyFrom`\"\u003e`copy_from`\u003c/span\u003e object. The value is in form\n{container}/{object}. You must UTF-8-encode and then URL-encode the names of the\ncontainer and object before you include them in the header. Conflicts with \u003cspan pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\"\u003e`source`\u003c/span\u003e and\n\u003cspan pulumi-lang-nodejs=\"`content`\" pulumi-lang-dotnet=\"`Content`\" pulumi-lang-go=\"`content`\" pulumi-lang-python=\"`content`\" pulumi-lang-yaml=\"`content`\" pulumi-lang-java=\"`content`\"\u003e`content`\u003c/span\u003e.\n"},"deleteAfter":{"type":"integer","description":"An integer representing the number of seconds after which the\nsystem removes the object. Internally, the Object Storage system stores this value in\nthe X-Delete-At metadata item.\n"},"deleteAt":{"type":"string","description":"An string representing the date when the system removes the object. \nFor example, \"2015-08-26\" is equivalent to Mon, Wed, 26 Aug 2015 00:00:00 GMT.\n"},"detectContentType":{"type":"boolean","description":"If set to true, Object Storage guesses the content \ntype based on the file extension and ignores the value sent in the Content-Type\nheader, if present.\n"},"etag":{"type":"string","description":"Used to trigger updates. The only meaningful value is ${md5(file(\"path/to/file\"))}.\n"},"metadata":{"type":"object","additionalProperties":{"type":"string"}},"name":{"type":"string","description":"A unique name for the object.\n","willReplaceOnChanges":true},"objectManifest":{"type":"string","description":"A string set to specify that this is a dynamic large \nobject manifest object. The value is the container and object name prefix of the\nsegment objects in the form container/prefix. You must UTF-8-encode and then\nURL-encode the names of the container and prefix before you include them in this\nheader.\n"},"region":{"type":"string","description":"The region in which to create the container. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new container.\n","willReplaceOnChanges":true},"source":{"type":"string","description":"A string representing the local path of a file which will be used\nas the object's content. Conflicts with \u003cspan pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\"\u003e`source`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`copyFrom`\" pulumi-lang-dotnet=\"`CopyFrom`\" pulumi-lang-go=\"`copyFrom`\" pulumi-lang-python=\"`copy_from`\" pulumi-lang-yaml=\"`copyFrom`\" pulumi-lang-java=\"`copyFrom`\"\u003e`copy_from`\u003c/span\u003e.\n"}},"requiredInputs":["containerName"],"stateInputs":{"description":"Input properties used for looking up and filtering ContainerObject resources.\n","properties":{"containerName":{"type":"string","description":"A unique (within an account) name for the container. \nThe container name must be from 1 to 256 characters long and can start\nwith any character and contain any pattern. Character set must be UTF-8.\nThe container name cannot contain a slash (/) character because this\ncharacter delimits the container and object name. For example, the path\n/v1/account/www/pages specifies the www container, not the www/pages container.\n","willReplaceOnChanges":true},"content":{"type":"string","description":"A string representing the content of the object. Conflicts with\n\u003cspan pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\"\u003e`source`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`copyFrom`\" pulumi-lang-dotnet=\"`CopyFrom`\" pulumi-lang-go=\"`copyFrom`\" pulumi-lang-python=\"`copy_from`\" pulumi-lang-yaml=\"`copyFrom`\" pulumi-lang-java=\"`copyFrom`\"\u003e`copy_from`\u003c/span\u003e.\n"},"contentDisposition":{"type":"string","description":"A string which specifies the override behavior for \nthe browser. For example, this header might specify that the browser use a download\nprogram to save this file rather than show the file, which is the default.\n"},"contentEncoding":{"type":"string","description":"A string representing the value of the Content-Encoding\nmetadata.\n"},"contentLength":{"type":"integer","description":"If the operation succeeds, this value is zero (0) or the \nlength of informational or error text in the response body.\n"},"contentType":{"type":"string","description":"A string which sets the MIME type for the object.\n"},"copyFrom":{"type":"string","description":"A string representing the name of an object \nused to create the new object by copying the \u003cspan pulumi-lang-nodejs=\"`copyFrom`\" pulumi-lang-dotnet=\"`CopyFrom`\" pulumi-lang-go=\"`copyFrom`\" pulumi-lang-python=\"`copy_from`\" pulumi-lang-yaml=\"`copyFrom`\" pulumi-lang-java=\"`copyFrom`\"\u003e`copy_from`\u003c/span\u003e object. The value is in form\n{container}/{object}. You must UTF-8-encode and then URL-encode the names of the\ncontainer and object before you include them in the header. Conflicts with \u003cspan pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\"\u003e`source`\u003c/span\u003e and\n\u003cspan pulumi-lang-nodejs=\"`content`\" pulumi-lang-dotnet=\"`Content`\" pulumi-lang-go=\"`content`\" pulumi-lang-python=\"`content`\" pulumi-lang-yaml=\"`content`\" pulumi-lang-java=\"`content`\"\u003e`content`\u003c/span\u003e.\n"},"date":{"type":"string","description":"The date and time the system responded to the request, using the preferred \nformat of RFC 7231 as shown in this example Thu, 16 Jun 2016 15:10:38 GMT. The\ntime is always in UTC.\n"},"deleteAfter":{"type":"integer","description":"An integer representing the number of seconds after which the\nsystem removes the object. Internally, the Object Storage system stores this value in\nthe X-Delete-At metadata item.\n"},"deleteAt":{"type":"string","description":"An string representing the date when the system removes the object. \nFor example, \"2015-08-26\" is equivalent to Mon, Wed, 26 Aug 2015 00:00:00 GMT.\n"},"detectContentType":{"type":"boolean","description":"If set to true, Object Storage guesses the content \ntype based on the file extension and ignores the value sent in the Content-Type\nheader, if present.\n"},"etag":{"type":"string","description":"Used to trigger updates. The only meaningful value is ${md5(file(\"path/to/file\"))}.\n"},"lastModified":{"type":"string","description":"The date and time when the object was last modified. The date and time \nstamp format is ISO 8601:\nCCYY-MM-DDThh:mm:ss±hh:mm\nFor example, 2015-08-27T09:49:58-05:00.\nThe ±hh:mm value, if included, is the time zone as an offset from UTC. In the previous\nexample, the offset value is -05:00.\n"},"metadata":{"type":"object","additionalProperties":{"type":"string"}},"name":{"type":"string","description":"A unique name for the object.\n","willReplaceOnChanges":true},"objectManifest":{"type":"string","description":"A string set to specify that this is a dynamic large \nobject manifest object. The value is the container and object name prefix of the\nsegment objects in the form container/prefix. You must UTF-8-encode and then\nURL-encode the names of the container and prefix before you include them in this\nheader.\n"},"region":{"type":"string","description":"The region in which to create the container. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new container.\n","willReplaceOnChanges":true},"source":{"type":"string","description":"A string representing the local path of a file which will be used\nas the object's content. Conflicts with \u003cspan pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\"\u003e`source`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`copyFrom`\" pulumi-lang-dotnet=\"`CopyFrom`\" pulumi-lang-go=\"`copyFrom`\" pulumi-lang-python=\"`copy_from`\" pulumi-lang-yaml=\"`copyFrom`\" pulumi-lang-java=\"`copyFrom`\"\u003e`copy_from`\u003c/span\u003e.\n"},"transId":{"type":"string","description":"A unique transaction ID for this request. Your service provider might \nneed this value if you report a problem.\n"}},"type":"object"}},"openstack:objectstorage/tempUrl:TempUrl":{"description":"Use this resource to generate an OpenStack Object Storage temporary URL.\n\nThe temporary URL will be valid for as long as TTL is set to (in seconds).\nOnce the URL has expired, it will no longer be valid, but the resource\nwill remain in place. If you wish to automatically regenerate a URL, set\nthe \u003cspan pulumi-lang-nodejs=\"`regenerate`\" pulumi-lang-dotnet=\"`Regenerate`\" pulumi-lang-go=\"`regenerate`\" pulumi-lang-python=\"`regenerate`\" pulumi-lang-yaml=\"`regenerate`\" pulumi-lang-java=\"`regenerate`\"\u003e`regenerate`\u003c/span\u003e argument to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e. This will create a new resource with\na new ID and URL.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst container1 = new openstack.objectstorage.Container(\"container_1\", {\n    name: \"test\",\n    metadata: {\n        \"Temp-URL-Key\": \"testkey\",\n    },\n});\nconst object1 = new openstack.objectstorage.ContainerObject(\"object_1\", {\n    containerName: container1.name,\n    name: \"test\",\n    content: \"Hello, world!\",\n});\nconst objTempurl = new openstack.objectstorage.TempUrl(\"obj_tempurl\", {\n    container: container1.name,\n    object: object1.name,\n    method: \"post\",\n    ttl: 20,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\ncontainer1 = openstack.objectstorage.Container(\"container_1\",\n    name=\"test\",\n    metadata={\n        \"Temp-URL-Key\": \"testkey\",\n    })\nobject1 = openstack.objectstorage.ContainerObject(\"object_1\",\n    container_name=container1.name,\n    name=\"test\",\n    content=\"Hello, world!\")\nobj_tempurl = openstack.objectstorage.TempUrl(\"obj_tempurl\",\n    container=container1.name,\n    object=object1.name,\n    method=\"post\",\n    ttl=20)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var container1 = new OpenStack.ObjectStorage.Container(\"container_1\", new()\n    {\n        Name = \"test\",\n        Metadata = \n        {\n            { \"Temp-URL-Key\", \"testkey\" },\n        },\n    });\n\n    var object1 = new OpenStack.ObjectStorage.ContainerObject(\"object_1\", new()\n    {\n        ContainerName = container1.Name,\n        Name = \"test\",\n        Content = \"Hello, world!\",\n    });\n\n    var objTempurl = new OpenStack.ObjectStorage.TempUrl(\"obj_tempurl\", new()\n    {\n        Container = container1.Name,\n        Object = object1.Name,\n        Method = \"post\",\n        Ttl = 20,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/objectstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcontainer1, err := objectstorage.NewContainer(ctx, \"container_1\", \u0026objectstorage.ContainerArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"Temp-URL-Key\": pulumi.String(\"testkey\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject1, err := objectstorage.NewContainerObject(ctx, \"object_1\", \u0026objectstorage.ContainerObjectArgs{\n\t\t\tContainerName: container1.Name,\n\t\t\tName:          pulumi.String(\"test\"),\n\t\t\tContent:       pulumi.String(\"Hello, world!\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = objectstorage.NewTempUrl(ctx, \"obj_tempurl\", \u0026objectstorage.TempUrlArgs{\n\t\t\tContainer: container1.Name,\n\t\t\tObject:    object1.Name,\n\t\t\tMethod:    pulumi.String(\"post\"),\n\t\t\tTtl:       pulumi.Int(20),\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.openstack.objectstorage.Container;\nimport com.pulumi.openstack.objectstorage.ContainerArgs;\nimport com.pulumi.openstack.objectstorage.ContainerObject;\nimport com.pulumi.openstack.objectstorage.ContainerObjectArgs;\nimport com.pulumi.openstack.objectstorage.TempUrl;\nimport com.pulumi.openstack.objectstorage.TempUrlArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 container1 = new Container(\"container1\", ContainerArgs.builder()\n            .name(\"test\")\n            .metadata(Map.of(\"Temp-URL-Key\", \"testkey\"))\n            .build());\n\n        var object1 = new ContainerObject(\"object1\", ContainerObjectArgs.builder()\n            .containerName(container1.name())\n            .name(\"test\")\n            .content(\"Hello, world!\")\n            .build());\n\n        var objTempurl = new TempUrl(\"objTempurl\", TempUrlArgs.builder()\n            .container(container1.name())\n            .object(object1.name())\n            .method(\"post\")\n            .ttl(20)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  container1:\n    type: openstack:objectstorage:Container\n    name: container_1\n    properties:\n      name: test\n      metadata:\n        Temp-URL-Key: testkey\n  object1:\n    type: openstack:objectstorage:ContainerObject\n    name: object_1\n    properties:\n      containerName: ${container1.name}\n      name: test\n      content: Hello, world!\n  objTempurl:\n    type: openstack:objectstorage:TempUrl\n    name: obj_tempurl\n    properties:\n      container: ${container1.name}\n      object: ${object1.name}\n      method: post\n      ttl: 20\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"container":{"type":"string","description":"The container name the object belongs to.\n"},"digest":{"type":"string","description":"The digest to use when generating the tempurl.\nSupported values are \u003cspan pulumi-lang-nodejs=\"`sha1`\" pulumi-lang-dotnet=\"`Sha1`\" pulumi-lang-go=\"`sha1`\" pulumi-lang-python=\"`sha1`\" pulumi-lang-yaml=\"`sha1`\" pulumi-lang-java=\"`sha1`\"\u003e`sha1`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`sha256`\" pulumi-lang-dotnet=\"`Sha256`\" pulumi-lang-go=\"`sha256`\" pulumi-lang-python=\"`sha256`\" pulumi-lang-yaml=\"`sha256`\" pulumi-lang-java=\"`sha256`\"\u003e`sha256`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`sha512`\" pulumi-lang-dotnet=\"`Sha512`\" pulumi-lang-go=\"`sha512`\" pulumi-lang-python=\"`sha512`\" pulumi-lang-yaml=\"`sha512`\" pulumi-lang-java=\"`sha512`\"\u003e`sha512`\u003c/span\u003e. Default is \u003cspan pulumi-lang-nodejs=\"`sha1`\" pulumi-lang-dotnet=\"`Sha1`\" pulumi-lang-go=\"`sha1`\" pulumi-lang-python=\"`sha1`\" pulumi-lang-yaml=\"`sha1`\" pulumi-lang-java=\"`sha1`\"\u003e`sha1`\u003c/span\u003e.\n"},"key":{"type":"string","description":"The key to use when generating the tempurl. If not\nprovided, the key will be read from the container or account metadata.\n","secret":true},"method":{"type":"string","description":"The method allowed when accessing this URL.\nValid values are `GET`, and `POST`. Default is `GET`.\n"},"object":{"type":"string","description":"The object name the tempurl is for.\n"},"regenerate":{"type":"boolean","description":"Whether to automatically regenerate the URL when\nit has expired. If set to true, this will create a new resource with a new\nID and new URL. Defaults to false.\n"},"region":{"type":"string","description":"The region the tempurl is located in.\n"},"split":{"type":"string","description":"Split is the string on which to split the object URL.\nDefault is `/v1/`.\n"},"ttl":{"type":"integer","description":"The TTL, in seconds, for the URL. For how long it should\nbe valid.\n"},"url":{"type":"string","description":"The URL\n","secret":true}},"required":["container","object","region","ttl","url"],"inputProperties":{"container":{"type":"string","description":"The container name the object belongs to.\n","willReplaceOnChanges":true},"digest":{"type":"string","description":"The digest to use when generating the tempurl.\nSupported values are \u003cspan pulumi-lang-nodejs=\"`sha1`\" pulumi-lang-dotnet=\"`Sha1`\" pulumi-lang-go=\"`sha1`\" pulumi-lang-python=\"`sha1`\" pulumi-lang-yaml=\"`sha1`\" pulumi-lang-java=\"`sha1`\"\u003e`sha1`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`sha256`\" pulumi-lang-dotnet=\"`Sha256`\" pulumi-lang-go=\"`sha256`\" pulumi-lang-python=\"`sha256`\" pulumi-lang-yaml=\"`sha256`\" pulumi-lang-java=\"`sha256`\"\u003e`sha256`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`sha512`\" pulumi-lang-dotnet=\"`Sha512`\" pulumi-lang-go=\"`sha512`\" pulumi-lang-python=\"`sha512`\" pulumi-lang-yaml=\"`sha512`\" pulumi-lang-java=\"`sha512`\"\u003e`sha512`\u003c/span\u003e. Default is \u003cspan pulumi-lang-nodejs=\"`sha1`\" pulumi-lang-dotnet=\"`Sha1`\" pulumi-lang-go=\"`sha1`\" pulumi-lang-python=\"`sha1`\" pulumi-lang-yaml=\"`sha1`\" pulumi-lang-java=\"`sha1`\"\u003e`sha1`\u003c/span\u003e.\n","willReplaceOnChanges":true},"key":{"type":"string","description":"The key to use when generating the tempurl. If not\nprovided, the key will be read from the container or account metadata.\n","secret":true,"willReplaceOnChanges":true},"method":{"type":"string","description":"The method allowed when accessing this URL.\nValid values are `GET`, and `POST`. Default is `GET`.\n","willReplaceOnChanges":true},"object":{"type":"string","description":"The object name the tempurl is for.\n","willReplaceOnChanges":true},"regenerate":{"type":"boolean","description":"Whether to automatically regenerate the URL when\nit has expired. If set to true, this will create a new resource with a new\nID and new URL. Defaults to false.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region the tempurl is located in.\n","willReplaceOnChanges":true},"split":{"type":"string","description":"Split is the string on which to split the object URL.\nDefault is `/v1/`.\n","willReplaceOnChanges":true},"ttl":{"type":"integer","description":"The TTL, in seconds, for the URL. For how long it should\nbe valid.\n","willReplaceOnChanges":true}},"requiredInputs":["container","object","ttl"],"stateInputs":{"description":"Input properties used for looking up and filtering TempUrl resources.\n","properties":{"container":{"type":"string","description":"The container name the object belongs to.\n","willReplaceOnChanges":true},"digest":{"type":"string","description":"The digest to use when generating the tempurl.\nSupported values are \u003cspan pulumi-lang-nodejs=\"`sha1`\" pulumi-lang-dotnet=\"`Sha1`\" pulumi-lang-go=\"`sha1`\" pulumi-lang-python=\"`sha1`\" pulumi-lang-yaml=\"`sha1`\" pulumi-lang-java=\"`sha1`\"\u003e`sha1`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`sha256`\" pulumi-lang-dotnet=\"`Sha256`\" pulumi-lang-go=\"`sha256`\" pulumi-lang-python=\"`sha256`\" pulumi-lang-yaml=\"`sha256`\" pulumi-lang-java=\"`sha256`\"\u003e`sha256`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`sha512`\" pulumi-lang-dotnet=\"`Sha512`\" pulumi-lang-go=\"`sha512`\" pulumi-lang-python=\"`sha512`\" pulumi-lang-yaml=\"`sha512`\" pulumi-lang-java=\"`sha512`\"\u003e`sha512`\u003c/span\u003e. Default is \u003cspan pulumi-lang-nodejs=\"`sha1`\" pulumi-lang-dotnet=\"`Sha1`\" pulumi-lang-go=\"`sha1`\" pulumi-lang-python=\"`sha1`\" pulumi-lang-yaml=\"`sha1`\" pulumi-lang-java=\"`sha1`\"\u003e`sha1`\u003c/span\u003e.\n","willReplaceOnChanges":true},"key":{"type":"string","description":"The key to use when generating the tempurl. If not\nprovided, the key will be read from the container or account metadata.\n","secret":true,"willReplaceOnChanges":true},"method":{"type":"string","description":"The method allowed when accessing this URL.\nValid values are `GET`, and `POST`. Default is `GET`.\n","willReplaceOnChanges":true},"object":{"type":"string","description":"The object name the tempurl is for.\n","willReplaceOnChanges":true},"regenerate":{"type":"boolean","description":"Whether to automatically regenerate the URL when\nit has expired. If set to true, this will create a new resource with a new\nID and new URL. Defaults to false.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region the tempurl is located in.\n","willReplaceOnChanges":true},"split":{"type":"string","description":"Split is the string on which to split the object URL.\nDefault is `/v1/`.\n","willReplaceOnChanges":true},"ttl":{"type":"integer","description":"The TTL, in seconds, for the URL. For how long it should\nbe valid.\n","willReplaceOnChanges":true},"url":{"type":"string","description":"The URL\n","secret":true}},"type":"object"}},"openstack:orchestration/stackV1:StackV1":{"description":"Manages a V1 stack resource within OpenStack.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst stack1 = new openstack.orchestration.StackV1(\"stack_1\", {\n    name: \"stack_1\",\n    parameters: {\n        length: \"4\",\n    },\n    templateOpts: {\n        Bin: `heat_template_version: 2013-05-23\nparameters:\n  length:\n    type: number\nresources:\n  test_res:\n    type: OS::Heat::TestResource\n  random:\n    type: OS::Heat::RandomString\n    properties:\n      length: {get_param: length}\n`,\n    },\n    environmentOpts: {\n        Bin: \"\\n\",\n    },\n    disableRollback: true,\n    timeout: 30,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nstack1 = openstack.orchestration.StackV1(\"stack_1\",\n    name=\"stack_1\",\n    parameters={\n        \"length\": \"4\",\n    },\n    template_opts={\n        \"Bin\": \"\"\"heat_template_version: 2013-05-23\nparameters:\n  length:\n    type: number\nresources:\n  test_res:\n    type: OS::Heat::TestResource\n  random:\n    type: OS::Heat::RandomString\n    properties:\n      length: {get_param: length}\n\"\"\",\n    },\n    environment_opts={\n        \"Bin\": \"\\n\",\n    },\n    disable_rollback=True,\n    timeout=30)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var stack1 = new OpenStack.Orchestration.StackV1(\"stack_1\", new()\n    {\n        Name = \"stack_1\",\n        Parameters = \n        {\n            { \"length\", \"4\" },\n        },\n        TemplateOpts = \n        {\n            { \"Bin\", @\"heat_template_version: 2013-05-23\nparameters:\n  length:\n    type: number\nresources:\n  test_res:\n    type: OS::Heat::TestResource\n  random:\n    type: OS::Heat::RandomString\n    properties:\n      length: {get_param: length}\n\" },\n        },\n        EnvironmentOpts = \n        {\n            { \"Bin\", @\"\n\" },\n        },\n        DisableRollback = true,\n        Timeout = 30,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/orchestration\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := orchestration.NewStackV1(ctx, \"stack_1\", \u0026orchestration.StackV1Args{\n\t\t\tName: pulumi.String(\"stack_1\"),\n\t\t\tParameters: pulumi.StringMap{\n\t\t\t\t\"length\": pulumi.String(\"4\"),\n\t\t\t},\n\t\t\tTemplateOpts: pulumi.StringMap{\n\t\t\t\t\"Bin\": pulumi.String(`heat_template_version: 2013-05-23\nparameters:\n  length:\n    type: number\nresources:\n  test_res:\n    type: OS::Heat::TestResource\n  random:\n    type: OS::Heat::RandomString\n    properties:\n      length: {get_param: length}\n`),\n\t\t\t},\n\t\t\tEnvironmentOpts: pulumi.StringMap{\n\t\t\t\t\"Bin\": pulumi.String(\"\\n\"),\n\t\t\t},\n\t\t\tDisableRollback: pulumi.Bool(true),\n\t\t\tTimeout:         pulumi.Int(30),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openstack.orchestration.StackV1;\nimport com.pulumi.openstack.orchestration.StackV1Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 stack1 = new StackV1(\"stack1\", StackV1Args.builder()\n            .name(\"stack_1\")\n            .parameters(Map.of(\"length\", \"4\"))\n            .templateOpts(Map.of(\"Bin\", \"\"\"\nheat_template_version: 2013-05-23\nparameters:\n  length:\n    type: number\nresources:\n  test_res:\n    type: OS::Heat::TestResource\n  random:\n    type: OS::Heat::RandomString\n    properties:\n      length: {get_param: length}\n            \"\"\"))\n            .environmentOpts(Map.of(\"Bin\", \"\"\"\n\n            \"\"\"))\n            .disableRollback(true)\n            .timeout(30)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  stack1:\n    type: openstack:orchestration:StackV1\n    name: stack_1\n    properties:\n      name: stack_1\n      parameters:\n        length: 4\n      templateOpts:\n        Bin: |\n          heat_template_version: 2013-05-23\n          parameters:\n            length:\n              type: number\n          resources:\n            test_res:\n              type: OS::Heat::TestResource\n            random:\n              type: OS::Heat::RandomString\n              properties:\n                length: {get_param: length}\n      environmentOpts:\n        Bin: |2+\n      disableRollback: true\n      timeout: 30\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nstacks can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:orchestration/stackV1:StackV1 stack_1 ea257959-eeb1-4c10-8d33-26f0409a755d\n```\n","properties":{"StackOutputs":{"type":"array","items":{"$ref":"#/types/openstack:orchestration/StackV1StackOutput:StackV1StackOutput"},"description":"A list of stack outputs.\n"},"capabilities":{"type":"array","items":{"type":"string"},"description":"List of stack capabilities for stack.\n"},"creationTime":{"type":"string","description":"The date and time when the resource was created. The date\nand time stamp format is ISO 8601: CCYY-MM-DDThh:mm:ss±hh:mm\nFor example, 2015-08-27T09:49:58-05:00. The ±hh:mm value, if included,\nis the time zone as an offset from UTC.\n"},"description":{"type":"string","description":"The description of the stack resource.\n"},"disableRollback":{"type":"boolean","description":"Enables or disables deletion of all stack\nresources when a stack creation fails. Default is true, meaning all\nresources are not deleted when stack creation fails.\n"},"environmentOpts":{"type":"object","additionalProperties":{"type":"string"},"description":"Environment key/value pairs to associate with\nthe stack which contains details for the environment of the stack.\nAllowed keys: Bin, URL, Files. Changing this updates the existing stack\nEnvironment Opts.\n"},"name":{"type":"string","description":"A unique name for the stack. It must start with an\nalphabetic character. Changing this updates the stack's name.\n"},"notificationTopics":{"type":"array","items":{"type":"string"},"description":"List of notification topics for stack.\n"},"parameters":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined key/value pairs as parameters to pass\nto the template. Changing this updates the existing stack parameters.\n"},"region":{"type":"string","description":"The region in which to create the stack. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new stack.\n"},"status":{"type":"string","description":"The status of the stack.\n"},"statusReason":{"type":"string","description":"The reason for the current status of the stack.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags to assosciate with the Stack\n"},"templateDescription":{"type":"string","description":"The description of the stack template.\n"},"templateOpts":{"type":"object","additionalProperties":{"type":"string"},"description":"Template key/value pairs to associate with the\nstack which contains either the template file or url.\nAllowed keys: Bin, URL, Files. Changing this updates the existing stack\nTemplate Opts.\n"},"timeout":{"type":"integer","description":"The timeout for stack action in minutes.\n"},"updatedTime":{"type":"string","description":"The date and time when the resource was updated. The date\nand time stamp format is ISO 8601: CCYY-MM-DDThh:mm:ss±hh:mm\nFor example, 2015-08-27T09:49:58-05:00. The ±hh:mm value, if included,\nis the time zone as an offset from UTC.\n"}},"required":["capabilities","creationTime","description","disableRollback","name","notificationTopics","StackOutputs","region","status","statusReason","tags","templateDescription","templateOpts","timeout","updatedTime"],"inputProperties":{"StackOutputs":{"type":"array","items":{"$ref":"#/types/openstack:orchestration/StackV1StackOutput:StackV1StackOutput"},"description":"A list of stack outputs.\n"},"capabilities":{"type":"array","items":{"type":"string"},"description":"List of stack capabilities for stack.\n"},"creationTime":{"type":"string","description":"The date and time when the resource was created. The date\nand time stamp format is ISO 8601: CCYY-MM-DDThh:mm:ss±hh:mm\nFor example, 2015-08-27T09:49:58-05:00. The ±hh:mm value, if included,\nis the time zone as an offset from UTC.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"The description of the stack resource.\n"},"disableRollback":{"type":"boolean","description":"Enables or disables deletion of all stack\nresources when a stack creation fails. Default is true, meaning all\nresources are not deleted when stack creation fails.\n"},"environmentOpts":{"type":"object","additionalProperties":{"type":"string"},"description":"Environment key/value pairs to associate with\nthe stack which contains details for the environment of the stack.\nAllowed keys: Bin, URL, Files. Changing this updates the existing stack\nEnvironment Opts.\n"},"name":{"type":"string","description":"A unique name for the stack. It must start with an\nalphabetic character. Changing this updates the stack's name.\n"},"notificationTopics":{"type":"array","items":{"type":"string"},"description":"List of notification topics for stack.\n"},"parameters":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined key/value pairs as parameters to pass\nto the template. Changing this updates the existing stack parameters.\n"},"region":{"type":"string","description":"The region in which to create the stack. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new stack.\n","willReplaceOnChanges":true},"status":{"type":"string","description":"The status of the stack.\n"},"statusReason":{"type":"string","description":"The reason for the current status of the stack.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags to assosciate with the Stack\n"},"templateDescription":{"type":"string","description":"The description of the stack template.\n"},"templateOpts":{"type":"object","additionalProperties":{"type":"string"},"description":"Template key/value pairs to associate with the\nstack which contains either the template file or url.\nAllowed keys: Bin, URL, Files. Changing this updates the existing stack\nTemplate Opts.\n"},"timeout":{"type":"integer","description":"The timeout for stack action in minutes.\n"},"updatedTime":{"type":"string","description":"The date and time when the resource was updated. The date\nand time stamp format is ISO 8601: CCYY-MM-DDThh:mm:ss±hh:mm\nFor example, 2015-08-27T09:49:58-05:00. The ±hh:mm value, if included,\nis the time zone as an offset from UTC.\n"}},"requiredInputs":["templateOpts"],"stateInputs":{"description":"Input properties used for looking up and filtering StackV1 resources.\n","properties":{"StackOutputs":{"type":"array","items":{"$ref":"#/types/openstack:orchestration/StackV1StackOutput:StackV1StackOutput"},"description":"A list of stack outputs.\n"},"capabilities":{"type":"array","items":{"type":"string"},"description":"List of stack capabilities for stack.\n"},"creationTime":{"type":"string","description":"The date and time when the resource was created. The date\nand time stamp format is ISO 8601: CCYY-MM-DDThh:mm:ss±hh:mm\nFor example, 2015-08-27T09:49:58-05:00. The ±hh:mm value, if included,\nis the time zone as an offset from UTC.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"The description of the stack resource.\n"},"disableRollback":{"type":"boolean","description":"Enables or disables deletion of all stack\nresources when a stack creation fails. Default is true, meaning all\nresources are not deleted when stack creation fails.\n"},"environmentOpts":{"type":"object","additionalProperties":{"type":"string"},"description":"Environment key/value pairs to associate with\nthe stack which contains details for the environment of the stack.\nAllowed keys: Bin, URL, Files. Changing this updates the existing stack\nEnvironment Opts.\n"},"name":{"type":"string","description":"A unique name for the stack. It must start with an\nalphabetic character. Changing this updates the stack's name.\n"},"notificationTopics":{"type":"array","items":{"type":"string"},"description":"List of notification topics for stack.\n"},"parameters":{"type":"object","additionalProperties":{"type":"string"},"description":"User-defined key/value pairs as parameters to pass\nto the template. Changing this updates the existing stack parameters.\n"},"region":{"type":"string","description":"The region in which to create the stack. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this\ncreates a new stack.\n","willReplaceOnChanges":true},"status":{"type":"string","description":"The status of the stack.\n"},"statusReason":{"type":"string","description":"The reason for the current status of the stack.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags to assosciate with the Stack\n"},"templateDescription":{"type":"string","description":"The description of the stack template.\n"},"templateOpts":{"type":"object","additionalProperties":{"type":"string"},"description":"Template key/value pairs to associate with the\nstack which contains either the template file or url.\nAllowed keys: Bin, URL, Files. Changing this updates the existing stack\nTemplate Opts.\n"},"timeout":{"type":"integer","description":"The timeout for stack action in minutes.\n"},"updatedTime":{"type":"string","description":"The date and time when the resource was updated. The date\nand time stamp format is ISO 8601: CCYY-MM-DDThh:mm:ss±hh:mm\nFor example, 2015-08-27T09:49:58-05:00. The ±hh:mm value, if included,\nis the time zone as an offset from UTC.\n"}},"type":"object"}},"openstack:sharedfilesystem/securityService:SecurityService":{"description":"Use this resource to configure a security service.\n\n\u003e **Note:** All arguments including the security service password will be\nstored in the raw state as plain-text. [Read more about sensitive data in\nstate](https://www.terraform.io/docs/state/sensitive-data.html).\n\nA security service stores configuration information for clients for\nauthentication and authorization (AuthN/AuthZ). For example, a share server\nwill be the client for an existing service such as LDAP, Kerberos, or\nMicrosoft Active Directory.\n\nMinimum supported Manila microversion is 2.7.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst securityservice1 = new openstack.sharedfilesystem.SecurityService(\"securityservice_1\", {\n    name: \"security\",\n    description: \"created by terraform\",\n    type: \"active_directory\",\n    server: \"192.168.199.10\",\n    dnsIp: \"192.168.199.10\",\n    domain: \"example.com\",\n    ou: \"CN=Computers,DC=example,DC=com\",\n    user: \"joinDomainUser\",\n    password: \"s8cret\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nsecurityservice1 = openstack.sharedfilesystem.SecurityService(\"securityservice_1\",\n    name=\"security\",\n    description=\"created by terraform\",\n    type=\"active_directory\",\n    server=\"192.168.199.10\",\n    dns_ip=\"192.168.199.10\",\n    domain=\"example.com\",\n    ou=\"CN=Computers,DC=example,DC=com\",\n    user=\"joinDomainUser\",\n    password=\"s8cret\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var securityservice1 = new OpenStack.SharedFileSystem.SecurityService(\"securityservice_1\", new()\n    {\n        Name = \"security\",\n        Description = \"created by terraform\",\n        Type = \"active_directory\",\n        Server = \"192.168.199.10\",\n        DnsIp = \"192.168.199.10\",\n        Domain = \"example.com\",\n        Ou = \"CN=Computers,DC=example,DC=com\",\n        User = \"joinDomainUser\",\n        Password = \"s8cret\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/sharedfilesystem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sharedfilesystem.NewSecurityService(ctx, \"securityservice_1\", \u0026sharedfilesystem.SecurityServiceArgs{\n\t\t\tName:        pulumi.String(\"security\"),\n\t\t\tDescription: pulumi.String(\"created by terraform\"),\n\t\t\tType:        pulumi.String(\"active_directory\"),\n\t\t\tServer:      pulumi.String(\"192.168.199.10\"),\n\t\t\tDnsIp:       pulumi.String(\"192.168.199.10\"),\n\t\t\tDomain:      pulumi.String(\"example.com\"),\n\t\t\tOu:          pulumi.String(\"CN=Computers,DC=example,DC=com\"),\n\t\t\tUser:        pulumi.String(\"joinDomainUser\"),\n\t\t\tPassword:    pulumi.String(\"s8cret\"),\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.openstack.sharedfilesystem.SecurityService;\nimport com.pulumi.openstack.sharedfilesystem.SecurityServiceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 securityservice1 = new SecurityService(\"securityservice1\", SecurityServiceArgs.builder()\n            .name(\"security\")\n            .description(\"created by terraform\")\n            .type(\"active_directory\")\n            .server(\"192.168.199.10\")\n            .dnsIp(\"192.168.199.10\")\n            .domain(\"example.com\")\n            .ou(\"CN=Computers,DC=example,DC=com\")\n            .user(\"joinDomainUser\")\n            .password(\"s8cret\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  securityservice1:\n    type: openstack:sharedfilesystem:SecurityService\n    name: securityservice_1\n    properties:\n      name: security\n      description: created by terraform\n      type: active_directory\n      server: 192.168.199.10\n      dnsIp: 192.168.199.10\n      domain: example.com\n      ou: CN=Computers,DC=example,DC=com\n      user: joinDomainUser\n      password: s8cret\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource can be imported by specifying the ID of the security service:\n\n```sh\n$ pulumi import openstack:sharedfilesystem/securityService:SecurityService securityservice_1 id\n```\n","properties":{"description":{"type":"string","description":"The human-readable description for the security service.\nChanging this updates the description of the existing security service.\n"},"dnsIp":{"type":"string","description":"The security service DNS IP address that is used inside the\ntenant network.\n"},"domain":{"type":"string","description":"The security service domain.\n"},"name":{"type":"string","description":"The name of the security service. Changing this updates the name\nof the existing security service.\n"},"ou":{"type":"string","description":"The security service ou. An organizational unit can be added to\nspecify where the share ends up. New in Manila microversion 2.44.\n"},"password":{"type":"string","description":"The user password, if you specify a user.\n","secret":true},"projectId":{"type":"string","description":"The owner of the Security Service.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Shared File System client.\nA Shared File System client is needed to create a security service. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nsecurity service.\n"},"server":{"type":"string","description":"The security service host name or IP address.\n"},"type":{"type":"string","description":"The security service type - can either be active\\_directory,\nkerberos or ldap.  Changing this updates the existing security service.\n"},"user":{"type":"string","description":"The security service user or group name that is used by the\ntenant.\n"}},"required":["name","projectId","region","type"],"inputProperties":{"description":{"type":"string","description":"The human-readable description for the security service.\nChanging this updates the description of the existing security service.\n"},"dnsIp":{"type":"string","description":"The security service DNS IP address that is used inside the\ntenant network.\n"},"domain":{"type":"string","description":"The security service domain.\n"},"name":{"type":"string","description":"The name of the security service. Changing this updates the name\nof the existing security service.\n"},"ou":{"type":"string","description":"The security service ou. An organizational unit can be added to\nspecify where the share ends up. New in Manila microversion 2.44.\n"},"password":{"type":"string","description":"The user password, if you specify a user.\n","secret":true},"region":{"type":"string","description":"The region in which to obtain the V2 Shared File System client.\nA Shared File System client is needed to create a security service. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nsecurity service.\n","willReplaceOnChanges":true},"server":{"type":"string","description":"The security service host name or IP address.\n"},"type":{"type":"string","description":"The security service type - can either be active\\_directory,\nkerberos or ldap.  Changing this updates the existing security service.\n"},"user":{"type":"string","description":"The security service user or group name that is used by the\ntenant.\n"}},"requiredInputs":["type"],"stateInputs":{"description":"Input properties used for looking up and filtering SecurityService resources.\n","properties":{"description":{"type":"string","description":"The human-readable description for the security service.\nChanging this updates the description of the existing security service.\n"},"dnsIp":{"type":"string","description":"The security service DNS IP address that is used inside the\ntenant network.\n"},"domain":{"type":"string","description":"The security service domain.\n"},"name":{"type":"string","description":"The name of the security service. Changing this updates the name\nof the existing security service.\n"},"ou":{"type":"string","description":"The security service ou. An organizational unit can be added to\nspecify where the share ends up. New in Manila microversion 2.44.\n"},"password":{"type":"string","description":"The user password, if you specify a user.\n","secret":true},"projectId":{"type":"string","description":"The owner of the Security Service.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Shared File System client.\nA Shared File System client is needed to create a security service. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nsecurity service.\n","willReplaceOnChanges":true},"server":{"type":"string","description":"The security service host name or IP address.\n"},"type":{"type":"string","description":"The security service type - can either be active\\_directory,\nkerberos or ldap.  Changing this updates the existing security service.\n"},"user":{"type":"string","description":"The security service user or group name that is used by the\ntenant.\n"}},"type":"object"}},"openstack:sharedfilesystem/share:Share":{"description":"Use this resource to configure a share.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst network1 = new openstack.networking.Network(\"network_1\", {\n    name: \"network_1\",\n    adminStateUp: true,\n});\nconst subnet1 = new openstack.networking.Subnet(\"subnet_1\", {\n    name: \"subnet_1\",\n    cidr: \"192.168.199.0/24\",\n    ipVersion: 4,\n    networkId: network1.id,\n});\nconst sharenetwork1 = new openstack.sharedfilesystem.ShareNetwork(\"sharenetwork_1\", {\n    name: \"test_sharenetwork\",\n    description: \"test share network with security services\",\n    neutronNetId: network1.id,\n    neutronSubnetId: subnet1.id,\n});\nconst share1 = new openstack.sharedfilesystem.Share(\"share_1\", {\n    name: \"nfs_share\",\n    description: \"test share description\",\n    shareProto: \"NFS\",\n    size: 1,\n    shareNetworkId: sharenetwork1.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nnetwork1 = openstack.networking.Network(\"network_1\",\n    name=\"network_1\",\n    admin_state_up=True)\nsubnet1 = openstack.networking.Subnet(\"subnet_1\",\n    name=\"subnet_1\",\n    cidr=\"192.168.199.0/24\",\n    ip_version=4,\n    network_id=network1.id)\nsharenetwork1 = openstack.sharedfilesystem.ShareNetwork(\"sharenetwork_1\",\n    name=\"test_sharenetwork\",\n    description=\"test share network with security services\",\n    neutron_net_id=network1.id,\n    neutron_subnet_id=subnet1.id)\nshare1 = openstack.sharedfilesystem.Share(\"share_1\",\n    name=\"nfs_share\",\n    description=\"test share description\",\n    share_proto=\"NFS\",\n    size=1,\n    share_network_id=sharenetwork1.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var network1 = new OpenStack.Networking.Network(\"network_1\", new()\n    {\n        Name = \"network_1\",\n        AdminStateUp = true,\n    });\n\n    var subnet1 = new OpenStack.Networking.Subnet(\"subnet_1\", new()\n    {\n        Name = \"subnet_1\",\n        Cidr = \"192.168.199.0/24\",\n        IpVersion = 4,\n        NetworkId = network1.Id,\n    });\n\n    var sharenetwork1 = new OpenStack.SharedFileSystem.ShareNetwork(\"sharenetwork_1\", new()\n    {\n        Name = \"test_sharenetwork\",\n        Description = \"test share network with security services\",\n        NeutronNetId = network1.Id,\n        NeutronSubnetId = subnet1.Id,\n    });\n\n    var share1 = new OpenStack.SharedFileSystem.Share(\"share_1\", new()\n    {\n        Name = \"nfs_share\",\n        Description = \"test share description\",\n        ShareProto = \"NFS\",\n        Size = 1,\n        ShareNetworkId = sharenetwork1.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/sharedfilesystem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork1, err := networking.NewNetwork(ctx, \"network_1\", \u0026networking.NetworkArgs{\n\t\t\tName:         pulumi.String(\"network_1\"),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet1, err := networking.NewSubnet(ctx, \"subnet_1\", \u0026networking.SubnetArgs{\n\t\t\tName:      pulumi.String(\"subnet_1\"),\n\t\t\tCidr:      pulumi.String(\"192.168.199.0/24\"),\n\t\t\tIpVersion: pulumi.Int(4),\n\t\t\tNetworkId: network1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsharenetwork1, err := sharedfilesystem.NewShareNetwork(ctx, \"sharenetwork_1\", \u0026sharedfilesystem.ShareNetworkArgs{\n\t\t\tName:            pulumi.String(\"test_sharenetwork\"),\n\t\t\tDescription:     pulumi.String(\"test share network with security services\"),\n\t\t\tNeutronNetId:    network1.ID(),\n\t\t\tNeutronSubnetId: subnet1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sharedfilesystem.NewShare(ctx, \"share_1\", \u0026sharedfilesystem.ShareArgs{\n\t\t\tName:           pulumi.String(\"nfs_share\"),\n\t\t\tDescription:    pulumi.String(\"test share description\"),\n\t\t\tShareProto:     pulumi.String(\"NFS\"),\n\t\t\tSize:           pulumi.Int(1),\n\t\t\tShareNetworkId: sharenetwork1.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.openstack.networking.Network;\nimport com.pulumi.openstack.networking.NetworkArgs;\nimport com.pulumi.openstack.networking.Subnet;\nimport com.pulumi.openstack.networking.SubnetArgs;\nimport com.pulumi.openstack.sharedfilesystem.ShareNetwork;\nimport com.pulumi.openstack.sharedfilesystem.ShareNetworkArgs;\nimport com.pulumi.openstack.sharedfilesystem.Share;\nimport com.pulumi.openstack.sharedfilesystem.ShareArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 network1 = new Network(\"network1\", NetworkArgs.builder()\n            .name(\"network_1\")\n            .adminStateUp(true)\n            .build());\n\n        var subnet1 = new Subnet(\"subnet1\", SubnetArgs.builder()\n            .name(\"subnet_1\")\n            .cidr(\"192.168.199.0/24\")\n            .ipVersion(4)\n            .networkId(network1.id())\n            .build());\n\n        var sharenetwork1 = new ShareNetwork(\"sharenetwork1\", ShareNetworkArgs.builder()\n            .name(\"test_sharenetwork\")\n            .description(\"test share network with security services\")\n            .neutronNetId(network1.id())\n            .neutronSubnetId(subnet1.id())\n            .build());\n\n        var share1 = new Share(\"share1\", ShareArgs.builder()\n            .name(\"nfs_share\")\n            .description(\"test share description\")\n            .shareProto(\"NFS\")\n            .size(1)\n            .shareNetworkId(sharenetwork1.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  network1:\n    type: openstack:networking:Network\n    name: network_1\n    properties:\n      name: network_1\n      adminStateUp: 'true'\n  subnet1:\n    type: openstack:networking:Subnet\n    name: subnet_1\n    properties:\n      name: subnet_1\n      cidr: 192.168.199.0/24\n      ipVersion: 4\n      networkId: ${network1.id}\n  sharenetwork1:\n    type: openstack:sharedfilesystem:ShareNetwork\n    name: sharenetwork_1\n    properties:\n      name: test_sharenetwork\n      description: test share network with security services\n      neutronNetId: ${network1.id}\n      neutronSubnetId: ${subnet1.id}\n  share1:\n    type: openstack:sharedfilesystem:Share\n    name: share_1\n    properties:\n      name: nfs_share\n      description: test share description\n      shareProto: NFS\n      size: 1\n      shareNetworkId: ${sharenetwork1.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource can be imported by specifying the ID of the share:\n\n```sh\n$ pulumi import openstack:sharedfilesystem/share:Share share_1 id\n```\n","properties":{"allMetadata":{"type":"object","additionalProperties":{"type":"string"},"description":"The map of metadata, assigned on the share, which has been\nexplicitly and implicitly added.\n"},"availabilityZone":{"type":"string","description":"The share availability zone. Changing this creates a\nnew share.\n"},"description":{"type":"string","description":"The human-readable description for the share.\nChanging this updates the description of the existing share.\n"},"exportLocations":{"type":"array","items":{"$ref":"#/types/openstack:sharedfilesystem/ShareExportLocation:ShareExportLocation"},"description":"A list of export locations. For example, when a share server\nhas more than one network interface, it can have multiple export locations.\n"},"hasReplicas":{"type":"boolean","description":"Indicates whether a share has replicas or not.\n"},"host":{"type":"string","description":"The share host name.\n"},"isPublic":{"type":"boolean","description":"The level of visibility for the share. Set to true to make\nshare public. Set to false to make it private. Default value is false. Changing this\nupdates the existing share.\n"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"One or more metadata key and value pairs as a dictionary of\nstrings.\n"},"name":{"type":"string","description":"The name of the share. Changing this updates the name\nof the existing share.\n"},"projectId":{"type":"string","description":"The owner of the Share.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Shared File System\nclient. A Shared File System client is needed to create a share. Changing\nthis creates a new share.\n"},"replicationType":{"type":"string","description":"The share replication type.\n"},"shareNetworkId":{"type":"string","description":"The UUID of a share network where the share server exists\nor will be created. If \u003cspan pulumi-lang-nodejs=\"`shareNetworkId`\" pulumi-lang-dotnet=\"`ShareNetworkId`\" pulumi-lang-go=\"`shareNetworkId`\" pulumi-lang-python=\"`share_network_id`\" pulumi-lang-yaml=\"`shareNetworkId`\" pulumi-lang-java=\"`shareNetworkId`\"\u003e`share_network_id`\u003c/span\u003e is not set and you provide a \u003cspan pulumi-lang-nodejs=\"`snapshotId`\" pulumi-lang-dotnet=\"`SnapshotId`\" pulumi-lang-go=\"`snapshotId`\" pulumi-lang-python=\"`snapshot_id`\" pulumi-lang-yaml=\"`snapshotId`\" pulumi-lang-java=\"`snapshotId`\"\u003e`snapshot_id`\u003c/span\u003e,\nthe\u003cspan pulumi-lang-nodejs=\" shareNetworkId \" pulumi-lang-dotnet=\" ShareNetworkId \" pulumi-lang-go=\" shareNetworkId \" pulumi-lang-python=\" share_network_id \" pulumi-lang-yaml=\" shareNetworkId \" pulumi-lang-java=\" shareNetworkId \"\u003e share_network_id \u003c/span\u003evalue from the snapshot is used. Changing this creates a new share.\n"},"shareProto":{"type":"string","description":"The share protocol - can either be NFS, CIFS,\nCEPHFS, GLUSTERFS, HDFS or MAPRFS. Changing this creates a new share.\n"},"shareServerId":{"type":"string","description":"The UUID of the share server.\n"},"shareType":{"type":"string","description":"The share type name. If you omit this parameter, the default\nshare type is used.\n"},"size":{"type":"integer","description":"The share size, in GBs. The requested share size cannot be greater\nthan the allowed GB quota. Changing this resizes the existing share.\n"},"snapshotId":{"type":"string","description":"The UUID of the share's base snapshot. Changing this creates\na new share.\n"}},"required":["allMetadata","availabilityZone","exportLocations","hasReplicas","host","name","projectId","region","replicationType","shareNetworkId","shareProto","shareServerId","shareType","size"],"inputProperties":{"availabilityZone":{"type":"string","description":"The share availability zone. Changing this creates a\nnew share.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"The human-readable description for the share.\nChanging this updates the description of the existing share.\n"},"isPublic":{"type":"boolean","description":"The level of visibility for the share. Set to true to make\nshare public. Set to false to make it private. Default value is false. Changing this\nupdates the existing share.\n"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"One or more metadata key and value pairs as a dictionary of\nstrings.\n"},"name":{"type":"string","description":"The name of the share. Changing this updates the name\nof the existing share.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Shared File System\nclient. A Shared File System client is needed to create a share. Changing\nthis creates a new share.\n","willReplaceOnChanges":true},"shareNetworkId":{"type":"string","description":"The UUID of a share network where the share server exists\nor will be created. If \u003cspan pulumi-lang-nodejs=\"`shareNetworkId`\" pulumi-lang-dotnet=\"`ShareNetworkId`\" pulumi-lang-go=\"`shareNetworkId`\" pulumi-lang-python=\"`share_network_id`\" pulumi-lang-yaml=\"`shareNetworkId`\" pulumi-lang-java=\"`shareNetworkId`\"\u003e`share_network_id`\u003c/span\u003e is not set and you provide a \u003cspan pulumi-lang-nodejs=\"`snapshotId`\" pulumi-lang-dotnet=\"`SnapshotId`\" pulumi-lang-go=\"`snapshotId`\" pulumi-lang-python=\"`snapshot_id`\" pulumi-lang-yaml=\"`snapshotId`\" pulumi-lang-java=\"`snapshotId`\"\u003e`snapshot_id`\u003c/span\u003e,\nthe\u003cspan pulumi-lang-nodejs=\" shareNetworkId \" pulumi-lang-dotnet=\" ShareNetworkId \" pulumi-lang-go=\" shareNetworkId \" pulumi-lang-python=\" share_network_id \" pulumi-lang-yaml=\" shareNetworkId \" pulumi-lang-java=\" shareNetworkId \"\u003e share_network_id \u003c/span\u003evalue from the snapshot is used. Changing this creates a new share.\n","willReplaceOnChanges":true},"shareProto":{"type":"string","description":"The share protocol - can either be NFS, CIFS,\nCEPHFS, GLUSTERFS, HDFS or MAPRFS. Changing this creates a new share.\n","willReplaceOnChanges":true},"shareType":{"type":"string","description":"The share type name. If you omit this parameter, the default\nshare type is used.\n","willReplaceOnChanges":true},"size":{"type":"integer","description":"The share size, in GBs. The requested share size cannot be greater\nthan the allowed GB quota. Changing this resizes the existing share.\n"},"snapshotId":{"type":"string","description":"The UUID of the share's base snapshot. Changing this creates\na new share.\n","willReplaceOnChanges":true}},"requiredInputs":["shareProto","size"],"stateInputs":{"description":"Input properties used for looking up and filtering Share resources.\n","properties":{"allMetadata":{"type":"object","additionalProperties":{"type":"string"},"description":"The map of metadata, assigned on the share, which has been\nexplicitly and implicitly added.\n"},"availabilityZone":{"type":"string","description":"The share availability zone. Changing this creates a\nnew share.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"The human-readable description for the share.\nChanging this updates the description of the existing share.\n"},"exportLocations":{"type":"array","items":{"$ref":"#/types/openstack:sharedfilesystem/ShareExportLocation:ShareExportLocation"},"description":"A list of export locations. For example, when a share server\nhas more than one network interface, it can have multiple export locations.\n"},"hasReplicas":{"type":"boolean","description":"Indicates whether a share has replicas or not.\n"},"host":{"type":"string","description":"The share host name.\n"},"isPublic":{"type":"boolean","description":"The level of visibility for the share. Set to true to make\nshare public. Set to false to make it private. Default value is false. Changing this\nupdates the existing share.\n"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"One or more metadata key and value pairs as a dictionary of\nstrings.\n"},"name":{"type":"string","description":"The name of the share. Changing this updates the name\nof the existing share.\n"},"projectId":{"type":"string","description":"The owner of the Share.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Shared File System\nclient. A Shared File System client is needed to create a share. Changing\nthis creates a new share.\n","willReplaceOnChanges":true},"replicationType":{"type":"string","description":"The share replication type.\n"},"shareNetworkId":{"type":"string","description":"The UUID of a share network where the share server exists\nor will be created. If \u003cspan pulumi-lang-nodejs=\"`shareNetworkId`\" pulumi-lang-dotnet=\"`ShareNetworkId`\" pulumi-lang-go=\"`shareNetworkId`\" pulumi-lang-python=\"`share_network_id`\" pulumi-lang-yaml=\"`shareNetworkId`\" pulumi-lang-java=\"`shareNetworkId`\"\u003e`share_network_id`\u003c/span\u003e is not set and you provide a \u003cspan pulumi-lang-nodejs=\"`snapshotId`\" pulumi-lang-dotnet=\"`SnapshotId`\" pulumi-lang-go=\"`snapshotId`\" pulumi-lang-python=\"`snapshot_id`\" pulumi-lang-yaml=\"`snapshotId`\" pulumi-lang-java=\"`snapshotId`\"\u003e`snapshot_id`\u003c/span\u003e,\nthe\u003cspan pulumi-lang-nodejs=\" shareNetworkId \" pulumi-lang-dotnet=\" ShareNetworkId \" pulumi-lang-go=\" shareNetworkId \" pulumi-lang-python=\" share_network_id \" pulumi-lang-yaml=\" shareNetworkId \" pulumi-lang-java=\" shareNetworkId \"\u003e share_network_id \u003c/span\u003evalue from the snapshot is used. Changing this creates a new share.\n","willReplaceOnChanges":true},"shareProto":{"type":"string","description":"The share protocol - can either be NFS, CIFS,\nCEPHFS, GLUSTERFS, HDFS or MAPRFS. Changing this creates a new share.\n","willReplaceOnChanges":true},"shareServerId":{"type":"string","description":"The UUID of the share server.\n"},"shareType":{"type":"string","description":"The share type name. If you omit this parameter, the default\nshare type is used.\n","willReplaceOnChanges":true},"size":{"type":"integer","description":"The share size, in GBs. The requested share size cannot be greater\nthan the allowed GB quota. Changing this resizes the existing share.\n"},"snapshotId":{"type":"string","description":"The UUID of the share's base snapshot. Changing this creates\na new share.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:sharedfilesystem/shareAccess:ShareAccess":{"description":"## Example Usage\n\n### NFS\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst network1 = new openstack.networking.Network(\"network_1\", {\n    name: \"network_1\",\n    adminStateUp: true,\n});\nconst subnet1 = new openstack.networking.Subnet(\"subnet_1\", {\n    name: \"subnet_1\",\n    cidr: \"192.168.199.0/24\",\n    ipVersion: 4,\n    networkId: network1.id,\n});\nconst sharenetwork1 = new openstack.sharedfilesystem.ShareNetwork(\"sharenetwork_1\", {\n    name: \"test_sharenetwork\",\n    description: \"test share network with security services\",\n    neutronNetId: network1.id,\n    neutronSubnetId: subnet1.id,\n});\nconst share1 = new openstack.sharedfilesystem.Share(\"share_1\", {\n    name: \"nfs_share\",\n    description: \"test share description\",\n    shareProto: \"NFS\",\n    size: 1,\n    shareNetworkId: sharenetwork1.id,\n});\nconst shareAccess1 = new openstack.sharedfilesystem.ShareAccess(\"share_access_1\", {\n    shareId: share1.id,\n    accessType: \"ip\",\n    accessTo: \"192.168.199.10\",\n    accessLevel: \"rw\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nnetwork1 = openstack.networking.Network(\"network_1\",\n    name=\"network_1\",\n    admin_state_up=True)\nsubnet1 = openstack.networking.Subnet(\"subnet_1\",\n    name=\"subnet_1\",\n    cidr=\"192.168.199.0/24\",\n    ip_version=4,\n    network_id=network1.id)\nsharenetwork1 = openstack.sharedfilesystem.ShareNetwork(\"sharenetwork_1\",\n    name=\"test_sharenetwork\",\n    description=\"test share network with security services\",\n    neutron_net_id=network1.id,\n    neutron_subnet_id=subnet1.id)\nshare1 = openstack.sharedfilesystem.Share(\"share_1\",\n    name=\"nfs_share\",\n    description=\"test share description\",\n    share_proto=\"NFS\",\n    size=1,\n    share_network_id=sharenetwork1.id)\nshare_access1 = openstack.sharedfilesystem.ShareAccess(\"share_access_1\",\n    share_id=share1.id,\n    access_type=\"ip\",\n    access_to=\"192.168.199.10\",\n    access_level=\"rw\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var network1 = new OpenStack.Networking.Network(\"network_1\", new()\n    {\n        Name = \"network_1\",\n        AdminStateUp = true,\n    });\n\n    var subnet1 = new OpenStack.Networking.Subnet(\"subnet_1\", new()\n    {\n        Name = \"subnet_1\",\n        Cidr = \"192.168.199.0/24\",\n        IpVersion = 4,\n        NetworkId = network1.Id,\n    });\n\n    var sharenetwork1 = new OpenStack.SharedFileSystem.ShareNetwork(\"sharenetwork_1\", new()\n    {\n        Name = \"test_sharenetwork\",\n        Description = \"test share network with security services\",\n        NeutronNetId = network1.Id,\n        NeutronSubnetId = subnet1.Id,\n    });\n\n    var share1 = new OpenStack.SharedFileSystem.Share(\"share_1\", new()\n    {\n        Name = \"nfs_share\",\n        Description = \"test share description\",\n        ShareProto = \"NFS\",\n        Size = 1,\n        ShareNetworkId = sharenetwork1.Id,\n    });\n\n    var shareAccess1 = new OpenStack.SharedFileSystem.ShareAccess(\"share_access_1\", new()\n    {\n        ShareId = share1.Id,\n        AccessType = \"ip\",\n        AccessTo = \"192.168.199.10\",\n        AccessLevel = \"rw\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/sharedfilesystem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork1, err := networking.NewNetwork(ctx, \"network_1\", \u0026networking.NetworkArgs{\n\t\t\tName:         pulumi.String(\"network_1\"),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet1, err := networking.NewSubnet(ctx, \"subnet_1\", \u0026networking.SubnetArgs{\n\t\t\tName:      pulumi.String(\"subnet_1\"),\n\t\t\tCidr:      pulumi.String(\"192.168.199.0/24\"),\n\t\t\tIpVersion: pulumi.Int(4),\n\t\t\tNetworkId: network1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsharenetwork1, err := sharedfilesystem.NewShareNetwork(ctx, \"sharenetwork_1\", \u0026sharedfilesystem.ShareNetworkArgs{\n\t\t\tName:            pulumi.String(\"test_sharenetwork\"),\n\t\t\tDescription:     pulumi.String(\"test share network with security services\"),\n\t\t\tNeutronNetId:    network1.ID(),\n\t\t\tNeutronSubnetId: subnet1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tshare1, err := sharedfilesystem.NewShare(ctx, \"share_1\", \u0026sharedfilesystem.ShareArgs{\n\t\t\tName:           pulumi.String(\"nfs_share\"),\n\t\t\tDescription:    pulumi.String(\"test share description\"),\n\t\t\tShareProto:     pulumi.String(\"NFS\"),\n\t\t\tSize:           pulumi.Int(1),\n\t\t\tShareNetworkId: sharenetwork1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sharedfilesystem.NewShareAccess(ctx, \"share_access_1\", \u0026sharedfilesystem.ShareAccessArgs{\n\t\t\tShareId:     share1.ID(),\n\t\t\tAccessType:  pulumi.String(\"ip\"),\n\t\t\tAccessTo:    pulumi.String(\"192.168.199.10\"),\n\t\t\tAccessLevel: pulumi.String(\"rw\"),\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.openstack.networking.Network;\nimport com.pulumi.openstack.networking.NetworkArgs;\nimport com.pulumi.openstack.networking.Subnet;\nimport com.pulumi.openstack.networking.SubnetArgs;\nimport com.pulumi.openstack.sharedfilesystem.ShareNetwork;\nimport com.pulumi.openstack.sharedfilesystem.ShareNetworkArgs;\nimport com.pulumi.openstack.sharedfilesystem.Share;\nimport com.pulumi.openstack.sharedfilesystem.ShareArgs;\nimport com.pulumi.openstack.sharedfilesystem.ShareAccess;\nimport com.pulumi.openstack.sharedfilesystem.ShareAccessArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 network1 = new Network(\"network1\", NetworkArgs.builder()\n            .name(\"network_1\")\n            .adminStateUp(true)\n            .build());\n\n        var subnet1 = new Subnet(\"subnet1\", SubnetArgs.builder()\n            .name(\"subnet_1\")\n            .cidr(\"192.168.199.0/24\")\n            .ipVersion(4)\n            .networkId(network1.id())\n            .build());\n\n        var sharenetwork1 = new ShareNetwork(\"sharenetwork1\", ShareNetworkArgs.builder()\n            .name(\"test_sharenetwork\")\n            .description(\"test share network with security services\")\n            .neutronNetId(network1.id())\n            .neutronSubnetId(subnet1.id())\n            .build());\n\n        var share1 = new Share(\"share1\", ShareArgs.builder()\n            .name(\"nfs_share\")\n            .description(\"test share description\")\n            .shareProto(\"NFS\")\n            .size(1)\n            .shareNetworkId(sharenetwork1.id())\n            .build());\n\n        var shareAccess1 = new ShareAccess(\"shareAccess1\", ShareAccessArgs.builder()\n            .shareId(share1.id())\n            .accessType(\"ip\")\n            .accessTo(\"192.168.199.10\")\n            .accessLevel(\"rw\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  network1:\n    type: openstack:networking:Network\n    name: network_1\n    properties:\n      name: network_1\n      adminStateUp: 'true'\n  subnet1:\n    type: openstack:networking:Subnet\n    name: subnet_1\n    properties:\n      name: subnet_1\n      cidr: 192.168.199.0/24\n      ipVersion: 4\n      networkId: ${network1.id}\n  sharenetwork1:\n    type: openstack:sharedfilesystem:ShareNetwork\n    name: sharenetwork_1\n    properties:\n      name: test_sharenetwork\n      description: test share network with security services\n      neutronNetId: ${network1.id}\n      neutronSubnetId: ${subnet1.id}\n  share1:\n    type: openstack:sharedfilesystem:Share\n    name: share_1\n    properties:\n      name: nfs_share\n      description: test share description\n      shareProto: NFS\n      size: 1\n      shareNetworkId: ${sharenetwork1.id}\n  shareAccess1:\n    type: openstack:sharedfilesystem:ShareAccess\n    name: share_access_1\n    properties:\n      shareId: ${share1.id}\n      accessType: ip\n      accessTo: 192.168.199.10\n      accessLevel: rw\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### CIFS\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst network1 = new openstack.networking.Network(\"network_1\", {\n    name: \"network_1\",\n    adminStateUp: true,\n});\nconst subnet1 = new openstack.networking.Subnet(\"subnet_1\", {\n    name: \"subnet_1\",\n    cidr: \"192.168.199.0/24\",\n    ipVersion: 4,\n    networkId: network1.id,\n});\nconst securityservice1 = new openstack.sharedfilesystem.SecurityService(\"securityservice_1\", {\n    name: \"security\",\n    description: \"created by terraform\",\n    type: \"active_directory\",\n    server: \"192.168.199.10\",\n    dnsIp: \"192.168.199.10\",\n    domain: \"example.com\",\n    ou: \"CN=Computers,DC=example,DC=com\",\n    user: \"joinDomainUser\",\n    password: \"s8cret\",\n});\nconst sharenetwork1 = new openstack.sharedfilesystem.ShareNetwork(\"sharenetwork_1\", {\n    name: \"test_sharenetwork_secure\",\n    description: \"share the secure love\",\n    neutronNetId: network1.id,\n    neutronSubnetId: subnet1.id,\n    securityServiceIds: [securityservice1.id],\n});\nconst share1 = new openstack.sharedfilesystem.Share(\"share_1\", {\n    name: \"cifs_share\",\n    shareProto: \"CIFS\",\n    size: 1,\n    shareNetworkId: sharenetwork1.id,\n});\nconst shareAccess1 = new openstack.sharedfilesystem.ShareAccess(\"share_access_1\", {\n    shareId: share1.id,\n    accessType: \"user\",\n    accessTo: \"windows\",\n    accessLevel: \"ro\",\n});\nconst shareAccess2 = new openstack.sharedfilesystem.ShareAccess(\"share_access_2\", {\n    shareId: share1.id,\n    accessType: \"user\",\n    accessTo: \"linux\",\n    accessLevel: \"rw\",\n});\nexport const exportLocations = share1.exportLocations;\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nnetwork1 = openstack.networking.Network(\"network_1\",\n    name=\"network_1\",\n    admin_state_up=True)\nsubnet1 = openstack.networking.Subnet(\"subnet_1\",\n    name=\"subnet_1\",\n    cidr=\"192.168.199.0/24\",\n    ip_version=4,\n    network_id=network1.id)\nsecurityservice1 = openstack.sharedfilesystem.SecurityService(\"securityservice_1\",\n    name=\"security\",\n    description=\"created by terraform\",\n    type=\"active_directory\",\n    server=\"192.168.199.10\",\n    dns_ip=\"192.168.199.10\",\n    domain=\"example.com\",\n    ou=\"CN=Computers,DC=example,DC=com\",\n    user=\"joinDomainUser\",\n    password=\"s8cret\")\nsharenetwork1 = openstack.sharedfilesystem.ShareNetwork(\"sharenetwork_1\",\n    name=\"test_sharenetwork_secure\",\n    description=\"share the secure love\",\n    neutron_net_id=network1.id,\n    neutron_subnet_id=subnet1.id,\n    security_service_ids=[securityservice1.id])\nshare1 = openstack.sharedfilesystem.Share(\"share_1\",\n    name=\"cifs_share\",\n    share_proto=\"CIFS\",\n    size=1,\n    share_network_id=sharenetwork1.id)\nshare_access1 = openstack.sharedfilesystem.ShareAccess(\"share_access_1\",\n    share_id=share1.id,\n    access_type=\"user\",\n    access_to=\"windows\",\n    access_level=\"ro\")\nshare_access2 = openstack.sharedfilesystem.ShareAccess(\"share_access_2\",\n    share_id=share1.id,\n    access_type=\"user\",\n    access_to=\"linux\",\n    access_level=\"rw\")\npulumi.export(\"exportLocations\", share1.export_locations)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var network1 = new OpenStack.Networking.Network(\"network_1\", new()\n    {\n        Name = \"network_1\",\n        AdminStateUp = true,\n    });\n\n    var subnet1 = new OpenStack.Networking.Subnet(\"subnet_1\", new()\n    {\n        Name = \"subnet_1\",\n        Cidr = \"192.168.199.0/24\",\n        IpVersion = 4,\n        NetworkId = network1.Id,\n    });\n\n    var securityservice1 = new OpenStack.SharedFileSystem.SecurityService(\"securityservice_1\", new()\n    {\n        Name = \"security\",\n        Description = \"created by terraform\",\n        Type = \"active_directory\",\n        Server = \"192.168.199.10\",\n        DnsIp = \"192.168.199.10\",\n        Domain = \"example.com\",\n        Ou = \"CN=Computers,DC=example,DC=com\",\n        User = \"joinDomainUser\",\n        Password = \"s8cret\",\n    });\n\n    var sharenetwork1 = new OpenStack.SharedFileSystem.ShareNetwork(\"sharenetwork_1\", new()\n    {\n        Name = \"test_sharenetwork_secure\",\n        Description = \"share the secure love\",\n        NeutronNetId = network1.Id,\n        NeutronSubnetId = subnet1.Id,\n        SecurityServiceIds = new[]\n        {\n            securityservice1.Id,\n        },\n    });\n\n    var share1 = new OpenStack.SharedFileSystem.Share(\"share_1\", new()\n    {\n        Name = \"cifs_share\",\n        ShareProto = \"CIFS\",\n        Size = 1,\n        ShareNetworkId = sharenetwork1.Id,\n    });\n\n    var shareAccess1 = new OpenStack.SharedFileSystem.ShareAccess(\"share_access_1\", new()\n    {\n        ShareId = share1.Id,\n        AccessType = \"user\",\n        AccessTo = \"windows\",\n        AccessLevel = \"ro\",\n    });\n\n    var shareAccess2 = new OpenStack.SharedFileSystem.ShareAccess(\"share_access_2\", new()\n    {\n        ShareId = share1.Id,\n        AccessType = \"user\",\n        AccessTo = \"linux\",\n        AccessLevel = \"rw\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"exportLocations\"] = share1.ExportLocations,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/sharedfilesystem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork1, err := networking.NewNetwork(ctx, \"network_1\", \u0026networking.NetworkArgs{\n\t\t\tName:         pulumi.String(\"network_1\"),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet1, err := networking.NewSubnet(ctx, \"subnet_1\", \u0026networking.SubnetArgs{\n\t\t\tName:      pulumi.String(\"subnet_1\"),\n\t\t\tCidr:      pulumi.String(\"192.168.199.0/24\"),\n\t\t\tIpVersion: pulumi.Int(4),\n\t\t\tNetworkId: network1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecurityservice1, err := sharedfilesystem.NewSecurityService(ctx, \"securityservice_1\", \u0026sharedfilesystem.SecurityServiceArgs{\n\t\t\tName:        pulumi.String(\"security\"),\n\t\t\tDescription: pulumi.String(\"created by terraform\"),\n\t\t\tType:        pulumi.String(\"active_directory\"),\n\t\t\tServer:      pulumi.String(\"192.168.199.10\"),\n\t\t\tDnsIp:       pulumi.String(\"192.168.199.10\"),\n\t\t\tDomain:      pulumi.String(\"example.com\"),\n\t\t\tOu:          pulumi.String(\"CN=Computers,DC=example,DC=com\"),\n\t\t\tUser:        pulumi.String(\"joinDomainUser\"),\n\t\t\tPassword:    pulumi.String(\"s8cret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsharenetwork1, err := sharedfilesystem.NewShareNetwork(ctx, \"sharenetwork_1\", \u0026sharedfilesystem.ShareNetworkArgs{\n\t\t\tName:            pulumi.String(\"test_sharenetwork_secure\"),\n\t\t\tDescription:     pulumi.String(\"share the secure love\"),\n\t\t\tNeutronNetId:    network1.ID(),\n\t\t\tNeutronSubnetId: subnet1.ID(),\n\t\t\tSecurityServiceIds: pulumi.StringArray{\n\t\t\t\tsecurityservice1.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tshare1, err := sharedfilesystem.NewShare(ctx, \"share_1\", \u0026sharedfilesystem.ShareArgs{\n\t\t\tName:           pulumi.String(\"cifs_share\"),\n\t\t\tShareProto:     pulumi.String(\"CIFS\"),\n\t\t\tSize:           pulumi.Int(1),\n\t\t\tShareNetworkId: sharenetwork1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sharedfilesystem.NewShareAccess(ctx, \"share_access_1\", \u0026sharedfilesystem.ShareAccessArgs{\n\t\t\tShareId:     share1.ID(),\n\t\t\tAccessType:  pulumi.String(\"user\"),\n\t\t\tAccessTo:    pulumi.String(\"windows\"),\n\t\t\tAccessLevel: pulumi.String(\"ro\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sharedfilesystem.NewShareAccess(ctx, \"share_access_2\", \u0026sharedfilesystem.ShareAccessArgs{\n\t\t\tShareId:     share1.ID(),\n\t\t\tAccessType:  pulumi.String(\"user\"),\n\t\t\tAccessTo:    pulumi.String(\"linux\"),\n\t\t\tAccessLevel: pulumi.String(\"rw\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exportLocations\", share1.ExportLocations)\n\t\treturn nil\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.openstack.networking.Network;\nimport com.pulumi.openstack.networking.NetworkArgs;\nimport com.pulumi.openstack.networking.Subnet;\nimport com.pulumi.openstack.networking.SubnetArgs;\nimport com.pulumi.openstack.sharedfilesystem.SecurityService;\nimport com.pulumi.openstack.sharedfilesystem.SecurityServiceArgs;\nimport com.pulumi.openstack.sharedfilesystem.ShareNetwork;\nimport com.pulumi.openstack.sharedfilesystem.ShareNetworkArgs;\nimport com.pulumi.openstack.sharedfilesystem.Share;\nimport com.pulumi.openstack.sharedfilesystem.ShareArgs;\nimport com.pulumi.openstack.sharedfilesystem.ShareAccess;\nimport com.pulumi.openstack.sharedfilesystem.ShareAccessArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 network1 = new Network(\"network1\", NetworkArgs.builder()\n            .name(\"network_1\")\n            .adminStateUp(true)\n            .build());\n\n        var subnet1 = new Subnet(\"subnet1\", SubnetArgs.builder()\n            .name(\"subnet_1\")\n            .cidr(\"192.168.199.0/24\")\n            .ipVersion(4)\n            .networkId(network1.id())\n            .build());\n\n        var securityservice1 = new SecurityService(\"securityservice1\", SecurityServiceArgs.builder()\n            .name(\"security\")\n            .description(\"created by terraform\")\n            .type(\"active_directory\")\n            .server(\"192.168.199.10\")\n            .dnsIp(\"192.168.199.10\")\n            .domain(\"example.com\")\n            .ou(\"CN=Computers,DC=example,DC=com\")\n            .user(\"joinDomainUser\")\n            .password(\"s8cret\")\n            .build());\n\n        var sharenetwork1 = new ShareNetwork(\"sharenetwork1\", ShareNetworkArgs.builder()\n            .name(\"test_sharenetwork_secure\")\n            .description(\"share the secure love\")\n            .neutronNetId(network1.id())\n            .neutronSubnetId(subnet1.id())\n            .securityServiceIds(securityservice1.id())\n            .build());\n\n        var share1 = new Share(\"share1\", ShareArgs.builder()\n            .name(\"cifs_share\")\n            .shareProto(\"CIFS\")\n            .size(1)\n            .shareNetworkId(sharenetwork1.id())\n            .build());\n\n        var shareAccess1 = new ShareAccess(\"shareAccess1\", ShareAccessArgs.builder()\n            .shareId(share1.id())\n            .accessType(\"user\")\n            .accessTo(\"windows\")\n            .accessLevel(\"ro\")\n            .build());\n\n        var shareAccess2 = new ShareAccess(\"shareAccess2\", ShareAccessArgs.builder()\n            .shareId(share1.id())\n            .accessType(\"user\")\n            .accessTo(\"linux\")\n            .accessLevel(\"rw\")\n            .build());\n\n        ctx.export(\"exportLocations\", share1.exportLocations());\n    }\n}\n```\n```yaml\nresources:\n  network1:\n    type: openstack:networking:Network\n    name: network_1\n    properties:\n      name: network_1\n      adminStateUp: 'true'\n  subnet1:\n    type: openstack:networking:Subnet\n    name: subnet_1\n    properties:\n      name: subnet_1\n      cidr: 192.168.199.0/24\n      ipVersion: 4\n      networkId: ${network1.id}\n  securityservice1:\n    type: openstack:sharedfilesystem:SecurityService\n    name: securityservice_1\n    properties:\n      name: security\n      description: created by terraform\n      type: active_directory\n      server: 192.168.199.10\n      dnsIp: 192.168.199.10\n      domain: example.com\n      ou: CN=Computers,DC=example,DC=com\n      user: joinDomainUser\n      password: s8cret\n  sharenetwork1:\n    type: openstack:sharedfilesystem:ShareNetwork\n    name: sharenetwork_1\n    properties:\n      name: test_sharenetwork_secure\n      description: share the secure love\n      neutronNetId: ${network1.id}\n      neutronSubnetId: ${subnet1.id}\n      securityServiceIds:\n        - ${securityservice1.id}\n  share1:\n    type: openstack:sharedfilesystem:Share\n    name: share_1\n    properties:\n      name: cifs_share\n      shareProto: CIFS\n      size: 1\n      shareNetworkId: ${sharenetwork1.id}\n  shareAccess1:\n    type: openstack:sharedfilesystem:ShareAccess\n    name: share_access_1\n    properties:\n      shareId: ${share1.id}\n      accessType: user\n      accessTo: windows\n      accessLevel: ro\n  shareAccess2:\n    type: openstack:sharedfilesystem:ShareAccess\n    name: share_access_2\n    properties:\n      shareId: ${share1.id}\n      accessType: user\n      accessTo: linux\n      accessLevel: rw\noutputs:\n  exportLocations: ${share1.exportLocations}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource can be imported by specifying the ID of the share and the ID of the\nshare access, separated by a slash, e.g.:\n\n```sh\n$ pulumi import openstack:sharedfilesystem/shareAccess:ShareAccess share_access_1 share_id/share_access_id\n```\n","properties":{"accessKey":{"type":"string","description":"The access credential of the entity granted access.\n","secret":true},"accessLevel":{"type":"string","description":"The access level to the share. Can either be \u003cspan pulumi-lang-nodejs=\"`rw`\" pulumi-lang-dotnet=\"`Rw`\" pulumi-lang-go=\"`rw`\" pulumi-lang-python=\"`rw`\" pulumi-lang-yaml=\"`rw`\" pulumi-lang-java=\"`rw`\"\u003e`rw`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ro`\" pulumi-lang-dotnet=\"`Ro`\" pulumi-lang-go=\"`ro`\" pulumi-lang-python=\"`ro`\" pulumi-lang-yaml=\"`ro`\" pulumi-lang-java=\"`ro`\"\u003e`ro`\u003c/span\u003e.\n"},"accessTo":{"type":"string","description":"The value that defines the access. Can either be an IP\naddress or a username verified by configured Security Service of the Share Network.\n"},"accessType":{"type":"string","description":"The access rule type. Can either be an ip, user,\ncert, or cephx. cephx support requires an OpenStack environment that supports\nShared Filesystem microversion 2.13 (Mitaka) or later.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Shared File System\nclient. A Shared File System client is needed to create a share access.\nChanging this creates a new share access.\n"},"shareId":{"type":"string","description":"The UUID of the share to which you are granted access.\n"},"state":{"type":"string","description":"The share access state.\n"}},"required":["accessKey","accessLevel","accessTo","accessType","region","shareId","state"],"inputProperties":{"accessLevel":{"type":"string","description":"The access level to the share. Can either be \u003cspan pulumi-lang-nodejs=\"`rw`\" pulumi-lang-dotnet=\"`Rw`\" pulumi-lang-go=\"`rw`\" pulumi-lang-python=\"`rw`\" pulumi-lang-yaml=\"`rw`\" pulumi-lang-java=\"`rw`\"\u003e`rw`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ro`\" pulumi-lang-dotnet=\"`Ro`\" pulumi-lang-go=\"`ro`\" pulumi-lang-python=\"`ro`\" pulumi-lang-yaml=\"`ro`\" pulumi-lang-java=\"`ro`\"\u003e`ro`\u003c/span\u003e.\n","willReplaceOnChanges":true},"accessTo":{"type":"string","description":"The value that defines the access. Can either be an IP\naddress or a username verified by configured Security Service of the Share Network.\n","willReplaceOnChanges":true},"accessType":{"type":"string","description":"The access rule type. Can either be an ip, user,\ncert, or cephx. cephx support requires an OpenStack environment that supports\nShared Filesystem microversion 2.13 (Mitaka) or later.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Shared File System\nclient. A Shared File System client is needed to create a share access.\nChanging this creates a new share access.\n","willReplaceOnChanges":true},"shareId":{"type":"string","description":"The UUID of the share to which you are granted access.\n","willReplaceOnChanges":true}},"requiredInputs":["accessLevel","accessTo","accessType","shareId"],"stateInputs":{"description":"Input properties used for looking up and filtering ShareAccess resources.\n","properties":{"accessKey":{"type":"string","description":"The access credential of the entity granted access.\n","secret":true},"accessLevel":{"type":"string","description":"The access level to the share. Can either be \u003cspan pulumi-lang-nodejs=\"`rw`\" pulumi-lang-dotnet=\"`Rw`\" pulumi-lang-go=\"`rw`\" pulumi-lang-python=\"`rw`\" pulumi-lang-yaml=\"`rw`\" pulumi-lang-java=\"`rw`\"\u003e`rw`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ro`\" pulumi-lang-dotnet=\"`Ro`\" pulumi-lang-go=\"`ro`\" pulumi-lang-python=\"`ro`\" pulumi-lang-yaml=\"`ro`\" pulumi-lang-java=\"`ro`\"\u003e`ro`\u003c/span\u003e.\n","willReplaceOnChanges":true},"accessTo":{"type":"string","description":"The value that defines the access. Can either be an IP\naddress or a username verified by configured Security Service of the Share Network.\n","willReplaceOnChanges":true},"accessType":{"type":"string","description":"The access rule type. Can either be an ip, user,\ncert, or cephx. cephx support requires an OpenStack environment that supports\nShared Filesystem microversion 2.13 (Mitaka) or later.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Shared File System\nclient. A Shared File System client is needed to create a share access.\nChanging this creates a new share access.\n","willReplaceOnChanges":true},"shareId":{"type":"string","description":"The UUID of the share to which you are granted access.\n","willReplaceOnChanges":true},"state":{"type":"string","description":"The share access state.\n"}},"type":"object"}},"openstack:sharedfilesystem/shareNetwork:ShareNetwork":{"description":"Use this resource to configure a share network.\n\nA share network stores network information that share servers can use when\nshares are created.\n\n## Example Usage\n\n### Basic share network\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst network1 = new openstack.networking.Network(\"network_1\", {\n    name: \"network_1\",\n    adminStateUp: true,\n});\nconst subnet1 = new openstack.networking.Subnet(\"subnet_1\", {\n    name: \"subnet_1\",\n    cidr: \"192.168.199.0/24\",\n    ipVersion: 4,\n    networkId: network1.id,\n});\nconst sharenetwork1 = new openstack.sharedfilesystem.ShareNetwork(\"sharenetwork_1\", {\n    name: \"test_sharenetwork\",\n    description: \"test share network\",\n    neutronNetId: network1.id,\n    neutronSubnetId: subnet1.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nnetwork1 = openstack.networking.Network(\"network_1\",\n    name=\"network_1\",\n    admin_state_up=True)\nsubnet1 = openstack.networking.Subnet(\"subnet_1\",\n    name=\"subnet_1\",\n    cidr=\"192.168.199.0/24\",\n    ip_version=4,\n    network_id=network1.id)\nsharenetwork1 = openstack.sharedfilesystem.ShareNetwork(\"sharenetwork_1\",\n    name=\"test_sharenetwork\",\n    description=\"test share network\",\n    neutron_net_id=network1.id,\n    neutron_subnet_id=subnet1.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var network1 = new OpenStack.Networking.Network(\"network_1\", new()\n    {\n        Name = \"network_1\",\n        AdminStateUp = true,\n    });\n\n    var subnet1 = new OpenStack.Networking.Subnet(\"subnet_1\", new()\n    {\n        Name = \"subnet_1\",\n        Cidr = \"192.168.199.0/24\",\n        IpVersion = 4,\n        NetworkId = network1.Id,\n    });\n\n    var sharenetwork1 = new OpenStack.SharedFileSystem.ShareNetwork(\"sharenetwork_1\", new()\n    {\n        Name = \"test_sharenetwork\",\n        Description = \"test share network\",\n        NeutronNetId = network1.Id,\n        NeutronSubnetId = subnet1.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/sharedfilesystem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork1, err := networking.NewNetwork(ctx, \"network_1\", \u0026networking.NetworkArgs{\n\t\t\tName:         pulumi.String(\"network_1\"),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet1, err := networking.NewSubnet(ctx, \"subnet_1\", \u0026networking.SubnetArgs{\n\t\t\tName:      pulumi.String(\"subnet_1\"),\n\t\t\tCidr:      pulumi.String(\"192.168.199.0/24\"),\n\t\t\tIpVersion: pulumi.Int(4),\n\t\t\tNetworkId: network1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sharedfilesystem.NewShareNetwork(ctx, \"sharenetwork_1\", \u0026sharedfilesystem.ShareNetworkArgs{\n\t\t\tName:            pulumi.String(\"test_sharenetwork\"),\n\t\t\tDescription:     pulumi.String(\"test share network\"),\n\t\t\tNeutronNetId:    network1.ID(),\n\t\t\tNeutronSubnetId: subnet1.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.openstack.networking.Network;\nimport com.pulumi.openstack.networking.NetworkArgs;\nimport com.pulumi.openstack.networking.Subnet;\nimport com.pulumi.openstack.networking.SubnetArgs;\nimport com.pulumi.openstack.sharedfilesystem.ShareNetwork;\nimport com.pulumi.openstack.sharedfilesystem.ShareNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 network1 = new Network(\"network1\", NetworkArgs.builder()\n            .name(\"network_1\")\n            .adminStateUp(true)\n            .build());\n\n        var subnet1 = new Subnet(\"subnet1\", SubnetArgs.builder()\n            .name(\"subnet_1\")\n            .cidr(\"192.168.199.0/24\")\n            .ipVersion(4)\n            .networkId(network1.id())\n            .build());\n\n        var sharenetwork1 = new ShareNetwork(\"sharenetwork1\", ShareNetworkArgs.builder()\n            .name(\"test_sharenetwork\")\n            .description(\"test share network\")\n            .neutronNetId(network1.id())\n            .neutronSubnetId(subnet1.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  network1:\n    type: openstack:networking:Network\n    name: network_1\n    properties:\n      name: network_1\n      adminStateUp: 'true'\n  subnet1:\n    type: openstack:networking:Subnet\n    name: subnet_1\n    properties:\n      name: subnet_1\n      cidr: 192.168.199.0/24\n      ipVersion: 4\n      networkId: ${network1.id}\n  sharenetwork1:\n    type: openstack:sharedfilesystem:ShareNetwork\n    name: sharenetwork_1\n    properties:\n      name: test_sharenetwork\n      description: test share network\n      neutronNetId: ${network1.id}\n      neutronSubnetId: ${subnet1.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Share network with associated security services\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst network1 = new openstack.networking.Network(\"network_1\", {\n    name: \"network_1\",\n    adminStateUp: true,\n});\nconst subnet1 = new openstack.networking.Subnet(\"subnet_1\", {\n    name: \"subnet_1\",\n    cidr: \"192.168.199.0/24\",\n    ipVersion: 4,\n    networkId: network1.id,\n});\nconst securityservice1 = new openstack.sharedfilesystem.SecurityService(\"securityservice_1\", {\n    name: \"security\",\n    description: \"created by terraform\",\n    type: \"active_directory\",\n    server: \"192.168.199.10\",\n    dnsIp: \"192.168.199.10\",\n    domain: \"example.com\",\n    ou: \"CN=Computers,DC=example,DC=com\",\n    user: \"joinDomainUser\",\n    password: \"s8cret\",\n});\nconst sharenetwork1 = new openstack.sharedfilesystem.ShareNetwork(\"sharenetwork_1\", {\n    name: \"test_sharenetwork\",\n    description: \"test share network with security services\",\n    neutronNetId: network1.id,\n    neutronSubnetId: subnet1.id,\n    securityServiceIds: [securityservice1.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nnetwork1 = openstack.networking.Network(\"network_1\",\n    name=\"network_1\",\n    admin_state_up=True)\nsubnet1 = openstack.networking.Subnet(\"subnet_1\",\n    name=\"subnet_1\",\n    cidr=\"192.168.199.0/24\",\n    ip_version=4,\n    network_id=network1.id)\nsecurityservice1 = openstack.sharedfilesystem.SecurityService(\"securityservice_1\",\n    name=\"security\",\n    description=\"created by terraform\",\n    type=\"active_directory\",\n    server=\"192.168.199.10\",\n    dns_ip=\"192.168.199.10\",\n    domain=\"example.com\",\n    ou=\"CN=Computers,DC=example,DC=com\",\n    user=\"joinDomainUser\",\n    password=\"s8cret\")\nsharenetwork1 = openstack.sharedfilesystem.ShareNetwork(\"sharenetwork_1\",\n    name=\"test_sharenetwork\",\n    description=\"test share network with security services\",\n    neutron_net_id=network1.id,\n    neutron_subnet_id=subnet1.id,\n    security_service_ids=[securityservice1.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var network1 = new OpenStack.Networking.Network(\"network_1\", new()\n    {\n        Name = \"network_1\",\n        AdminStateUp = true,\n    });\n\n    var subnet1 = new OpenStack.Networking.Subnet(\"subnet_1\", new()\n    {\n        Name = \"subnet_1\",\n        Cidr = \"192.168.199.0/24\",\n        IpVersion = 4,\n        NetworkId = network1.Id,\n    });\n\n    var securityservice1 = new OpenStack.SharedFileSystem.SecurityService(\"securityservice_1\", new()\n    {\n        Name = \"security\",\n        Description = \"created by terraform\",\n        Type = \"active_directory\",\n        Server = \"192.168.199.10\",\n        DnsIp = \"192.168.199.10\",\n        Domain = \"example.com\",\n        Ou = \"CN=Computers,DC=example,DC=com\",\n        User = \"joinDomainUser\",\n        Password = \"s8cret\",\n    });\n\n    var sharenetwork1 = new OpenStack.SharedFileSystem.ShareNetwork(\"sharenetwork_1\", new()\n    {\n        Name = \"test_sharenetwork\",\n        Description = \"test share network with security services\",\n        NeutronNetId = network1.Id,\n        NeutronSubnetId = subnet1.Id,\n        SecurityServiceIds = new[]\n        {\n            securityservice1.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/sharedfilesystem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork1, err := networking.NewNetwork(ctx, \"network_1\", \u0026networking.NetworkArgs{\n\t\t\tName:         pulumi.String(\"network_1\"),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet1, err := networking.NewSubnet(ctx, \"subnet_1\", \u0026networking.SubnetArgs{\n\t\t\tName:      pulumi.String(\"subnet_1\"),\n\t\t\tCidr:      pulumi.String(\"192.168.199.0/24\"),\n\t\t\tIpVersion: pulumi.Int(4),\n\t\t\tNetworkId: network1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecurityservice1, err := sharedfilesystem.NewSecurityService(ctx, \"securityservice_1\", \u0026sharedfilesystem.SecurityServiceArgs{\n\t\t\tName:        pulumi.String(\"security\"),\n\t\t\tDescription: pulumi.String(\"created by terraform\"),\n\t\t\tType:        pulumi.String(\"active_directory\"),\n\t\t\tServer:      pulumi.String(\"192.168.199.10\"),\n\t\t\tDnsIp:       pulumi.String(\"192.168.199.10\"),\n\t\t\tDomain:      pulumi.String(\"example.com\"),\n\t\t\tOu:          pulumi.String(\"CN=Computers,DC=example,DC=com\"),\n\t\t\tUser:        pulumi.String(\"joinDomainUser\"),\n\t\t\tPassword:    pulumi.String(\"s8cret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sharedfilesystem.NewShareNetwork(ctx, \"sharenetwork_1\", \u0026sharedfilesystem.ShareNetworkArgs{\n\t\t\tName:            pulumi.String(\"test_sharenetwork\"),\n\t\t\tDescription:     pulumi.String(\"test share network with security services\"),\n\t\t\tNeutronNetId:    network1.ID(),\n\t\t\tNeutronSubnetId: subnet1.ID(),\n\t\t\tSecurityServiceIds: pulumi.StringArray{\n\t\t\t\tsecurityservice1.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.openstack.networking.Network;\nimport com.pulumi.openstack.networking.NetworkArgs;\nimport com.pulumi.openstack.networking.Subnet;\nimport com.pulumi.openstack.networking.SubnetArgs;\nimport com.pulumi.openstack.sharedfilesystem.SecurityService;\nimport com.pulumi.openstack.sharedfilesystem.SecurityServiceArgs;\nimport com.pulumi.openstack.sharedfilesystem.ShareNetwork;\nimport com.pulumi.openstack.sharedfilesystem.ShareNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 network1 = new Network(\"network1\", NetworkArgs.builder()\n            .name(\"network_1\")\n            .adminStateUp(true)\n            .build());\n\n        var subnet1 = new Subnet(\"subnet1\", SubnetArgs.builder()\n            .name(\"subnet_1\")\n            .cidr(\"192.168.199.0/24\")\n            .ipVersion(4)\n            .networkId(network1.id())\n            .build());\n\n        var securityservice1 = new SecurityService(\"securityservice1\", SecurityServiceArgs.builder()\n            .name(\"security\")\n            .description(\"created by terraform\")\n            .type(\"active_directory\")\n            .server(\"192.168.199.10\")\n            .dnsIp(\"192.168.199.10\")\n            .domain(\"example.com\")\n            .ou(\"CN=Computers,DC=example,DC=com\")\n            .user(\"joinDomainUser\")\n            .password(\"s8cret\")\n            .build());\n\n        var sharenetwork1 = new ShareNetwork(\"sharenetwork1\", ShareNetworkArgs.builder()\n            .name(\"test_sharenetwork\")\n            .description(\"test share network with security services\")\n            .neutronNetId(network1.id())\n            .neutronSubnetId(subnet1.id())\n            .securityServiceIds(securityservice1.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  network1:\n    type: openstack:networking:Network\n    name: network_1\n    properties:\n      name: network_1\n      adminStateUp: 'true'\n  subnet1:\n    type: openstack:networking:Subnet\n    name: subnet_1\n    properties:\n      name: subnet_1\n      cidr: 192.168.199.0/24\n      ipVersion: 4\n      networkId: ${network1.id}\n  securityservice1:\n    type: openstack:sharedfilesystem:SecurityService\n    name: securityservice_1\n    properties:\n      name: security\n      description: created by terraform\n      type: active_directory\n      server: 192.168.199.10\n      dnsIp: 192.168.199.10\n      domain: example.com\n      ou: CN=Computers,DC=example,DC=com\n      user: joinDomainUser\n      password: s8cret\n  sharenetwork1:\n    type: openstack:sharedfilesystem:ShareNetwork\n    name: sharenetwork_1\n    properties:\n      name: test_sharenetwork\n      description: test share network with security services\n      neutronNetId: ${network1.id}\n      neutronSubnetId: ${subnet1.id}\n      securityServiceIds:\n        - ${securityservice1.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource can be imported by specifying the ID of the share network:\n\n```sh\n$ pulumi import openstack:sharedfilesystem/shareNetwork:ShareNetwork sharenetwork_1 id\n```\n","properties":{"cidr":{"type":"string","description":"The share network CIDR.\n"},"description":{"type":"string","description":"The human-readable description for the share network.\nChanging this updates the description of the existing share network.\n"},"ipVersion":{"type":"integer","description":"The IP version of the share network. Can either be 4 or 6.\n"},"name":{"type":"string","description":"The name for the share network. Changing this updates the name\nof the existing share network.\n"},"networkType":{"type":"string","description":"The share network type. Can either be VLAN, VXLAN, GRE, or flat.\n"},"neutronNetId":{"type":"string","description":"The UUID of a neutron network when setting up or updating\na share network. Changing this updates the existing share network if it's not used by\nshares.\n"},"neutronSubnetId":{"type":"string","description":"The UUID of the neutron subnet when setting up or\nupdating a share network. Changing this updates the existing share network if it's\nnot used by shares.\n"},"projectId":{"type":"string","description":"The owner of the Share Network.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Shared File System client.\nA Shared File System client is needed to create a share network. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nshare network.\n"},"securityServiceIds":{"type":"array","items":{"type":"string"},"description":"The list of security service IDs to associate with\nthe share network. The security service must be specified by ID and not name.\n"},"segmentationId":{"type":"integer","description":"The share network segmentation ID.\n"}},"required":["cidr","ipVersion","name","networkType","neutronNetId","neutronSubnetId","projectId","region","segmentationId"],"inputProperties":{"description":{"type":"string","description":"The human-readable description for the share network.\nChanging this updates the description of the existing share network.\n"},"name":{"type":"string","description":"The name for the share network. Changing this updates the name\nof the existing share network.\n"},"neutronNetId":{"type":"string","description":"The UUID of a neutron network when setting up or updating\na share network. Changing this updates the existing share network if it's not used by\nshares.\n"},"neutronSubnetId":{"type":"string","description":"The UUID of the neutron subnet when setting up or\nupdating a share network. Changing this updates the existing share network if it's\nnot used by shares.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Shared File System client.\nA Shared File System client is needed to create a share network. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nshare network.\n","willReplaceOnChanges":true},"securityServiceIds":{"type":"array","items":{"type":"string"},"description":"The list of security service IDs to associate with\nthe share network. The security service must be specified by ID and not name.\n"}},"requiredInputs":["neutronNetId","neutronSubnetId"],"stateInputs":{"description":"Input properties used for looking up and filtering ShareNetwork resources.\n","properties":{"cidr":{"type":"string","description":"The share network CIDR.\n"},"description":{"type":"string","description":"The human-readable description for the share network.\nChanging this updates the description of the existing share network.\n"},"ipVersion":{"type":"integer","description":"The IP version of the share network. Can either be 4 or 6.\n"},"name":{"type":"string","description":"The name for the share network. Changing this updates the name\nof the existing share network.\n"},"networkType":{"type":"string","description":"The share network type. Can either be VLAN, VXLAN, GRE, or flat.\n"},"neutronNetId":{"type":"string","description":"The UUID of a neutron network when setting up or updating\na share network. Changing this updates the existing share network if it's not used by\nshares.\n"},"neutronSubnetId":{"type":"string","description":"The UUID of the neutron subnet when setting up or\nupdating a share network. Changing this updates the existing share network if it's\nnot used by shares.\n"},"projectId":{"type":"string","description":"The owner of the Share Network.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Shared File System client.\nA Shared File System client is needed to create a share network. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nshare network.\n","willReplaceOnChanges":true},"securityServiceIds":{"type":"array","items":{"type":"string"},"description":"The list of security service IDs to associate with\nthe share network. The security service must be specified by ID and not name.\n"},"segmentationId":{"type":"integer","description":"The share network segmentation ID.\n"}},"type":"object"}},"openstack:vpnaas/endpointGroup:EndpointGroup":{"description":"Manages a V2 Neutron Endpoint Group resource within OpenStack.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst group1 = new openstack.vpnaas.EndpointGroup(\"group_1\", {\n    name: \"Group 1\",\n    type: \"cidr\",\n    endpoints: [\n        \"10.2.0.0/24\",\n        \"10.3.0.0/24\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\ngroup1 = openstack.vpnaas.EndpointGroup(\"group_1\",\n    name=\"Group 1\",\n    type=\"cidr\",\n    endpoints=[\n        \"10.2.0.0/24\",\n        \"10.3.0.0/24\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var group1 = new OpenStack.VPNaaS.EndpointGroup(\"group_1\", new()\n    {\n        Name = \"Group 1\",\n        Type = \"cidr\",\n        Endpoints = new[]\n        {\n            \"10.2.0.0/24\",\n            \"10.3.0.0/24\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/vpnaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vpnaas.NewEndpointGroup(ctx, \"group_1\", \u0026vpnaas.EndpointGroupArgs{\n\t\t\tName: pulumi.String(\"Group 1\"),\n\t\t\tType: pulumi.String(\"cidr\"),\n\t\t\tEndpoints: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.2.0.0/24\"),\n\t\t\t\tpulumi.String(\"10.3.0.0/24\"),\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.openstack.vpnaas.EndpointGroup;\nimport com.pulumi.openstack.vpnaas.EndpointGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 group1 = new EndpointGroup(\"group1\", EndpointGroupArgs.builder()\n            .name(\"Group 1\")\n            .type(\"cidr\")\n            .endpoints(            \n                \"10.2.0.0/24\",\n                \"10.3.0.0/24\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  group1:\n    type: openstack:vpnaas:EndpointGroup\n    name: group_1\n    properties:\n      name: Group 1\n      type: cidr\n      endpoints:\n        - 10.2.0.0/24\n        - 10.3.0.0/24\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGroups can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:vpnaas/endpointGroup:EndpointGroup group_1 832cb7f3-59fe-40cf-8f64-8350ffc03272\n```\n","properties":{"description":{"type":"string","description":"The human-readable description for the group.\nChanging this updates the description of the existing group.\n"},"endpoints":{"type":"array","items":{"type":"string"},"description":"List of endpoints of the same type, for the endpoint group. The values will depend on the type.\nChanging this creates a new group.\n"},"name":{"type":"string","description":"The name of the group. Changing this updates the name of\nthe existing group.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an endpoint group. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\ngroup.\n"},"tenantId":{"type":"string","description":"The owner of the group. Required if admin wants to\ncreate an endpoint group for another project. Changing this creates a new group.\n"},"type":{"type":"string","description":"The type of the endpoints in the group. A valid value is subnet, cidr, network, router, or vlan.\nChanging this creates a new group.\n"},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n"}},"required":["name","region","tenantId","type"],"inputProperties":{"description":{"type":"string","description":"The human-readable description for the group.\nChanging this updates the description of the existing group.\n"},"endpoints":{"type":"array","items":{"type":"string"},"description":"List of endpoints of the same type, for the endpoint group. The values will depend on the type.\nChanging this creates a new group.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"The name of the group. Changing this updates the name of\nthe existing group.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an endpoint group. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\ngroup.\n","willReplaceOnChanges":true},"tenantId":{"type":"string","description":"The owner of the group. Required if admin wants to\ncreate an endpoint group for another project. Changing this creates a new group.\n","willReplaceOnChanges":true},"type":{"type":"string","description":"The type of the endpoints in the group. A valid value is subnet, cidr, network, router, or vlan.\nChanging this creates a new group.\n","willReplaceOnChanges":true},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering EndpointGroup resources.\n","properties":{"description":{"type":"string","description":"The human-readable description for the group.\nChanging this updates the description of the existing group.\n"},"endpoints":{"type":"array","items":{"type":"string"},"description":"List of endpoints of the same type, for the endpoint group. The values will depend on the type.\nChanging this creates a new group.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"The name of the group. Changing this updates the name of\nthe existing group.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an endpoint group. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\ngroup.\n","willReplaceOnChanges":true},"tenantId":{"type":"string","description":"The owner of the group. Required if admin wants to\ncreate an endpoint group for another project. Changing this creates a new group.\n","willReplaceOnChanges":true},"type":{"type":"string","description":"The type of the endpoints in the group. A valid value is subnet, cidr, network, router, or vlan.\nChanging this creates a new group.\n","willReplaceOnChanges":true},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:vpnaas/ikePolicy:IkePolicy":{"description":"Manages a V2 Neutron IKE policy resource within OpenStack.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst policy1 = new openstack.vpnaas.IkePolicy(\"policy_1\", {name: \"my_policy\"});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\npolicy1 = openstack.vpnaas.IkePolicy(\"policy_1\", name=\"my_policy\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var policy1 = new OpenStack.VPNaaS.IkePolicy(\"policy_1\", new()\n    {\n        Name = \"my_policy\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/vpnaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vpnaas.NewIkePolicy(ctx, \"policy_1\", \u0026vpnaas.IkePolicyArgs{\n\t\t\tName: pulumi.String(\"my_policy\"),\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.openstack.vpnaas.IkePolicy;\nimport com.pulumi.openstack.vpnaas.IkePolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 policy1 = new IkePolicy(\"policy1\", IkePolicyArgs.builder()\n            .name(\"my_policy\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  policy1:\n    type: openstack:vpnaas:IkePolicy\n    name: policy_1\n    properties:\n      name: my_policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServices can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:vpnaas/ikePolicy:IkePolicy policy_1 832cb7f3-59fe-40cf-8f64-8350ffc03272\n```\n","properties":{"authAlgorithm":{"type":"string","description":"The authentication hash algorithm. Valid values are sha1, sha256, sha384, sha512,\naes-xcbc, aes-cmac. Default is sha1.\nChanging this updates the algorithm of the existing policy.\n"},"description":{"type":"string","description":"The human-readable description for the policy.\nChanging this updates the description of the existing policy.\n"},"encryptionAlgorithm":{"type":"string","description":"The encryption algorithm. Valid values are 3des, aes-128, aes-192, aes-256,\naes-KKK-ctr, aes-KKK-ccm-II, aes-KKK-gcm-II (with KKK = 128/192/256 bits key size and II = 8/12/16 octets ICV).\nThe default value is aes-128. Changing this updates the existing policy.\n"},"ikeVersion":{"type":"string","description":"The IKE version. A valid value is v1 or v2. Default is v1.\nChanging this updates the existing policy.\n"},"lifetimes":{"type":"array","items":{"$ref":"#/types/openstack:vpnaas/IkePolicyLifetime:IkePolicyLifetime"},"description":"The lifetime of the security association. Consists of Unit and Value.\n"},"name":{"type":"string","description":"The name of the policy. Changing this updates the name of\nthe existing policy.\n"},"pfs":{"type":"string","description":"The perfect forward secrecy mode. Valid values are group2, group5 and group14 to group31.\nDefault is group5. Changing this updates the existing policy.\n"},"phase1NegotiationMode":{"type":"string","description":"The IKE mode. A valid value is main, which is the default.\nChanging this updates the existing policy.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a VPN service. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nservice.\n"},"tenantId":{"type":"string","description":"The owner of the policy. Required if admin wants to\ncreate a service for another policy. Changing this creates a new policy.\n"},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n"}},"required":["lifetimes","name","region","tenantId"],"inputProperties":{"authAlgorithm":{"type":"string","description":"The authentication hash algorithm. Valid values are sha1, sha256, sha384, sha512,\naes-xcbc, aes-cmac. Default is sha1.\nChanging this updates the algorithm of the existing policy.\n"},"description":{"type":"string","description":"The human-readable description for the policy.\nChanging this updates the description of the existing policy.\n"},"encryptionAlgorithm":{"type":"string","description":"The encryption algorithm. Valid values are 3des, aes-128, aes-192, aes-256,\naes-KKK-ctr, aes-KKK-ccm-II, aes-KKK-gcm-II (with KKK = 128/192/256 bits key size and II = 8/12/16 octets ICV).\nThe default value is aes-128. Changing this updates the existing policy.\n"},"ikeVersion":{"type":"string","description":"The IKE version. A valid value is v1 or v2. Default is v1.\nChanging this updates the existing policy.\n"},"lifetimes":{"type":"array","items":{"$ref":"#/types/openstack:vpnaas/IkePolicyLifetime:IkePolicyLifetime"},"description":"The lifetime of the security association. Consists of Unit and Value.\n"},"name":{"type":"string","description":"The name of the policy. Changing this updates the name of\nthe existing policy.\n"},"pfs":{"type":"string","description":"The perfect forward secrecy mode. Valid values are group2, group5 and group14 to group31.\nDefault is group5. Changing this updates the existing policy.\n"},"phase1NegotiationMode":{"type":"string","description":"The IKE mode. A valid value is main, which is the default.\nChanging this updates the existing policy.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a VPN service. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nservice.\n","willReplaceOnChanges":true},"tenantId":{"type":"string","description":"The owner of the policy. Required if admin wants to\ncreate a service for another policy. Changing this creates a new policy.\n","willReplaceOnChanges":true},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering IkePolicy resources.\n","properties":{"authAlgorithm":{"type":"string","description":"The authentication hash algorithm. Valid values are sha1, sha256, sha384, sha512,\naes-xcbc, aes-cmac. Default is sha1.\nChanging this updates the algorithm of the existing policy.\n"},"description":{"type":"string","description":"The human-readable description for the policy.\nChanging this updates the description of the existing policy.\n"},"encryptionAlgorithm":{"type":"string","description":"The encryption algorithm. Valid values are 3des, aes-128, aes-192, aes-256,\naes-KKK-ctr, aes-KKK-ccm-II, aes-KKK-gcm-II (with KKK = 128/192/256 bits key size and II = 8/12/16 octets ICV).\nThe default value is aes-128. Changing this updates the existing policy.\n"},"ikeVersion":{"type":"string","description":"The IKE version. A valid value is v1 or v2. Default is v1.\nChanging this updates the existing policy.\n"},"lifetimes":{"type":"array","items":{"$ref":"#/types/openstack:vpnaas/IkePolicyLifetime:IkePolicyLifetime"},"description":"The lifetime of the security association. Consists of Unit and Value.\n"},"name":{"type":"string","description":"The name of the policy. Changing this updates the name of\nthe existing policy.\n"},"pfs":{"type":"string","description":"The perfect forward secrecy mode. Valid values are group2, group5 and group14 to group31.\nDefault is group5. Changing this updates the existing policy.\n"},"phase1NegotiationMode":{"type":"string","description":"The IKE mode. A valid value is main, which is the default.\nChanging this updates the existing policy.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a VPN service. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nservice.\n","willReplaceOnChanges":true},"tenantId":{"type":"string","description":"The owner of the policy. Required if admin wants to\ncreate a service for another policy. Changing this creates a new policy.\n","willReplaceOnChanges":true},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:vpnaas/ipSecPolicy:IpSecPolicy":{"description":"Manages a V2 Neutron IPSec policy resource within OpenStack.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst policy1 = new openstack.vpnaas.IpSecPolicy(\"policy_1\", {name: \"my_policy\"});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\npolicy1 = openstack.vpnaas.IpSecPolicy(\"policy_1\", name=\"my_policy\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var policy1 = new OpenStack.VPNaaS.IpSecPolicy(\"policy_1\", new()\n    {\n        Name = \"my_policy\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/vpnaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vpnaas.NewIpSecPolicy(ctx, \"policy_1\", \u0026vpnaas.IpSecPolicyArgs{\n\t\t\tName: pulumi.String(\"my_policy\"),\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.openstack.vpnaas.IpSecPolicy;\nimport com.pulumi.openstack.vpnaas.IpSecPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 policy1 = new IpSecPolicy(\"policy1\", IpSecPolicyArgs.builder()\n            .name(\"my_policy\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  policy1:\n    type: openstack:vpnaas:IpSecPolicy\n    name: policy_1\n    properties:\n      name: my_policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPolicies can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:vpnaas/ipSecPolicy:IpSecPolicy policy_1 832cb7f3-59fe-40cf-8f64-8350ffc03272\n```\n","properties":{"authAlgorithm":{"type":"string","description":"The authentication hash algorithm. Valid values are sha1, sha256, sha384, sha512,\naes-xcbc, aes-cmac. Default is sha1.\nChanging this updates the algorithm of the existing policy.\n"},"description":{"type":"string","description":"The human-readable description for the policy.\nChanging this updates the description of the existing policy.\n"},"encapsulationMode":{"type":"string","description":"The encapsulation mode. Valid values are tunnel and transport. Default is tunnel.\nChanging this updates the existing policy.\n"},"encryptionAlgorithm":{"type":"string","description":"The encryption algorithm. Valid values are 3des, aes-128, aes-192, aes-256,\naes-KKK-ctr, aes-KKK-ccm-II, aes-KKK-gcm-II (with KKK = 128/192/256 bits key size and II = 8/12/16 octets ICV).\nThe default value is aes-128. Changing this updates the existing policy.\n"},"lifetimes":{"type":"array","items":{"$ref":"#/types/openstack:vpnaas/IpSecPolicyLifetime:IpSecPolicyLifetime"},"description":"The lifetime of the security association. Consists of Unit and Value.\n"},"name":{"type":"string","description":"The name of the policy. Changing this updates the name of\nthe existing policy.\n"},"pfs":{"type":"string","description":"The perfect forward secrecy mode. Valid values are group2, group5 and group14 to group31.\nDefault is group5. Changing this updates the existing policy.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an IPSec policy. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\npolicy.\n"},"tenantId":{"type":"string","description":"The owner of the policy. Required if admin wants to\ncreate a policy for another project. Changing this creates a new policy.\n"},"transformProtocol":{"type":"string","description":"The transform protocol. Valid values are esp, ah and ah-esp.\nChanging this updates the existing policy. Default is ESP.\n"},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n"}},"required":["authAlgorithm","encapsulationMode","encryptionAlgorithm","lifetimes","name","pfs","region","tenantId","transformProtocol"],"inputProperties":{"authAlgorithm":{"type":"string","description":"The authentication hash algorithm. Valid values are sha1, sha256, sha384, sha512,\naes-xcbc, aes-cmac. Default is sha1.\nChanging this updates the algorithm of the existing policy.\n"},"description":{"type":"string","description":"The human-readable description for the policy.\nChanging this updates the description of the existing policy.\n"},"encapsulationMode":{"type":"string","description":"The encapsulation mode. Valid values are tunnel and transport. Default is tunnel.\nChanging this updates the existing policy.\n"},"encryptionAlgorithm":{"type":"string","description":"The encryption algorithm. Valid values are 3des, aes-128, aes-192, aes-256,\naes-KKK-ctr, aes-KKK-ccm-II, aes-KKK-gcm-II (with KKK = 128/192/256 bits key size and II = 8/12/16 octets ICV).\nThe default value is aes-128. Changing this updates the existing policy.\n"},"lifetimes":{"type":"array","items":{"$ref":"#/types/openstack:vpnaas/IpSecPolicyLifetime:IpSecPolicyLifetime"},"description":"The lifetime of the security association. Consists of Unit and Value.\n"},"name":{"type":"string","description":"The name of the policy. Changing this updates the name of\nthe existing policy.\n"},"pfs":{"type":"string","description":"The perfect forward secrecy mode. Valid values are group2, group5 and group14 to group31.\nDefault is group5. Changing this updates the existing policy.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an IPSec policy. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\npolicy.\n","willReplaceOnChanges":true},"tenantId":{"type":"string","description":"The owner of the policy. Required if admin wants to\ncreate a policy for another project. Changing this creates a new policy.\n","willReplaceOnChanges":true},"transformProtocol":{"type":"string","description":"The transform protocol. Valid values are esp, ah and ah-esp.\nChanging this updates the existing policy. Default is ESP.\n"},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n","willReplaceOnChanges":true}},"stateInputs":{"description":"Input properties used for looking up and filtering IpSecPolicy resources.\n","properties":{"authAlgorithm":{"type":"string","description":"The authentication hash algorithm. Valid values are sha1, sha256, sha384, sha512,\naes-xcbc, aes-cmac. Default is sha1.\nChanging this updates the algorithm of the existing policy.\n"},"description":{"type":"string","description":"The human-readable description for the policy.\nChanging this updates the description of the existing policy.\n"},"encapsulationMode":{"type":"string","description":"The encapsulation mode. Valid values are tunnel and transport. Default is tunnel.\nChanging this updates the existing policy.\n"},"encryptionAlgorithm":{"type":"string","description":"The encryption algorithm. Valid values are 3des, aes-128, aes-192, aes-256,\naes-KKK-ctr, aes-KKK-ccm-II, aes-KKK-gcm-II (with KKK = 128/192/256 bits key size and II = 8/12/16 octets ICV).\nThe default value is aes-128. Changing this updates the existing policy.\n"},"lifetimes":{"type":"array","items":{"$ref":"#/types/openstack:vpnaas/IpSecPolicyLifetime:IpSecPolicyLifetime"},"description":"The lifetime of the security association. Consists of Unit and Value.\n"},"name":{"type":"string","description":"The name of the policy. Changing this updates the name of\nthe existing policy.\n"},"pfs":{"type":"string","description":"The perfect forward secrecy mode. Valid values are group2, group5 and group14 to group31.\nDefault is group5. Changing this updates the existing policy.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an IPSec policy. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\npolicy.\n","willReplaceOnChanges":true},"tenantId":{"type":"string","description":"The owner of the policy. Required if admin wants to\ncreate a policy for another project. Changing this creates a new policy.\n","willReplaceOnChanges":true},"transformProtocol":{"type":"string","description":"The transform protocol. Valid values are esp, ah and ah-esp.\nChanging this updates the existing policy. Default is ESP.\n"},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:vpnaas/service:Service":{"description":"Manages a V2 Neutron VPN service resource within OpenStack.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst service1 = new openstack.vpnaas.Service(\"service_1\", {\n    name: \"my_service\",\n    routerId: \"14a75700-fc03-4602-9294-26ee44f366b3\",\n    adminStateUp: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nservice1 = openstack.vpnaas.Service(\"service_1\",\n    name=\"my_service\",\n    router_id=\"14a75700-fc03-4602-9294-26ee44f366b3\",\n    admin_state_up=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var service1 = new OpenStack.VPNaaS.Service(\"service_1\", new()\n    {\n        Name = \"my_service\",\n        RouterId = \"14a75700-fc03-4602-9294-26ee44f366b3\",\n        AdminStateUp = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/vpnaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vpnaas.NewService(ctx, \"service_1\", \u0026vpnaas.ServiceArgs{\n\t\t\tName:         pulumi.String(\"my_service\"),\n\t\t\tRouterId:     pulumi.String(\"14a75700-fc03-4602-9294-26ee44f366b3\"),\n\t\t\tAdminStateUp: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openstack.vpnaas.Service;\nimport com.pulumi.openstack.vpnaas.ServiceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 service1 = new Service(\"service1\", ServiceArgs.builder()\n            .name(\"my_service\")\n            .routerId(\"14a75700-fc03-4602-9294-26ee44f366b3\")\n            .adminStateUp(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  service1:\n    type: openstack:vpnaas:Service\n    name: service_1\n    properties:\n      name: my_service\n      routerId: 14a75700-fc03-4602-9294-26ee44f366b3\n      adminStateUp: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServices can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:vpnaas/service:Service service_1 832cb7f3-59fe-40cf-8f64-8350ffc03272\n```\n","properties":{"adminStateUp":{"type":"boolean","description":"The administrative state of the resource. Can either be up(true) or down(false).\nChanging this updates the administrative state of the existing service.\n"},"description":{"type":"string","description":"The human-readable description for the service.\nChanging this updates the description of the existing service.\n"},"externalV4Ip":{"type":"string","description":"The read-only external (public) IPv4 address that is used for the VPN service.\n"},"externalV6Ip":{"type":"string","description":"The read-only external (public) IPv6 address that is used for the VPN service.\n"},"name":{"type":"string","description":"The name of the service. Changing this updates the name of\nthe existing service.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a VPN service. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nservice.\n"},"routerId":{"type":"string","description":"The ID of the router. Changing this creates a new service.\n"},"status":{"type":"string","description":"Indicates whether IPsec VPN service is currently operational. Values are ACTIVE, DOWN, BUILD, ERROR, PENDING_CREATE, PENDING_UPDATE, or PENDING_DELETE.\n"},"subnetId":{"type":"string","description":"SubnetID is the ID of the subnet. Default is null.\n"},"tenantId":{"type":"string","description":"The owner of the service. Required if admin wants to\ncreate a service for another project. Changing this creates a new service.\n"},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n"}},"required":["externalV4Ip","externalV6Ip","name","region","routerId","status","tenantId"],"inputProperties":{"adminStateUp":{"type":"boolean","description":"The administrative state of the resource. Can either be up(true) or down(false).\nChanging this updates the administrative state of the existing service.\n"},"description":{"type":"string","description":"The human-readable description for the service.\nChanging this updates the description of the existing service.\n"},"name":{"type":"string","description":"The name of the service. Changing this updates the name of\nthe existing service.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a VPN service. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nservice.\n","willReplaceOnChanges":true},"routerId":{"type":"string","description":"The ID of the router. Changing this creates a new service.\n","willReplaceOnChanges":true},"subnetId":{"type":"string","description":"SubnetID is the ID of the subnet. Default is null.\n","willReplaceOnChanges":true},"tenantId":{"type":"string","description":"The owner of the service. Required if admin wants to\ncreate a service for another project. Changing this creates a new service.\n","willReplaceOnChanges":true},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n","willReplaceOnChanges":true}},"requiredInputs":["routerId"],"stateInputs":{"description":"Input properties used for looking up and filtering Service resources.\n","properties":{"adminStateUp":{"type":"boolean","description":"The administrative state of the resource. Can either be up(true) or down(false).\nChanging this updates the administrative state of the existing service.\n"},"description":{"type":"string","description":"The human-readable description for the service.\nChanging this updates the description of the existing service.\n"},"externalV4Ip":{"type":"string","description":"The read-only external (public) IPv4 address that is used for the VPN service.\n"},"externalV6Ip":{"type":"string","description":"The read-only external (public) IPv6 address that is used for the VPN service.\n"},"name":{"type":"string","description":"The name of the service. Changing this updates the name of\nthe existing service.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a VPN service. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nservice.\n","willReplaceOnChanges":true},"routerId":{"type":"string","description":"The ID of the router. Changing this creates a new service.\n","willReplaceOnChanges":true},"status":{"type":"string","description":"Indicates whether IPsec VPN service is currently operational. Values are ACTIVE, DOWN, BUILD, ERROR, PENDING_CREATE, PENDING_UPDATE, or PENDING_DELETE.\n"},"subnetId":{"type":"string","description":"SubnetID is the ID of the subnet. Default is null.\n","willReplaceOnChanges":true},"tenantId":{"type":"string","description":"The owner of the service. Required if admin wants to\ncreate a service for another project. Changing this creates a new service.\n","willReplaceOnChanges":true},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n","willReplaceOnChanges":true}},"type":"object"}},"openstack:vpnaas/siteConnection:SiteConnection":{"description":"Manages a V2 Neutron IPSec site connection resource within OpenStack.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst conn1 = new openstack.vpnaas.SiteConnection(\"conn_1\", {\n    name: \"connection_1\",\n    ikepolicyId: policy2.id,\n    ipsecpolicyId: policy1.id,\n    vpnserviceId: service1.id,\n    psk: \"secret\",\n    peerAddress: \"192.168.10.1\",\n    localEpGroupId: group2.id,\n    peerEpGroupId: group1.id,\n    dpds: [{\n        action: \"restart\",\n        timeout: 42,\n        interval: 21,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nconn1 = openstack.vpnaas.SiteConnection(\"conn_1\",\n    name=\"connection_1\",\n    ikepolicy_id=policy2[\"id\"],\n    ipsecpolicy_id=policy1[\"id\"],\n    vpnservice_id=service1[\"id\"],\n    psk=\"secret\",\n    peer_address=\"192.168.10.1\",\n    local_ep_group_id=group2[\"id\"],\n    peer_ep_group_id=group1[\"id\"],\n    dpds=[{\n        \"action\": \"restart\",\n        \"timeout\": 42,\n        \"interval\": 21,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var conn1 = new OpenStack.VPNaaS.SiteConnection(\"conn_1\", new()\n    {\n        Name = \"connection_1\",\n        IkepolicyId = policy2.Id,\n        IpsecpolicyId = policy1.Id,\n        VpnserviceId = service1.Id,\n        Psk = \"secret\",\n        PeerAddress = \"192.168.10.1\",\n        LocalEpGroupId = group2.Id,\n        PeerEpGroupId = group1.Id,\n        Dpds = new[]\n        {\n            new OpenStack.VPNaaS.Inputs.SiteConnectionDpdArgs\n            {\n                Action = \"restart\",\n                Timeout = 42,\n                Interval = 21,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/vpnaas\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vpnaas.NewSiteConnection(ctx, \"conn_1\", \u0026vpnaas.SiteConnectionArgs{\n\t\t\tName:           pulumi.String(\"connection_1\"),\n\t\t\tIkepolicyId:    pulumi.Any(policy2.Id),\n\t\t\tIpsecpolicyId:  pulumi.Any(policy1.Id),\n\t\t\tVpnserviceId:   pulumi.Any(service1.Id),\n\t\t\tPsk:            pulumi.String(\"secret\"),\n\t\t\tPeerAddress:    pulumi.String(\"192.168.10.1\"),\n\t\t\tLocalEpGroupId: pulumi.Any(group2.Id),\n\t\t\tPeerEpGroupId:  pulumi.Any(group1.Id),\n\t\t\tDpds: vpnaas.SiteConnectionDpdArray{\n\t\t\t\t\u0026vpnaas.SiteConnectionDpdArgs{\n\t\t\t\t\tAction:   pulumi.String(\"restart\"),\n\t\t\t\t\tTimeout:  pulumi.Int(42),\n\t\t\t\t\tInterval: pulumi.Int(21),\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.openstack.vpnaas.SiteConnection;\nimport com.pulumi.openstack.vpnaas.SiteConnectionArgs;\nimport com.pulumi.openstack.vpnaas.inputs.SiteConnectionDpdArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 conn1 = new SiteConnection(\"conn1\", SiteConnectionArgs.builder()\n            .name(\"connection_1\")\n            .ikepolicyId(policy2.id())\n            .ipsecpolicyId(policy1.id())\n            .vpnserviceId(service1.id())\n            .psk(\"secret\")\n            .peerAddress(\"192.168.10.1\")\n            .localEpGroupId(group2.id())\n            .peerEpGroupId(group1.id())\n            .dpds(SiteConnectionDpdArgs.builder()\n                .action(\"restart\")\n                .timeout(42)\n                .interval(21)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  conn1:\n    type: openstack:vpnaas:SiteConnection\n    name: conn_1\n    properties:\n      name: connection_1\n      ikepolicyId: ${policy2.id}\n      ipsecpolicyId: ${policy1.id}\n      vpnserviceId: ${service1.id}\n      psk: secret\n      peerAddress: 192.168.10.1\n      localEpGroupId: ${group2.id}\n      peerEpGroupId: ${group1.id}\n      dpds:\n        - action: restart\n          timeout: 42\n          interval: 21\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSite Connections can be imported using the `id`, e.g.\n\n```sh\n$ pulumi import openstack:vpnaas/siteConnection:SiteConnection conn_1 832cb7f3-59fe-40cf-8f64-8350ffc03272\n```\n","properties":{"adminStateUp":{"type":"boolean","description":"The administrative state of the resource. Can either be up(true) or down(false).\nChanging this updates the administrative state of the existing connection.\n"},"description":{"type":"string","description":"The human-readable description for the connection.\nChanging this updates the description of the existing connection.\n"},"dpds":{"type":"array","items":{"$ref":"#/types/openstack:vpnaas/SiteConnectionDpd:SiteConnectionDpd"},"description":"A dictionary with dead peer detection (DPD) protocol controls.\n"},"ikepolicyId":{"type":"string","description":"The ID of the IKE policy. Changing this creates a new connection.\n"},"initiator":{"type":"string","description":"A valid value is response-only or bi-directional. Default is bi-directional.\n"},"ipsecpolicyId":{"type":"string","description":"The ID of the IPsec policy. Changing this creates a new connection.\n"},"localEpGroupId":{"type":"string","description":"The ID for the endpoint group that contains private subnets for the local side of the connection.\nYou must specify this parameter with the\u003cspan pulumi-lang-nodejs=\" peerEpGroupId \" pulumi-lang-dotnet=\" PeerEpGroupId \" pulumi-lang-go=\" peerEpGroupId \" pulumi-lang-python=\" peer_ep_group_id \" pulumi-lang-yaml=\" peerEpGroupId \" pulumi-lang-java=\" peerEpGroupId \"\u003e peer_ep_group_id \u003c/span\u003eparameter unless\nin backward- compatible mode where\u003cspan pulumi-lang-nodejs=\" peerCidrs \" pulumi-lang-dotnet=\" PeerCidrs \" pulumi-lang-go=\" peerCidrs \" pulumi-lang-python=\" peer_cidrs \" pulumi-lang-yaml=\" peerCidrs \" pulumi-lang-java=\" peerCidrs \"\u003e peer_cidrs \u003c/span\u003eis provided with a\u003cspan pulumi-lang-nodejs=\" subnetId \" pulumi-lang-dotnet=\" SubnetId \" pulumi-lang-go=\" subnetId \" pulumi-lang-python=\" subnet_id \" pulumi-lang-yaml=\" subnetId \" pulumi-lang-java=\" subnetId \"\u003e subnet_id \u003c/span\u003efor the VPN service.\nChanging this updates the existing connection.\n"},"localId":{"type":"string","description":"An ID to be used instead of the external IP address for a virtual router used in traffic between instances on different networks in east-west traffic.\nMost often, local ID would be domain name, email address, etc.\nIf this is not configured then the external IP address will be used as the ID.\n"},"mtu":{"type":"integer","description":"The maximum transmission unit (MTU) value to address fragmentation.\nMinimum value is 68 for IPv4, and 1280 for IPv6.\n"},"name":{"type":"string","description":"The name of the connection. Changing this updates the name of\nthe existing connection.\n"},"peerAddress":{"type":"string","description":"The peer gateway public IPv4 or IPv6 address or FQDN.\n"},"peerCidrs":{"type":"array","items":{"type":"string"},"description":"Unique list of valid peer private CIDRs in the form \u003c\u003cspan pulumi-lang-nodejs=\" netAddress \" pulumi-lang-dotnet=\" NetAddress \" pulumi-lang-go=\" netAddress \" pulumi-lang-python=\" net_address \" pulumi-lang-yaml=\" netAddress \" pulumi-lang-java=\" netAddress \"\u003e net_address \u003c/span\u003e\u003e / \u003c prefix \u003e .\n"},"peerEpGroupId":{"type":"string","description":"The ID for the endpoint group that contains private CIDRs in the form \u003c\u003cspan pulumi-lang-nodejs=\" netAddress \" pulumi-lang-dotnet=\" NetAddress \" pulumi-lang-go=\" netAddress \" pulumi-lang-python=\" net_address \" pulumi-lang-yaml=\" netAddress \" pulumi-lang-java=\" netAddress \"\u003e net_address \u003c/span\u003e\u003e / \u003c prefix \u003e for the peer side of the connection.\nYou must specify this parameter with the\u003cspan pulumi-lang-nodejs=\" localEpGroupId \" pulumi-lang-dotnet=\" LocalEpGroupId \" pulumi-lang-go=\" localEpGroupId \" pulumi-lang-python=\" local_ep_group_id \" pulumi-lang-yaml=\" localEpGroupId \" pulumi-lang-java=\" localEpGroupId \"\u003e local_ep_group_id \u003c/span\u003eparameter unless in backward-compatible mode\nwhere\u003cspan pulumi-lang-nodejs=\" peerCidrs \" pulumi-lang-dotnet=\" PeerCidrs \" pulumi-lang-go=\" peerCidrs \" pulumi-lang-python=\" peer_cidrs \" pulumi-lang-yaml=\" peerCidrs \" pulumi-lang-java=\" peerCidrs \"\u003e peer_cidrs \u003c/span\u003eis provided with a\u003cspan pulumi-lang-nodejs=\" subnetId \" pulumi-lang-dotnet=\" SubnetId \" pulumi-lang-go=\" subnetId \" pulumi-lang-python=\" subnet_id \" pulumi-lang-yaml=\" subnetId \" pulumi-lang-java=\" subnetId \"\u003e subnet_id \u003c/span\u003efor the VPN service.\n"},"peerId":{"type":"string","description":"The peer router identity for authentication. A valid value is an IPv4 address, IPv6 address, e-mail address, key ID, or FQDN.\nTypically, this value matches the\u003cspan pulumi-lang-nodejs=\" peerAddress \" pulumi-lang-dotnet=\" PeerAddress \" pulumi-lang-go=\" peerAddress \" pulumi-lang-python=\" peer_address \" pulumi-lang-yaml=\" peerAddress \" pulumi-lang-java=\" peerAddress \"\u003e peer_address \u003c/span\u003evalue.\nChanging this updates the existing policy.\n"},"psk":{"type":"string","description":"The pre-shared key. A valid value is any string.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an IPSec site connection. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nsite connection.\n"},"tenantId":{"type":"string","description":"The owner of the connection. Required if admin wants to\ncreate a connection for another project. Changing this creates a new connection.\n"},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n"},"vpnserviceId":{"type":"string","description":"The ID of the VPN service. Changing this creates a new connection.\n"}},"required":["dpds","ikepolicyId","initiator","ipsecpolicyId","mtu","name","peerAddress","peerId","psk","region","tenantId","vpnserviceId"],"inputProperties":{"adminStateUp":{"type":"boolean","description":"The administrative state of the resource. Can either be up(true) or down(false).\nChanging this updates the administrative state of the existing connection.\n"},"description":{"type":"string","description":"The human-readable description for the connection.\nChanging this updates the description of the existing connection.\n"},"dpds":{"type":"array","items":{"$ref":"#/types/openstack:vpnaas/SiteConnectionDpd:SiteConnectionDpd"},"description":"A dictionary with dead peer detection (DPD) protocol controls.\n"},"ikepolicyId":{"type":"string","description":"The ID of the IKE policy. Changing this creates a new connection.\n","willReplaceOnChanges":true},"initiator":{"type":"string","description":"A valid value is response-only or bi-directional. Default is bi-directional.\n"},"ipsecpolicyId":{"type":"string","description":"The ID of the IPsec policy. Changing this creates a new connection.\n","willReplaceOnChanges":true},"localEpGroupId":{"type":"string","description":"The ID for the endpoint group that contains private subnets for the local side of the connection.\nYou must specify this parameter with the\u003cspan pulumi-lang-nodejs=\" peerEpGroupId \" pulumi-lang-dotnet=\" PeerEpGroupId \" pulumi-lang-go=\" peerEpGroupId \" pulumi-lang-python=\" peer_ep_group_id \" pulumi-lang-yaml=\" peerEpGroupId \" pulumi-lang-java=\" peerEpGroupId \"\u003e peer_ep_group_id \u003c/span\u003eparameter unless\nin backward- compatible mode where\u003cspan pulumi-lang-nodejs=\" peerCidrs \" pulumi-lang-dotnet=\" PeerCidrs \" pulumi-lang-go=\" peerCidrs \" pulumi-lang-python=\" peer_cidrs \" pulumi-lang-yaml=\" peerCidrs \" pulumi-lang-java=\" peerCidrs \"\u003e peer_cidrs \u003c/span\u003eis provided with a\u003cspan pulumi-lang-nodejs=\" subnetId \" pulumi-lang-dotnet=\" SubnetId \" pulumi-lang-go=\" subnetId \" pulumi-lang-python=\" subnet_id \" pulumi-lang-yaml=\" subnetId \" pulumi-lang-java=\" subnetId \"\u003e subnet_id \u003c/span\u003efor the VPN service.\nChanging this updates the existing connection.\n"},"localId":{"type":"string","description":"An ID to be used instead of the external IP address for a virtual router used in traffic between instances on different networks in east-west traffic.\nMost often, local ID would be domain name, email address, etc.\nIf this is not configured then the external IP address will be used as the ID.\n"},"mtu":{"type":"integer","description":"The maximum transmission unit (MTU) value to address fragmentation.\nMinimum value is 68 for IPv4, and 1280 for IPv6.\n"},"name":{"type":"string","description":"The name of the connection. Changing this updates the name of\nthe existing connection.\n"},"peerAddress":{"type":"string","description":"The peer gateway public IPv4 or IPv6 address or FQDN.\n"},"peerCidrs":{"type":"array","items":{"type":"string"},"description":"Unique list of valid peer private CIDRs in the form \u003c\u003cspan pulumi-lang-nodejs=\" netAddress \" pulumi-lang-dotnet=\" NetAddress \" pulumi-lang-go=\" netAddress \" pulumi-lang-python=\" net_address \" pulumi-lang-yaml=\" netAddress \" pulumi-lang-java=\" netAddress \"\u003e net_address \u003c/span\u003e\u003e / \u003c prefix \u003e .\n"},"peerEpGroupId":{"type":"string","description":"The ID for the endpoint group that contains private CIDRs in the form \u003c\u003cspan pulumi-lang-nodejs=\" netAddress \" pulumi-lang-dotnet=\" NetAddress \" pulumi-lang-go=\" netAddress \" pulumi-lang-python=\" net_address \" pulumi-lang-yaml=\" netAddress \" pulumi-lang-java=\" netAddress \"\u003e net_address \u003c/span\u003e\u003e / \u003c prefix \u003e for the peer side of the connection.\nYou must specify this parameter with the\u003cspan pulumi-lang-nodejs=\" localEpGroupId \" pulumi-lang-dotnet=\" LocalEpGroupId \" pulumi-lang-go=\" localEpGroupId \" pulumi-lang-python=\" local_ep_group_id \" pulumi-lang-yaml=\" localEpGroupId \" pulumi-lang-java=\" localEpGroupId \"\u003e local_ep_group_id \u003c/span\u003eparameter unless in backward-compatible mode\nwhere\u003cspan pulumi-lang-nodejs=\" peerCidrs \" pulumi-lang-dotnet=\" PeerCidrs \" pulumi-lang-go=\" peerCidrs \" pulumi-lang-python=\" peer_cidrs \" pulumi-lang-yaml=\" peerCidrs \" pulumi-lang-java=\" peerCidrs \"\u003e peer_cidrs \u003c/span\u003eis provided with a\u003cspan pulumi-lang-nodejs=\" subnetId \" pulumi-lang-dotnet=\" SubnetId \" pulumi-lang-go=\" subnetId \" pulumi-lang-python=\" subnet_id \" pulumi-lang-yaml=\" subnetId \" pulumi-lang-java=\" subnetId \"\u003e subnet_id \u003c/span\u003efor the VPN service.\n"},"peerId":{"type":"string","description":"The peer router identity for authentication. A valid value is an IPv4 address, IPv6 address, e-mail address, key ID, or FQDN.\nTypically, this value matches the\u003cspan pulumi-lang-nodejs=\" peerAddress \" pulumi-lang-dotnet=\" PeerAddress \" pulumi-lang-go=\" peerAddress \" pulumi-lang-python=\" peer_address \" pulumi-lang-yaml=\" peerAddress \" pulumi-lang-java=\" peerAddress \"\u003e peer_address \u003c/span\u003evalue.\nChanging this updates the existing policy.\n"},"psk":{"type":"string","description":"The pre-shared key. A valid value is any string.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an IPSec site connection. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nsite connection.\n","willReplaceOnChanges":true},"tenantId":{"type":"string","description":"The owner of the connection. Required if admin wants to\ncreate a connection for another project. Changing this creates a new connection.\n","willReplaceOnChanges":true},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n","willReplaceOnChanges":true},"vpnserviceId":{"type":"string","description":"The ID of the VPN service. Changing this creates a new connection.\n","willReplaceOnChanges":true}},"requiredInputs":["ikepolicyId","ipsecpolicyId","peerAddress","peerId","psk","vpnserviceId"],"stateInputs":{"description":"Input properties used for looking up and filtering SiteConnection resources.\n","properties":{"adminStateUp":{"type":"boolean","description":"The administrative state of the resource. Can either be up(true) or down(false).\nChanging this updates the administrative state of the existing connection.\n"},"description":{"type":"string","description":"The human-readable description for the connection.\nChanging this updates the description of the existing connection.\n"},"dpds":{"type":"array","items":{"$ref":"#/types/openstack:vpnaas/SiteConnectionDpd:SiteConnectionDpd"},"description":"A dictionary with dead peer detection (DPD) protocol controls.\n"},"ikepolicyId":{"type":"string","description":"The ID of the IKE policy. Changing this creates a new connection.\n","willReplaceOnChanges":true},"initiator":{"type":"string","description":"A valid value is response-only or bi-directional. Default is bi-directional.\n"},"ipsecpolicyId":{"type":"string","description":"The ID of the IPsec policy. Changing this creates a new connection.\n","willReplaceOnChanges":true},"localEpGroupId":{"type":"string","description":"The ID for the endpoint group that contains private subnets for the local side of the connection.\nYou must specify this parameter with the\u003cspan pulumi-lang-nodejs=\" peerEpGroupId \" pulumi-lang-dotnet=\" PeerEpGroupId \" pulumi-lang-go=\" peerEpGroupId \" pulumi-lang-python=\" peer_ep_group_id \" pulumi-lang-yaml=\" peerEpGroupId \" pulumi-lang-java=\" peerEpGroupId \"\u003e peer_ep_group_id \u003c/span\u003eparameter unless\nin backward- compatible mode where\u003cspan pulumi-lang-nodejs=\" peerCidrs \" pulumi-lang-dotnet=\" PeerCidrs \" pulumi-lang-go=\" peerCidrs \" pulumi-lang-python=\" peer_cidrs \" pulumi-lang-yaml=\" peerCidrs \" pulumi-lang-java=\" peerCidrs \"\u003e peer_cidrs \u003c/span\u003eis provided with a\u003cspan pulumi-lang-nodejs=\" subnetId \" pulumi-lang-dotnet=\" SubnetId \" pulumi-lang-go=\" subnetId \" pulumi-lang-python=\" subnet_id \" pulumi-lang-yaml=\" subnetId \" pulumi-lang-java=\" subnetId \"\u003e subnet_id \u003c/span\u003efor the VPN service.\nChanging this updates the existing connection.\n"},"localId":{"type":"string","description":"An ID to be used instead of the external IP address for a virtual router used in traffic between instances on different networks in east-west traffic.\nMost often, local ID would be domain name, email address, etc.\nIf this is not configured then the external IP address will be used as the ID.\n"},"mtu":{"type":"integer","description":"The maximum transmission unit (MTU) value to address fragmentation.\nMinimum value is 68 for IPv4, and 1280 for IPv6.\n"},"name":{"type":"string","description":"The name of the connection. Changing this updates the name of\nthe existing connection.\n"},"peerAddress":{"type":"string","description":"The peer gateway public IPv4 or IPv6 address or FQDN.\n"},"peerCidrs":{"type":"array","items":{"type":"string"},"description":"Unique list of valid peer private CIDRs in the form \u003c\u003cspan pulumi-lang-nodejs=\" netAddress \" pulumi-lang-dotnet=\" NetAddress \" pulumi-lang-go=\" netAddress \" pulumi-lang-python=\" net_address \" pulumi-lang-yaml=\" netAddress \" pulumi-lang-java=\" netAddress \"\u003e net_address \u003c/span\u003e\u003e / \u003c prefix \u003e .\n"},"peerEpGroupId":{"type":"string","description":"The ID for the endpoint group that contains private CIDRs in the form \u003c\u003cspan pulumi-lang-nodejs=\" netAddress \" pulumi-lang-dotnet=\" NetAddress \" pulumi-lang-go=\" netAddress \" pulumi-lang-python=\" net_address \" pulumi-lang-yaml=\" netAddress \" pulumi-lang-java=\" netAddress \"\u003e net_address \u003c/span\u003e\u003e / \u003c prefix \u003e for the peer side of the connection.\nYou must specify this parameter with the\u003cspan pulumi-lang-nodejs=\" localEpGroupId \" pulumi-lang-dotnet=\" LocalEpGroupId \" pulumi-lang-go=\" localEpGroupId \" pulumi-lang-python=\" local_ep_group_id \" pulumi-lang-yaml=\" localEpGroupId \" pulumi-lang-java=\" localEpGroupId \"\u003e local_ep_group_id \u003c/span\u003eparameter unless in backward-compatible mode\nwhere\u003cspan pulumi-lang-nodejs=\" peerCidrs \" pulumi-lang-dotnet=\" PeerCidrs \" pulumi-lang-go=\" peerCidrs \" pulumi-lang-python=\" peer_cidrs \" pulumi-lang-yaml=\" peerCidrs \" pulumi-lang-java=\" peerCidrs \"\u003e peer_cidrs \u003c/span\u003eis provided with a\u003cspan pulumi-lang-nodejs=\" subnetId \" pulumi-lang-dotnet=\" SubnetId \" pulumi-lang-go=\" subnetId \" pulumi-lang-python=\" subnet_id \" pulumi-lang-yaml=\" subnetId \" pulumi-lang-java=\" subnetId \"\u003e subnet_id \u003c/span\u003efor the VPN service.\n"},"peerId":{"type":"string","description":"The peer router identity for authentication. A valid value is an IPv4 address, IPv6 address, e-mail address, key ID, or FQDN.\nTypically, this value matches the\u003cspan pulumi-lang-nodejs=\" peerAddress \" pulumi-lang-dotnet=\" PeerAddress \" pulumi-lang-go=\" peerAddress \" pulumi-lang-python=\" peer_address \" pulumi-lang-yaml=\" peerAddress \" pulumi-lang-java=\" peerAddress \"\u003e peer_address \u003c/span\u003evalue.\nChanging this updates the existing policy.\n"},"psk":{"type":"string","description":"The pre-shared key. A valid value is any string.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create an IPSec site connection. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates a new\nsite connection.\n","willReplaceOnChanges":true},"tenantId":{"type":"string","description":"The owner of the connection. Required if admin wants to\ncreate a connection for another project. Changing this creates a new connection.\n","willReplaceOnChanges":true},"valueSpecs":{"type":"object","additionalProperties":{"type":"string"},"description":"Map of additional options.\n","willReplaceOnChanges":true},"vpnserviceId":{"type":"string","description":"The ID of the VPN service. Changing this creates a new connection.\n","willReplaceOnChanges":true}},"type":"object"}}},"functions":{"openstack:blockstorage/getAvailabilityZonesV3:getAvailabilityZonesV3":{"description":"Use this data source to get a list of Block Storage availability zones from OpenStack\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst zones = openstack.blockstorage.getAvailabilityZonesV3({});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nzones = openstack.blockstorage.get_availability_zones_v3()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var zones = OpenStack.BlockStorage.GetAvailabilityZonesV3.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/blockstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := blockstorage.GetAvailabilityZonesV3(ctx, \u0026blockstorage.GetAvailabilityZonesV3Args{}, 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.openstack.blockstorage.BlockstorageFunctions;\nimport com.pulumi.openstack.blockstorage.inputs.GetAvailabilityZonesV3Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 zones = BlockstorageFunctions.getAvailabilityZonesV3(GetAvailabilityZonesV3Args.builder()\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  zones:\n    fn::invoke:\n      function: openstack:blockstorage:getAvailabilityZonesV3\n      arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getAvailabilityZonesV3.\n","properties":{"region":{"type":"string","description":"The region in which to obtain the Block Storage client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"},"state":{"type":"string","description":"The \u003cspan pulumi-lang-nodejs=\"`state`\" pulumi-lang-dotnet=\"`State`\" pulumi-lang-go=\"`state`\" pulumi-lang-python=\"`state`\" pulumi-lang-yaml=\"`state`\" pulumi-lang-java=\"`state`\"\u003e`state`\u003c/span\u003e of the availability zones to match. Can\neither be \u003cspan pulumi-lang-nodejs=\"`available`\" pulumi-lang-dotnet=\"`Available`\" pulumi-lang-go=\"`available`\" pulumi-lang-python=\"`available`\" pulumi-lang-yaml=\"`available`\" pulumi-lang-java=\"`available`\"\u003e`available`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`unavailable`\" pulumi-lang-dotnet=\"`Unavailable`\" pulumi-lang-go=\"`unavailable`\" pulumi-lang-python=\"`unavailable`\" pulumi-lang-yaml=\"`unavailable`\" pulumi-lang-java=\"`unavailable`\"\u003e`unavailable`\u003c/span\u003e. Default is \u003cspan pulumi-lang-nodejs=\"`available`\" pulumi-lang-dotnet=\"`Available`\" pulumi-lang-go=\"`available`\" pulumi-lang-python=\"`available`\" pulumi-lang-yaml=\"`available`\" pulumi-lang-java=\"`available`\"\u003e`available`\u003c/span\u003e.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getAvailabilityZonesV3.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"names":{"description":"The names of the availability zones, ordered alphanumerically, that\nmatch the queried \u003cspan pulumi-lang-nodejs=\"`state`\" pulumi-lang-dotnet=\"`State`\" pulumi-lang-go=\"`state`\" pulumi-lang-python=\"`state`\" pulumi-lang-yaml=\"`state`\" pulumi-lang-java=\"`state`\"\u003e`state`\u003c/span\u003e.\n","items":{"type":"string"},"type":"array"},"region":{"description":"See Argument Reference above.\n","type":"string"},"state":{"description":"See Argument Reference above.\n","type":"string"}},"required":["names","region","id"],"type":"object"}},"openstack:blockstorage/getQuotasetV3:getQuotasetV3":{"description":"Use this data source to get the blockstorage quotaset v3 of an OpenStack project.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst quota = openstack.blockstorage.getQuotasetV3({\n    projectId: \"2e367a3d29f94fd988e6ec54e305ec9d\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nquota = openstack.blockstorage.get_quotaset_v3(project_id=\"2e367a3d29f94fd988e6ec54e305ec9d\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var quota = OpenStack.BlockStorage.GetQuotasetV3.Invoke(new()\n    {\n        ProjectId = \"2e367a3d29f94fd988e6ec54e305ec9d\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/blockstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := blockstorage.GetQuotasetV3(ctx, \u0026blockstorage.GetQuotasetV3Args{\n\t\t\tProjectId: \"2e367a3d29f94fd988e6ec54e305ec9d\",\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.openstack.blockstorage.BlockstorageFunctions;\nimport com.pulumi.openstack.blockstorage.inputs.GetQuotasetV3Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 quota = BlockstorageFunctions.getQuotasetV3(GetQuotasetV3Args.builder()\n            .projectId(\"2e367a3d29f94fd988e6ec54e305ec9d\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  quota:\n    fn::invoke:\n      function: openstack:blockstorage:getQuotasetV3\n      arguments:\n        projectId: 2e367a3d29f94fd988e6ec54e305ec9d\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getQuotasetV3.\n","properties":{"projectId":{"type":"string","description":"The id of the project to retrieve the quotaset.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V3 Blockstorage client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n","willReplaceOnChanges":true}},"type":"object","required":["projectId"]},"outputs":{"description":"A collection of values returned by getQuotasetV3.\n","properties":{"backupGigabytes":{"description":"The size (GB) of backups that are allowed.\n","type":"integer"},"backups":{"description":"The number of backups that are allowed.\n","type":"integer"},"gigabytes":{"description":"The size (GB) of volumes and snapshots that are allowed.\n","type":"integer"},"groups":{"description":"The number of groups that are allowed.\n","type":"integer"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"perVolumeGigabytes":{"description":"The size (GB) of volumes that are allowed for each volume.\n","type":"integer"},"projectId":{"description":"See Argument Reference above.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"snapshots":{"description":"The number of snapshots that are allowed.\n","type":"integer"},"volumeTypeQuota":{"additionalProperties":{"type":"string"},"description":"Map with gigabytes_{volume_type}, snapshots_{volume_type}, volumes_{volume_type} for each volume type.\n","type":"object"},"volumes":{"description":"The number of volumes that are allowed.\n","type":"integer"}},"required":["backupGigabytes","backups","gigabytes","groups","perVolumeGigabytes","projectId","region","snapshots","volumeTypeQuota","volumes","id"],"type":"object"}},"openstack:blockstorage/getSnapshotV3:getSnapshotV3":{"description":"Use this data source to get information about an existing snapshot.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst snapshot1 = openstack.blockstorage.getSnapshotV3({\n    name: \"snapshot_1\",\n    mostRecent: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nsnapshot1 = openstack.blockstorage.get_snapshot_v3(name=\"snapshot_1\",\n    most_recent=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var snapshot1 = OpenStack.BlockStorage.GetSnapshotV3.Invoke(new()\n    {\n        Name = \"snapshot_1\",\n        MostRecent = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/blockstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := blockstorage.GetSnapshotV3(ctx, \u0026blockstorage.GetSnapshotV3Args{\n\t\t\tName:       pulumi.StringRef(\"snapshot_1\"),\n\t\t\tMostRecent: pulumi.BoolRef(true),\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.openstack.blockstorage.BlockstorageFunctions;\nimport com.pulumi.openstack.blockstorage.inputs.GetSnapshotV3Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 snapshot1 = BlockstorageFunctions.getSnapshotV3(GetSnapshotV3Args.builder()\n            .name(\"snapshot_1\")\n            .mostRecent(true)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  snapshot1:\n    fn::invoke:\n      function: openstack:blockstorage:getSnapshotV3\n      arguments:\n        name: snapshot_1\n        mostRecent: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getSnapshotV3.\n","properties":{"mostRecent":{"type":"boolean","description":"Pick the most recently created snapshot if there\nare multiple results.\n"},"name":{"type":"string","description":"The name of the snapshot.\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Block Storage\nclient. If omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"},"status":{"type":"string","description":"The status of the snapshot.\n"},"volumeId":{"type":"string","description":"The ID of the snapshot's volume.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getSnapshotV3.\n","properties":{"description":{"description":"The snapshot's description.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"metadata":{"additionalProperties":{"type":"string"},"description":"The snapshot's metadata.\n","type":"object"},"mostRecent":{"type":"boolean"},"name":{"description":"See Argument Reference above.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"size":{"description":"The size of the snapshot.\n","type":"integer"},"status":{"description":"See Argument Reference above.\n","type":"string"},"volumeId":{"description":"See Argument Reference above.\n","type":"string"}},"required":["description","metadata","name","region","size","status","volumeId","id"],"type":"object"}},"openstack:blockstorage/getVolumeV3:getVolumeV3":{"description":"Use this data source to get information about an existing volume.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst volume1 = openstack.blockstorage.getVolumeV3({\n    name: \"volume_1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nvolume1 = openstack.blockstorage.get_volume_v3(name=\"volume_1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var volume1 = OpenStack.BlockStorage.GetVolumeV3.Invoke(new()\n    {\n        Name = \"volume_1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/blockstorage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := blockstorage.GetVolumeV3(ctx, \u0026blockstorage.GetVolumeV3Args{\n\t\t\tName: pulumi.StringRef(\"volume_1\"),\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.openstack.blockstorage.BlockstorageFunctions;\nimport com.pulumi.openstack.blockstorage.inputs.GetVolumeV3Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 volume1 = BlockstorageFunctions.getVolumeV3(GetVolumeV3Args.builder()\n            .name(\"volume_1\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  volume1:\n    fn::invoke:\n      function: openstack:blockstorage:getVolumeV3\n      arguments:\n        name: volume_1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getVolumeV3.\n","properties":{"bootable":{"type":"string","description":"Indicates if the volume is bootable.\n"},"host":{"type":"string","description":"The OpenStack host on which the volume is located.\n"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"Metadata key/value pairs associated with the volume.\n"},"name":{"type":"string","description":"The name of the volume.\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Block Storage\nclient. If omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"},"status":{"type":"string","description":"The status of the volume.\n"},"volumeType":{"type":"string","description":"The type of the volume.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getVolumeV3.\n","properties":{"attachments":{"description":"If a volume is attached to an instance, this attribute will\ndisplay the Attachment ID, Instance ID, and the Device as the Instance\nsees it.\n","items":{"$ref":"#/types/openstack:blockstorage/getVolumeV3Attachment:getVolumeV3Attachment"},"type":"array"},"bootable":{"description":"Indicates if the volume is bootable.\n","type":"string"},"host":{"description":"The OpenStack host on which the volume is located.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"metadata":{"additionalProperties":{"type":"string"},"description":"See Argument Reference above.\n","type":"object"},"name":{"description":"See Argument Reference above.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"size":{"description":"The size of the volume in GBs.\n","type":"integer"},"sourceVolumeId":{"description":"The ID of the volume from which the current volume was created.\n","type":"string"},"status":{"description":"See Argument Reference above.\n","type":"string"},"volumeType":{"description":"The type of the volume.\n","type":"string"}},"required":["attachments","bootable","host","metadata","name","region","size","sourceVolumeId","status","volumeType","id"],"type":"object"}},"openstack:compute/getAggregateV2:getAggregateV2":{"description":"Use this data source to get information about host aggregates\nby name.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst test = openstack.compute.getAggregateV2({\n    name: \"test\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\ntest = openstack.compute.get_aggregate_v2(name=\"test\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = OpenStack.Compute.GetAggregateV2.Invoke(new()\n    {\n        Name = \"test\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupAggregateV2(ctx, \u0026compute.LookupAggregateV2Args{\n\t\t\tName: \"test\",\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.openstack.compute.ComputeFunctions;\nimport com.pulumi.openstack.compute.inputs.GetAggregateV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 test = ComputeFunctions.getAggregateV2(GetAggregateV2Args.builder()\n            .name(\"test\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  test:\n    fn::invoke:\n      function: openstack:compute:getAggregateV2\n      arguments:\n        name: test\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getAggregateV2.\n","properties":{"hosts":{"type":"array","items":{"type":"string"},"description":"List of Hypervisors contained in the Host Aggregate\n"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"Metadata of the Host Aggregate\n"},"name":{"type":"string","description":"The name of the host aggregate.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Compute client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getAggregateV2.\n","properties":{"hosts":{"description":"List of Hypervisors contained in the Host Aggregate\n","items":{"type":"string"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"metadata":{"additionalProperties":{"type":"string"},"description":"Metadata of the Host Aggregate\n","type":"object"},"name":{"description":"See Argument Reference above.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"zone":{"description":"Availability zone of the Host Aggregate\n","type":"string"}},"required":["hosts","metadata","name","region","zone","id"],"type":"object"}},"openstack:compute/getAvailabilityZones:getAvailabilityZones":{"description":"Use this data source to get a list of availability zones from OpenStack\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst zones = openstack.compute.getAvailabilityZones({});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nzones = openstack.compute.get_availability_zones()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var zones = OpenStack.Compute.GetAvailabilityZones.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.GetAvailabilityZones(ctx, \u0026compute.GetAvailabilityZonesArgs{}, 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.openstack.compute.ComputeFunctions;\nimport com.pulumi.openstack.compute.inputs.GetAvailabilityZonesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 zones = ComputeFunctions.getAvailabilityZones(GetAvailabilityZonesArgs.builder()\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  zones:\n    fn::invoke:\n      function: openstack:compute:getAvailabilityZones\n      arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getAvailabilityZones.\n","properties":{"region":{"type":"string","description":"The \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e to fetch availability zones from, defaults to the provider's \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e\n"},"state":{"type":"string","description":"The \u003cspan pulumi-lang-nodejs=\"`state`\" pulumi-lang-dotnet=\"`State`\" pulumi-lang-go=\"`state`\" pulumi-lang-python=\"`state`\" pulumi-lang-yaml=\"`state`\" pulumi-lang-java=\"`state`\"\u003e`state`\u003c/span\u003e of the availability zones to match, default (\"available\").\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getAvailabilityZones.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"names":{"description":"The names of the availability zones, ordered alphanumerically, that match the queried \u003cspan pulumi-lang-nodejs=\"`state`\" pulumi-lang-dotnet=\"`State`\" pulumi-lang-go=\"`state`\" pulumi-lang-python=\"`state`\" pulumi-lang-yaml=\"`state`\" pulumi-lang-java=\"`state`\"\u003e`state`\u003c/span\u003e\n","items":{"type":"string"},"type":"array"},"region":{"type":"string"},"state":{"type":"string"}},"required":["names","region","id"],"type":"object"}},"openstack:compute/getFlavor:getFlavor":{"description":"Use this data source to get the ID of an available OpenStack flavor.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst small = openstack.compute.getFlavor({\n    vcpus: 1,\n    ram: 512,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nsmall = openstack.compute.get_flavor(vcpus=1,\n    ram=512)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var small = OpenStack.Compute.GetFlavor.Invoke(new()\n    {\n        Vcpus = 1,\n        Ram = 512,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupFlavor(ctx, \u0026compute.LookupFlavorArgs{\n\t\t\tVcpus: pulumi.IntRef(1),\n\t\t\tRam:   pulumi.IntRef(512),\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.openstack.compute.ComputeFunctions;\nimport com.pulumi.openstack.compute.inputs.GetFlavorArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 small = ComputeFunctions.getFlavor(GetFlavorArgs.builder()\n            .vcpus(1)\n            .ram(512)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  small:\n    fn::invoke:\n      function: openstack:compute:getFlavor\n      arguments:\n        vcpus: 1\n        ram: 512\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getFlavor.\n","properties":{"description":{"type":"string","description":"The description of the flavor.\n","willReplaceOnChanges":true},"disk":{"type":"integer","description":"The exact amount of disk (in gigabytes).\n","willReplaceOnChanges":true},"flavorId":{"type":"string","description":"The ID of the flavor. Conflicts with the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`minRam`\" pulumi-lang-dotnet=\"`MinRam`\" pulumi-lang-go=\"`minRam`\" pulumi-lang-python=\"`min_ram`\" pulumi-lang-yaml=\"`minRam`\" pulumi-lang-java=\"`minRam`\"\u003e`min_ram`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`minDisk`\" pulumi-lang-dotnet=\"`MinDisk`\" pulumi-lang-go=\"`minDisk`\" pulumi-lang-python=\"`min_disk`\" pulumi-lang-yaml=\"`minDisk`\" pulumi-lang-java=\"`minDisk`\"\u003e`min_disk`\u003c/span\u003e\n","willReplaceOnChanges":true},"isPublic":{"type":"boolean","description":"The flavor visibility.\n","willReplaceOnChanges":true},"minDisk":{"type":"integer","description":"The minimum amount of disk (in gigabytes). Conflicts\nwith the \u003cspan pulumi-lang-nodejs=\"`flavorId`\" pulumi-lang-dotnet=\"`FlavorId`\" pulumi-lang-go=\"`flavorId`\" pulumi-lang-python=\"`flavor_id`\" pulumi-lang-yaml=\"`flavorId`\" pulumi-lang-java=\"`flavorId`\"\u003e`flavor_id`\u003c/span\u003e.\n","willReplaceOnChanges":true},"minRam":{"type":"integer","description":"The minimum amount of RAM (in megabytes). Conflicts\nwith the \u003cspan pulumi-lang-nodejs=\"`flavorId`\" pulumi-lang-dotnet=\"`FlavorId`\" pulumi-lang-go=\"`flavorId`\" pulumi-lang-python=\"`flavor_id`\" pulumi-lang-yaml=\"`flavorId`\" pulumi-lang-java=\"`flavorId`\"\u003e`flavor_id`\u003c/span\u003e.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"The name of the flavor. Conflicts with the \u003cspan pulumi-lang-nodejs=\"`flavorId`\" pulumi-lang-dotnet=\"`FlavorId`\" pulumi-lang-go=\"`flavorId`\" pulumi-lang-python=\"`flavor_id`\" pulumi-lang-yaml=\"`flavorId`\" pulumi-lang-java=\"`flavorId`\"\u003e`flavor_id`\u003c/span\u003e.\n","willReplaceOnChanges":true},"ram":{"type":"integer","description":"The exact amount of RAM (in megabytes).\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Compute client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"},"rxTxFactor":{"type":"number","description":"The \u003cspan pulumi-lang-nodejs=\"`rxTxFactor`\" pulumi-lang-dotnet=\"`RxTxFactor`\" pulumi-lang-go=\"`rxTxFactor`\" pulumi-lang-python=\"`rx_tx_factor`\" pulumi-lang-yaml=\"`rxTxFactor`\" pulumi-lang-java=\"`rxTxFactor`\"\u003e`rx_tx_factor`\u003c/span\u003e of the flavor.\n","willReplaceOnChanges":true},"swap":{"type":"integer","description":"The amount of swap (in gigabytes).\n","willReplaceOnChanges":true},"vcpus":{"type":"integer","description":"The amount of VCPUs.\n","willReplaceOnChanges":true}},"type":"object"},"outputs":{"description":"A collection of values returned by getFlavor.\n","properties":{"description":{"type":"string"},"disk":{"type":"integer"},"extraSpecs":{"additionalProperties":{"type":"string"},"description":"Key/Value pairs of metadata for the flavor.\n","type":"object"},"flavorId":{"type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"isPublic":{"type":"boolean"},"minDisk":{"type":"integer"},"minRam":{"type":"integer"},"name":{"type":"string"},"ram":{"type":"integer"},"region":{"type":"string"},"rxTxFactor":{"type":"number"},"swap":{"type":"integer"},"vcpus":{"type":"integer"}},"required":["extraSpecs","region","id"],"type":"object"}},"openstack:compute/getHypervisorV2:getHypervisorV2":{"description":"Use this data source to get information about hypervisors\nby hostname.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst host01 = openstack.compute.getHypervisorV2({\n    hostname: \"host01\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nhost01 = openstack.compute.get_hypervisor_v2(hostname=\"host01\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var host01 = OpenStack.Compute.GetHypervisorV2.Invoke(new()\n    {\n        Hostname = \"host01\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.GetHypervisorV2(ctx, \u0026compute.GetHypervisorV2Args{\n\t\t\tHostname: pulumi.StringRef(\"host01\"),\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.openstack.compute.ComputeFunctions;\nimport com.pulumi.openstack.compute.inputs.GetHypervisorV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 host01 = ComputeFunctions.getHypervisorV2(GetHypervisorV2Args.builder()\n            .hostname(\"host01\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  host01:\n    fn::invoke:\n      function: openstack:compute:getHypervisorV2\n      arguments:\n        hostname: host01\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getHypervisorV2.\n","properties":{"hostname":{"type":"string","description":"The hostname of the hypervisor.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Compute client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getHypervisorV2.\n","properties":{"disk":{"description":"The amount in GigaBytes of local storage the hypervisor can provide\n","type":"integer"},"hostIp":{"description":"The IP address of the Hypervisor\n","type":"string"},"hostname":{"description":"See Argument Reference above.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"memory":{"description":"The number in MegaBytes of memory the hypervisor can provide\n","type":"integer"},"region":{"description":"See Argument Reference above.\n","type":"string"},"state":{"description":"The state of the hypervisor (\u003cspan pulumi-lang-nodejs=\"`up`\" pulumi-lang-dotnet=\"`Up`\" pulumi-lang-go=\"`up`\" pulumi-lang-python=\"`up`\" pulumi-lang-yaml=\"`up`\" pulumi-lang-java=\"`up`\"\u003e`up`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`down`\" pulumi-lang-dotnet=\"`Down`\" pulumi-lang-go=\"`down`\" pulumi-lang-python=\"`down`\" pulumi-lang-yaml=\"`down`\" pulumi-lang-java=\"`down`\"\u003e`down`\u003c/span\u003e)\n","type":"string"},"status":{"description":"The status of the hypervisor (\u003cspan pulumi-lang-nodejs=\"`enabled`\" pulumi-lang-dotnet=\"`Enabled`\" pulumi-lang-go=\"`enabled`\" pulumi-lang-python=\"`enabled`\" pulumi-lang-yaml=\"`enabled`\" pulumi-lang-java=\"`enabled`\"\u003e`enabled`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`disabled`\" pulumi-lang-dotnet=\"`Disabled`\" pulumi-lang-go=\"`disabled`\" pulumi-lang-python=\"`disabled`\" pulumi-lang-yaml=\"`disabled`\" pulumi-lang-java=\"`disabled`\"\u003e`disabled`\u003c/span\u003e)\n","type":"string"},"type":{"description":"The type of the hypervisor (example: `QEMU`)\n","type":"string"},"vcpus":{"description":"The number of virtual CPUs the hypervisor can provide\n","type":"integer"}},"required":["disk","hostIp","hostname","memory","region","state","status","type","vcpus","id"],"type":"object"}},"openstack:compute/getInstanceV2:getInstanceV2":{"description":"Use this data source to get the details of a running server\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst instance = openstack.compute.getInstanceV2({\n    id: \"2ba26dc6-a12d-4889-8f25-794ea5bf4453\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\ninstance = openstack.compute.get_instance_v2(id=\"2ba26dc6-a12d-4889-8f25-794ea5bf4453\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var instance = OpenStack.Compute.GetInstanceV2.Invoke(new()\n    {\n        Id = \"2ba26dc6-a12d-4889-8f25-794ea5bf4453\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.GetInstanceV2(ctx, \u0026compute.GetInstanceV2Args{\n\t\t\tId: \"2ba26dc6-a12d-4889-8f25-794ea5bf4453\",\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.openstack.compute.ComputeFunctions;\nimport com.pulumi.openstack.compute.inputs.GetInstanceV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 instance = ComputeFunctions.getInstanceV2(GetInstanceV2Args.builder()\n            .id(\"2ba26dc6-a12d-4889-8f25-794ea5bf4453\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  instance:\n    fn::invoke:\n      function: openstack:compute:getInstanceV2\n      arguments:\n        id: 2ba26dc6-a12d-4889-8f25-794ea5bf4453\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getInstanceV2.\n","properties":{"id":{"type":"string","description":"The UUID of the instance\n"},"networks":{"type":"array","items":{"$ref":"#/types/openstack:compute/getInstanceV2Network:getInstanceV2Network"},"description":"An array of maps, detailed below.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Compute client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"},"userData":{"type":"string","description":"The user data added when the server was created.\n"}},"type":"object","required":["id"]},"outputs":{"description":"A collection of values returned by getInstanceV2.\n","properties":{"accessIpV4":{"description":"The first IPv4 address assigned to this server.\n","type":"string"},"accessIpV6":{"description":"The first IPv6 address assigned to this server.\n","type":"string"},"availabilityZone":{"description":"The availability zone of this server.\n","type":"string"},"created":{"description":"The creation time of the instance.\n","type":"string"},"flavorId":{"description":"The flavor ID used to create the server.\n","type":"string"},"flavorName":{"description":"The flavor name used to create the server.\n","type":"string"},"id":{"type":"string"},"imageId":{"description":"The image ID used to create the server.\n","type":"string"},"imageName":{"description":"The image name used to create the server.\n","type":"string"},"keyPair":{"description":"The name of the key pair assigned to this server.\n","type":"string"},"metadata":{"additionalProperties":{"type":"string"},"description":"A set of key/value pairs made available to the server.\n","type":"object"},"name":{"description":"The name of the network\n","type":"string"},"networks":{"description":"An array of maps, detailed below.\n","items":{"$ref":"#/types/openstack:compute/getInstanceV2Network:getInstanceV2Network"},"type":"array"},"powerState":{"type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"securityGroups":{"description":"An array of security group names associated with this server.\n","items":{"type":"string"},"type":"array"},"tags":{"description":"A set of string tags assigned to this server.\n","items":{"type":"string"},"type":"array"},"updated":{"description":"The time when the instance was last updated.\n","type":"string"},"userData":{"description":"The user data added when the server was created.\n","type":"string"}},"required":["accessIpV4","accessIpV6","availabilityZone","created","flavorId","flavorName","id","imageId","imageName","keyPair","metadata","name","networks","powerState","region","securityGroups","tags","updated","userData"],"type":"object"}},"openstack:compute/getKeypair:getKeypair":{"description":"Use this data source to get the ID and public key of an OpenStack keypair.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst kp = openstack.compute.getKeypair({\n    name: \"sand\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nkp = openstack.compute.get_keypair(name=\"sand\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var kp = OpenStack.Compute.GetKeypair.Invoke(new()\n    {\n        Name = \"sand\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupKeypair(ctx, \u0026compute.LookupKeypairArgs{\n\t\t\tName: \"sand\",\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.openstack.compute.ComputeFunctions;\nimport com.pulumi.openstack.compute.inputs.GetKeypairArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 kp = ComputeFunctions.getKeypair(GetKeypairArgs.builder()\n            .name(\"sand\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  kp:\n    fn::invoke:\n      function: openstack:compute:getKeypair\n      arguments:\n        name: sand\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getKeypair.\n","properties":{"name":{"type":"string","description":"The unique name of the keypair.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Compute client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"},"userId":{"type":"string","description":"The user id of the owner of the key pair.\nThis parameter can be specified only if the provider is configured to use\nthe credentials of an OpenStack administrator.\n"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getKeypair.\n","properties":{"fingerprint":{"description":"The fingerprint of the OpenSSH key.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"name":{"description":"See Argument Reference above.\n","type":"string"},"publicKey":{"description":"The OpenSSH-formatted public key of the keypair.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"userId":{"description":"See Argument Reference above.\n","type":"string"}},"required":["fingerprint","name","publicKey","region","userId","id"],"type":"object"}},"openstack:compute/getLimitsV2:getLimitsV2":{"description":"Use this data source to get the compute limits of an OpenStack project.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst limits = openstack.compute.getLimitsV2({\n    projectId: \"2e367a3d29f94fd988e6ec54e305ec9d\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nlimits = openstack.compute.get_limits_v2(project_id=\"2e367a3d29f94fd988e6ec54e305ec9d\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var limits = OpenStack.Compute.GetLimitsV2.Invoke(new()\n    {\n        ProjectId = \"2e367a3d29f94fd988e6ec54e305ec9d\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.GetLimitsV2(ctx, \u0026compute.GetLimitsV2Args{\n\t\t\tProjectId: \"2e367a3d29f94fd988e6ec54e305ec9d\",\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.openstack.compute.ComputeFunctions;\nimport com.pulumi.openstack.compute.inputs.GetLimitsV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 limits = ComputeFunctions.getLimitsV2(GetLimitsV2Args.builder()\n            .projectId(\"2e367a3d29f94fd988e6ec54e305ec9d\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  limits:\n    fn::invoke:\n      function: openstack:compute:getLimitsV2\n      arguments:\n        projectId: 2e367a3d29f94fd988e6ec54e305ec9d\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getLimitsV2.\n","properties":{"projectId":{"type":"string","description":"The id of the project to retrieve the limits.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Compute client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n","willReplaceOnChanges":true}},"type":"object","required":["projectId"]},"outputs":{"description":"A collection of values returned by getLimitsV2.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"maxImageMeta":{"description":"The number of allowed metadata items for each image. Starting from version 2.39 this field is dropped from ‘os-limits’ response, because ‘image-metadata’ proxy API was deprecated. Available until version 2.38.\n","type":"integer"},"maxPersonality":{"description":"The number of allowed injected files for the tenant. Available until version 2.56.\n","type":"integer"},"maxPersonalitySize":{"description":"The number of allowed bytes of content for each injected file. Available until version 2.56.\n","type":"integer"},"maxSecurityGroupRules":{"description":"The number of allowed rules for each security group. Available until version 2.35.\n","type":"integer"},"maxSecurityGroups":{"description":"The number of allowed security groups for the tenant. Available until version 2.35.\n","type":"integer"},"maxServerGroupMembers":{"description":"The number of allowed members for each server group.\n","type":"integer"},"maxServerGroups":{"description":"The number of allowed server groups for the tenant.\n","type":"integer"},"maxServerMeta":{"description":"The number of allowed server groups for the tenant.\n","type":"integer"},"maxTotalCores":{"description":"The number of allowed server cores for the tenant.\n","type":"integer"},"maxTotalFloatingIps":{"description":"The number of allowed floating IP addresses for each tenant. Available until version 2.35.\n","type":"integer"},"maxTotalInstances":{"description":"The number of allowed servers for the tenant.\n","type":"integer"},"maxTotalKeypairs":{"description":"The number of allowed key pairs for the user.\n","type":"integer"},"maxTotalRamSize":{"description":"The number of allowed floating IP addresses for the tenant. Available until version 2.35.\n","type":"integer"},"projectId":{"description":"See Argument Reference above.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"totalCoresUsed":{"description":"The number of used server cores in the tenant.\n","type":"integer"},"totalFloatingIpsUsed":{"description":"The number of used floating IP addresses in the tenant.\n","type":"integer"},"totalInstancesUsed":{"description":"The number of used server cores in the tenant.\n","type":"integer"},"totalRamUsed":{"description":"The amount of used server RAM in the tenant.\n","type":"integer"},"totalSecurityGroupsUsed":{"description":"The number of used security groups in the tenant. Available until version 2.35.\n","type":"integer"},"totalServerGroupsUsed":{"description":"The number of used server groups in each tenant.\n","type":"integer"}},"required":["maxImageMeta","maxPersonality","maxPersonalitySize","maxSecurityGroupRules","maxSecurityGroups","maxServerGroupMembers","maxServerGroups","maxServerMeta","maxTotalCores","maxTotalFloatingIps","maxTotalInstances","maxTotalKeypairs","maxTotalRamSize","projectId","region","totalCoresUsed","totalFloatingIpsUsed","totalInstancesUsed","totalRamUsed","totalSecurityGroupsUsed","totalServerGroupsUsed","id"],"type":"object"}},"openstack:compute/getQuotaSetV2:getQuotaSetV2":{"description":"Use this data source to get the compute quotaset of an OpenStack project.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst quota = openstack.compute.getQuotaSetV2({\n    projectId: \"2e367a3d29f94fd988e6ec54e305ec9d\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nquota = openstack.compute.get_quota_set_v2(project_id=\"2e367a3d29f94fd988e6ec54e305ec9d\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var quota = OpenStack.Compute.GetQuotaSetV2.Invoke(new()\n    {\n        ProjectId = \"2e367a3d29f94fd988e6ec54e305ec9d\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.LookupQuotaSetV2(ctx, \u0026compute.LookupQuotaSetV2Args{\n\t\t\tProjectId: \"2e367a3d29f94fd988e6ec54e305ec9d\",\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.openstack.compute.ComputeFunctions;\nimport com.pulumi.openstack.compute.inputs.GetQuotaSetV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 quota = ComputeFunctions.getQuotaSetV2(GetQuotaSetV2Args.builder()\n            .projectId(\"2e367a3d29f94fd988e6ec54e305ec9d\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  quota:\n    fn::invoke:\n      function: openstack:compute:getQuotaSetV2\n      arguments:\n        projectId: 2e367a3d29f94fd988e6ec54e305ec9d\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getQuotaSetV2.\n","properties":{"projectId":{"type":"string","description":"The id of the project to retrieve the quotaset.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Compute client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n","willReplaceOnChanges":true}},"type":"object","required":["projectId"]},"outputs":{"description":"A collection of values returned by getQuotaSetV2.\n","properties":{"cores":{"description":"The number of allowed server cores.\n","type":"integer"},"fixedIps":{"description":"The number of allowed fixed IP addresses. Available until version 2.35.\n","type":"integer"},"floatingIps":{"description":"The number of allowed floating IP addresses. Available until version 2.35.\n","type":"integer"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"injectedFileContentBytes":{"description":"The number of allowed bytes of content for each injected file. Available until version 2.56.\n","type":"integer"},"injectedFilePathBytes":{"description":"The number of allowed bytes for each injected file path. Available until version 2.56.\n","type":"integer"},"injectedFiles":{"description":"The number of allowed injected files. Available until version 2.56.\n","type":"integer"},"instances":{"description":"The number of allowed servers.\n","type":"integer"},"keyPairs":{"description":"The number of allowed key pairs for each user.\n","type":"integer"},"metadataItems":{"description":"The number of allowed metadata items for each server.\n","type":"integer"},"projectId":{"description":"See Argument Reference above.\n","type":"string"},"ram":{"description":"The amount of allowed server RAM, in MiB.\n","type":"integer"},"region":{"description":"See Argument Reference above.\n","type":"string"},"securityGroupRules":{"description":"The number of allowed rules for each security group. Available until version 2.35.\n","type":"integer"},"securityGroups":{"description":"The number of allowed security groups. Available until version 2.35.\n","type":"integer"},"serverGroupMembers":{"description":"The number of allowed members for each server group.\n","type":"integer"},"serverGroups":{"description":"The number of allowed server groups.\n","type":"integer"}},"required":["cores","fixedIps","floatingIps","injectedFileContentBytes","injectedFilePathBytes","injectedFiles","instances","keyPairs","metadataItems","projectId","ram","region","securityGroupRules","securityGroups","serverGroupMembers","serverGroups","id"],"type":"object"}},"openstack:compute/getServergroupV2:getServergroupV2":{"description":"Use this data source to get information about server groups\nby name.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst test = openstack.compute.getServergroupV2({\n    name: \"test\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\ntest = openstack.compute.get_servergroup_v2(name=\"test\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = OpenStack.Compute.GetServergroupV2.Invoke(new()\n    {\n        Name = \"test\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.GetServergroupV2(ctx, \u0026compute.GetServergroupV2Args{\n\t\t\tName: \"test\",\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.openstack.compute.ComputeFunctions;\nimport com.pulumi.openstack.compute.inputs.GetServergroupV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 test = ComputeFunctions.getServergroupV2(GetServergroupV2Args.builder()\n            .name(\"test\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  test:\n    fn::invoke:\n      function: openstack:compute:getServergroupV2\n      arguments:\n        name: test\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getServergroupV2.\n","properties":{"name":{"type":"string","description":"The name of the server group.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Compute client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getServergroupV2.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"members":{"description":"The instances that are part of this server group.\n","items":{"type":"string"},"type":"array"},"metadata":{"additionalProperties":{"type":"string"},"description":"Metadata of the server group.\n","type":"object"},"name":{"description":"See Argument Reference above.\n","type":"string"},"policies":{"description":"Policy name associated with the server group.\n","items":{"type":"string"},"type":"array"},"projectId":{"description":"Project ID of the server group.\n","type":"string"},"region":{"type":"string"},"rules":{"description":"Rules which are applied to specified policy.\n","items":{"$ref":"#/types/openstack:compute/getServergroupV2Rule:getServergroupV2Rule"},"type":"array"},"userId":{"description":"User ID of the server group.\n","type":"string"}},"required":["members","metadata","name","policies","projectId","region","rules","userId","id"],"type":"object"}},"openstack:containerinfra/getCluster:getCluster":{"description":"Use this data source to get the ID of an available OpenStack Magnum cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst cluster1 = openstack.containerinfra.getCluster({\n    name: \"cluster_1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\ncluster1 = openstack.containerinfra.get_cluster(name=\"cluster_1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var cluster1 = OpenStack.ContainerInfra.GetCluster.Invoke(new()\n    {\n        Name = \"cluster_1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/containerinfra\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := containerinfra.LookupCluster(ctx, \u0026containerinfra.LookupClusterArgs{\n\t\t\tName: \"cluster_1\",\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.openstack.containerinfra.ContainerinfraFunctions;\nimport com.pulumi.openstack.containerinfra.inputs.GetClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 cluster1 = ContainerinfraFunctions.getCluster(GetClusterArgs.builder()\n            .name(\"cluster_1\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  cluster1:\n    fn::invoke:\n      function: openstack:containerinfra:getCluster\n      arguments:\n        name: cluster_1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getCluster.\n","properties":{"name":{"type":"string","description":"The name of the cluster.\n"},"region":{"type":"string","description":"The region in which to obtain the V1 Container Infra\nclient.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getCluster.\n","properties":{"apiAddress":{"description":"COE API address.\n","type":"string"},"clusterTemplateId":{"description":"The UUID of the V1 Container Infra cluster template.\n","type":"string"},"coeVersion":{"description":"COE software version.\n","type":"string"},"containerVersion":{"type":"string"},"createTimeout":{"description":"The timeout (in minutes) for creating the cluster.\n","type":"integer"},"createdAt":{"description":"The time at which cluster was created.\n","type":"string"},"discoveryUrl":{"description":"The URL used for cluster node discovery.\n","type":"string"},"dockerVolumeSize":{"description":"The size (in GB) of the Docker volume.\n","type":"integer"},"fixedNetwork":{"description":"The fixed network that is attached to the cluster.\n","type":"string"},"fixedSubnet":{"description":"The fixed subnet that is attached to the cluster.\n","type":"string"},"flavor":{"description":"The flavor for the nodes of the cluster.\n","type":"string"},"floatingIpEnabled":{"type":"boolean"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"keypair":{"description":"The name of the Compute service SSH keypair.\n","type":"string"},"kubeconfig":{"additionalProperties":{"type":"string"},"description":"The Kubernetes cluster's credentials\n","secret":true,"type":"object"},"labels":{"additionalProperties":{"type":"string"},"description":"The list of key value pairs representing additional properties of\nthe cluster.\n","type":"object"},"masterAddresses":{"description":"IP addresses of the master node of the cluster.\n","items":{"type":"string"},"type":"array"},"masterCount":{"description":"The number of master nodes for the cluster.\n","type":"integer"},"masterFlavor":{"description":"The flavor for the master nodes.\n","type":"string"},"masterLbEnabled":{"description":"Whether a load balancer is created for the master\ncluster nodes.\n","type":"boolean"},"name":{"description":"See Argument Reference above.\n","type":"string"},"nodeAddresses":{"description":"IP addresses of the node of the cluster.\n","items":{"type":"string"},"type":"array"},"nodeCount":{"description":"The number of nodes for the cluster.\n","type":"integer"},"projectId":{"description":"The project of the cluster.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"stackId":{"description":"UUID of the Orchestration service stack.\n","type":"string"},"updatedAt":{"description":"The time at which cluster was updated.\n","type":"string"},"userId":{"description":"The user of the cluster.\n","type":"string"}},"required":["apiAddress","clusterTemplateId","coeVersion","containerVersion","createTimeout","createdAt","discoveryUrl","dockerVolumeSize","fixedNetwork","fixedSubnet","flavor","floatingIpEnabled","keypair","kubeconfig","labels","masterAddresses","masterCount","masterFlavor","masterLbEnabled","name","nodeAddresses","nodeCount","projectId","region","stackId","updatedAt","userId","id"],"type":"object"}},"openstack:containerinfra/getClusterTemplate:getClusterTemplate":{"description":"Use this data source to get the ID of an available OpenStack Magnum cluster\ntemplate.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst clustertemplate1 = openstack.containerinfra.getClusterTemplate({\n    name: \"clustertemplate_1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nclustertemplate1 = openstack.containerinfra.get_cluster_template(name=\"clustertemplate_1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var clustertemplate1 = OpenStack.ContainerInfra.GetClusterTemplate.Invoke(new()\n    {\n        Name = \"clustertemplate_1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/containerinfra\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := containerinfra.LookupClusterTemplate(ctx, \u0026containerinfra.LookupClusterTemplateArgs{\n\t\t\tName: \"clustertemplate_1\",\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.openstack.containerinfra.ContainerinfraFunctions;\nimport com.pulumi.openstack.containerinfra.inputs.GetClusterTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 clustertemplate1 = ContainerinfraFunctions.getClusterTemplate(GetClusterTemplateArgs.builder()\n            .name(\"clustertemplate_1\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  clustertemplate1:\n    fn::invoke:\n      function: openstack:containerinfra:getClusterTemplate\n      arguments:\n        name: clustertemplate_1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getClusterTemplate.\n","properties":{"name":{"type":"string","description":"The name of the cluster template.\n"},"region":{"type":"string","description":"The region in which to obtain the V1 Container Infra\nclient.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getClusterTemplate.\n","properties":{"apiserverPort":{"description":"The API server port for the Container Orchestration\nEngine for this cluster template.\n","type":"integer"},"clusterDistro":{"description":"The distro for the cluster (fedora-atomic, coreos, etc.).\n","type":"string"},"coe":{"description":"The Container Orchestration Engine for this cluster template.\n","type":"string"},"createdAt":{"description":"The time at which cluster template was created.\n","type":"string"},"dnsNameserver":{"description":"Address of the DNS nameserver that is used in nodes of the\ncluster.\n","type":"string"},"dockerStorageDriver":{"description":"Docker storage driver. Changing this updates the\nDocker storage driver of the existing cluster template.\n","type":"string"},"dockerVolumeSize":{"description":"The size (in GB) of the Docker volume.\n","type":"integer"},"externalNetworkId":{"description":"The ID of the external network that will be used for\nthe cluster.\n","type":"string"},"fixedNetwork":{"description":"The fixed network that will be attached to the cluster.\n","type":"string"},"fixedSubnet":{"description":"=The fixed subnet that will be attached to the cluster.\n","type":"string"},"flavor":{"description":"The flavor for the nodes of the cluster.\n","type":"string"},"floatingIpEnabled":{"description":"Indicates whether created cluster should create IP\nfloating IP for every node or not.\n","type":"boolean"},"hidden":{"description":"Indicates whether the ClusterTemplate is hidden or not.\n","type":"boolean"},"httpProxy":{"description":"The address of a proxy for receiving all HTTP requests and\nrelay them.\n","type":"string"},"httpsProxy":{"description":"The address of a proxy for receiving all HTTPS requests and\nrelay them.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"image":{"description":"The reference to an image that is used for nodes of the cluster.\n","type":"string"},"insecureRegistry":{"description":"The insecure registry URL for the cluster template.\n","type":"string"},"keypairId":{"description":"The name of the Compute service SSH keypair.\n","type":"string"},"labels":{"additionalProperties":{"type":"string"},"description":"The list of key value pairs representing additional properties\nof the cluster template.\n","type":"object"},"masterFlavor":{"description":"The flavor for the master nodes.\n","type":"string"},"masterLbEnabled":{"description":"Indicates whether created cluster should has a\nloadbalancer for master nodes or not.\n","type":"boolean"},"name":{"description":"See Argument Reference above.\n","type":"string"},"networkDriver":{"description":"The name of the driver for the container network.\n","type":"string"},"noProxy":{"description":"A comma-separated list of IP addresses that shouldn't be used in\nthe cluster.\n","type":"string"},"projectId":{"description":"The project of the cluster template.\n","type":"string"},"public":{"description":"Indicates whether cluster template should be public.\n","type":"boolean"},"region":{"description":"See Argument Reference above.\n","type":"string"},"registryEnabled":{"description":"Indicates whether Docker registry is enabled in the\ncluster.\n","type":"boolean"},"serverType":{"description":"The server type for the cluster template.\n","type":"string"},"tlsDisabled":{"description":"Indicates whether the TLS should be disabled in the cluster.\n","type":"boolean"},"updatedAt":{"description":"The time at which cluster template was updated.\n","type":"string"},"userId":{"description":"The user of the cluster template.\n","type":"string"},"volumeDriver":{"description":"The name of the driver that is used for the volumes of the\ncluster nodes.\n","type":"string"}},"required":["apiserverPort","clusterDistro","coe","createdAt","dnsNameserver","dockerStorageDriver","dockerVolumeSize","externalNetworkId","fixedNetwork","fixedSubnet","flavor","floatingIpEnabled","hidden","httpProxy","httpsProxy","image","insecureRegistry","keypairId","labels","masterFlavor","masterLbEnabled","name","networkDriver","noProxy","projectId","public","region","registryEnabled","serverType","tlsDisabled","updatedAt","userId","volumeDriver","id"],"type":"object"}},"openstack:containerinfra/getNodeGroup:getNodeGroup":{"description":"Use this data source to get information of an available OpenStack Magnum node group.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst nodegroup1 = openstack.containerinfra.getNodeGroup({\n    clusterId: \"cluster_1\",\n    name: \"nodegroup_1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nnodegroup1 = openstack.containerinfra.get_node_group(cluster_id=\"cluster_1\",\n    name=\"nodegroup_1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var nodegroup1 = OpenStack.ContainerInfra.GetNodeGroup.Invoke(new()\n    {\n        ClusterId = \"cluster_1\",\n        Name = \"nodegroup_1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/containerinfra\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := containerinfra.LookupNodeGroup(ctx, \u0026containerinfra.LookupNodeGroupArgs{\n\t\t\tClusterId: \"cluster_1\",\n\t\t\tName:      pulumi.StringRef(\"nodegroup_1\"),\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.openstack.containerinfra.ContainerinfraFunctions;\nimport com.pulumi.openstack.containerinfra.inputs.GetNodeGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 nodegroup1 = ContainerinfraFunctions.getNodeGroup(GetNodeGroupArgs.builder()\n            .clusterId(\"cluster_1\")\n            .name(\"nodegroup_1\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  nodegroup1:\n    fn::invoke:\n      function: openstack:containerinfra:getNodeGroup\n      arguments:\n        clusterId: cluster_1\n        name: nodegroup_1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getNodeGroup.\n","properties":{"clusterId":{"type":"string","description":"The name of the OpenStack Magnum cluster.\n"},"name":{"type":"string","description":"The name of the node group.\n"},"region":{"type":"string","description":"The region in which to obtain the V1 Container Infra\nclient.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"}},"type":"object","required":["clusterId"]},"outputs":{"description":"A collection of values returned by getNodeGroup.\n","properties":{"clusterId":{"type":"string"},"createdAt":{"description":"The time at which the node group was created.\n","type":"string"},"dockerVolumeSize":{"description":"The size (in GB) of the Docker volume.\n","type":"integer"},"flavor":{"description":"The flavor for the nodes of the node group.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"image":{"description":"The reference to an image that is used for nodes of the node group.\n","type":"string"},"labels":{"additionalProperties":{"type":"string"},"description":"The list of key value pairs representing additional properties of\nthe node group.\n","type":"object"},"maxNodeCount":{"description":"The maximum number of nodes for the node group.\n","type":"integer"},"minNodeCount":{"description":"The minimum number of nodes for the node group.\n","type":"integer"},"name":{"description":"See Argument Reference above.\n","type":"string"},"nodeCount":{"description":"The number of nodes for the node group.\n","type":"integer"},"projectId":{"description":"The project of the node group.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"role":{"description":"The role of the node group.\n","type":"string"},"updatedAt":{"description":"The time at which the node group was updated.\n","type":"string"}},"required":["clusterId","createdAt","dockerVolumeSize","flavor","image","labels","maxNodeCount","minNodeCount","name","nodeCount","projectId","region","role","updatedAt","id"],"type":"object"}},"openstack:dns/getDnsZone:getDnsZone":{"description":"Use this data source to get the ID of an available OpenStack DNS zone.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst zone1 = openstack.dns.getDnsZone({\n    name: \"example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nzone1 = openstack.dns.get_dns_zone(name=\"example.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var zone1 = OpenStack.Dns.GetDnsZone.Invoke(new()\n    {\n        Name = \"example.com\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dns.GetDnsZone(ctx, \u0026dns.GetDnsZoneArgs{\n\t\t\tName: pulumi.StringRef(\"example.com\"),\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.openstack.dns.DnsFunctions;\nimport com.pulumi.openstack.dns.inputs.GetDnsZoneArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 zone1 = DnsFunctions.getDnsZone(GetDnsZoneArgs.builder()\n            .name(\"example.com\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  zone1:\n    fn::invoke:\n      function: openstack:dns:getDnsZone\n      arguments:\n        name: example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getDnsZone.\n","properties":{"allProjects":{"type":"string","description":"Try to obtain zone ID by listing all projects\n(requires admin role by default, depends on your policy configuration)\n"},"attributes":{"type":"object","additionalProperties":{"type":"string"},"description":"Attributes of the DNS Service scheduler.\n"},"createdAt":{"type":"string","description":"The time the zone was created.\n"},"description":{"type":"string","description":"A description of the zone.\n"},"email":{"type":"string","description":"The email contact for the zone record.\n"},"masters":{"type":"array","items":{"type":"string"},"description":"An array of master DNS servers. When \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e is  `SECONDARY`.\n"},"name":{"type":"string","description":"The name of the zone.\n"},"poolId":{"type":"string","description":"The ID of the pool hosting the zone.\n"},"projectId":{"type":"string","description":"The ID of the project the DNS zone is obtained from,\nsets `X-Auth-Sudo-Tenant-ID` header (requires an assigned user role in target project)\n"},"region":{"type":"string","description":"The region in which to obtain the V2 DNS client.\nA DNS client is needed to retrieve zone ids. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"},"serial":{"type":"integer","description":"The serial number of the zone.\n"},"status":{"type":"string","description":"The zone's status.\n"},"transferredAt":{"type":"string","description":"The time the zone was transferred.\n"},"ttl":{"type":"integer","description":"The time to live (TTL) of the zone.\n"},"type":{"type":"string","description":"The type of the zone. Can either be `PRIMARY` or `SECONDARY`.\n"},"updatedAt":{"type":"string","description":"The time the zone was last updated.\n"},"version":{"type":"integer","description":"The version of the zone.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getDnsZone.\n","properties":{"allProjects":{"type":"string"},"attributes":{"additionalProperties":{"type":"string"},"description":"Attributes of the DNS Service scheduler.\n","type":"object"},"createdAt":{"description":"The time the zone was created.\n","type":"string"},"description":{"description":"See Argument Reference above.\n","type":"string"},"email":{"description":"See Argument Reference above.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"masters":{"description":"An array of master DNS servers. When \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e is  `SECONDARY`.\n","items":{"type":"string"},"type":"array"},"name":{"description":"See Argument Reference above.\n","type":"string"},"poolId":{"description":"The ID of the pool hosting the zone.\n","type":"string"},"projectId":{"description":"The project ID that owns the zone.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"serial":{"description":"The serial number of the zone.\n","type":"integer"},"status":{"description":"See Argument Reference above.\n","type":"string"},"transferredAt":{"description":"The time the zone was transferred.\n","type":"string"},"ttl":{"description":"See Argument Reference above.\n","type":"integer"},"type":{"description":"See Argument Reference above.\n","type":"string"},"updatedAt":{"description":"The time the zone was last updated.\n","type":"string"},"version":{"description":"The version of the zone.\n","type":"integer"}},"required":["attributes","createdAt","masters","poolId","projectId","region","serial","transferredAt","updatedAt","version","id"],"type":"object"}},"openstack:dns/getZoneShareV2:getZoneShareV2":{"description":"Use this data source to get information about a DNS zone share.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst example = openstack.dns.getZoneShareV2({\n    zoneId: \"00000000-0000-0000-0000-000000000000\",\n    targetProjectId: \"11111111-1111-1111-1111-111111111111\",\n    projectId: \"22222222-2222-2222-2222-222222222222\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nexample = openstack.dns.get_zone_share_v2(zone_id=\"00000000-0000-0000-0000-000000000000\",\n    target_project_id=\"11111111-1111-1111-1111-111111111111\",\n    project_id=\"22222222-2222-2222-2222-222222222222\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = OpenStack.Dns.GetZoneShareV2.Invoke(new()\n    {\n        ZoneId = \"00000000-0000-0000-0000-000000000000\",\n        TargetProjectId = \"11111111-1111-1111-1111-111111111111\",\n        ProjectId = \"22222222-2222-2222-2222-222222222222\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dns.LookupZoneShareV2(ctx, \u0026dns.LookupZoneShareV2Args{\n\t\t\tZoneId:          \"00000000-0000-0000-0000-000000000000\",\n\t\t\tTargetProjectId: pulumi.StringRef(\"11111111-1111-1111-1111-111111111111\"),\n\t\t\tProjectId:       pulumi.StringRef(\"22222222-2222-2222-2222-222222222222\"),\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.openstack.dns.DnsFunctions;\nimport com.pulumi.openstack.dns.inputs.GetZoneShareV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DnsFunctions.getZoneShareV2(GetZoneShareV2Args.builder()\n            .zoneId(\"00000000-0000-0000-0000-000000000000\")\n            .targetProjectId(\"11111111-1111-1111-1111-111111111111\")\n            .projectId(\"22222222-2222-2222-2222-222222222222\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: openstack:dns:getZoneShareV2\n      arguments:\n        zoneId: 00000000-0000-0000-0000-000000000000\n        targetProjectId: 11111111-1111-1111-1111-111111111111\n        projectId: 22222222-2222-2222-2222-222222222222\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getZoneShareV2.\n","properties":{"allProjects":{"type":"string","description":"If set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the data source will search\nacross all projects. If set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, it will only search within the\ncurrent project. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"projectId":{"type":"string","description":"The owner project ID. If omitted, it is derived\nfrom the zone share details.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 DNS client. If\nomitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used. Changing this creates\na new DNS zone share data source.\n"},"shareId":{"type":"string","description":"The ID of the DNS zone share to retrieve. If\nprovided, the data source returns only the share with this ID.\n"},"targetProjectId":{"type":"string","description":"If provided, the data source returns the\nshare with this target project ID.\n"},"zoneId":{"type":"string","description":"The ID of the DNS zone for which to get share.\n"}},"type":"object","required":["zoneId"]},"outputs":{"description":"A collection of values returned by getZoneShareV2.\n","properties":{"allProjects":{"description":"See Argument Reference above.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"projectId":{"description":"See Argument Reference above.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"shareId":{"description":"The ID of the zone share.\n","type":"string"},"targetProjectId":{"description":"See Argument Reference above.\n","type":"string"},"zoneId":{"description":"See Argument Reference above.\n","type":"string"}},"required":["region","shareId","zoneId","id"],"type":"object"}},"openstack:firewall/getGroupV2:getGroupV2":{"description":"Use this data source to get information of an available OpenStack firewall group v2.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst group = openstack.firewall.getGroupV2({\n    name: \"tf_test_group\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\ngroup = openstack.firewall.get_group_v2(name=\"tf_test_group\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var @group = OpenStack.Firewall.GetGroupV2.Invoke(new()\n    {\n        Name = \"tf_test_group\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/firewall\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firewall.LookupGroupV2(ctx, \u0026firewall.LookupGroupV2Args{\n\t\t\tName: pulumi.StringRef(\"tf_test_group\"),\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.openstack.firewall.FirewallFunctions;\nimport com.pulumi.openstack.firewall.inputs.GetGroupV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 group = FirewallFunctions.getGroupV2(GetGroupV2Args.builder()\n            .name(\"tf_test_group\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  group:\n    fn::invoke:\n      function: openstack:firewall:getGroupV2\n      arguments:\n        name: tf_test_group\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getGroupV2.\n","properties":{"adminStateUp":{"type":"boolean","description":"Administrative up/down status for the firewall group.\n"},"description":{"type":"string","description":"Human-readable description of the firewall group.\n"},"egressFirewallPolicyId":{"type":"string","description":"The egress policy ID of the firewall group.\n"},"groupId":{"type":"string","description":"The ID of the firewall group.\n"},"ingressFirewallPolicyId":{"type":"string","description":"The ingress policy ID of the firewall group.\n"},"name":{"type":"string","description":"The name of the firewall group.\n"},"projectId":{"type":"string","description":"This argument conflicts and is interchangeable\nwith \u003cspan pulumi-lang-nodejs=\"`tenantId`\" pulumi-lang-dotnet=\"`TenantId`\" pulumi-lang-go=\"`tenantId`\" pulumi-lang-python=\"`tenant_id`\" pulumi-lang-yaml=\"`tenantId`\" pulumi-lang-java=\"`tenantId`\"\u003e`tenant_id`\u003c/span\u003e. The owner of the firewall group.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Neutron client.\nA Neutron client is needed to retrieve firewall group ids. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"},"shared":{"type":"boolean","description":"The sharing status of the firewall group.\n"},"status":{"type":"string","description":"Enabled status for the firewall group.\n"},"tenantId":{"type":"string","description":"This argument conflicts and is interchangeable\nwith \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`project_id`\u003c/span\u003e. The owner of the firewall group.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getGroupV2.\n","properties":{"adminStateUp":{"description":"See Argument Reference above.\n","type":"boolean"},"description":{"description":"See Argument Reference above.\n","type":"string"},"egressFirewallPolicyId":{"description":"See Argument Reference above.\n","type":"string"},"groupId":{"description":"See Argument Reference above.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"ingressFirewallPolicyId":{"description":"See Argument Reference above.\n","type":"string"},"name":{"description":"See Argument Reference above.\n","type":"string"},"ports":{"description":"Ports associated with the firewall group.\n","items":{"type":"string"},"type":"array"},"projectId":{"description":"See Argument Reference above.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"shared":{"description":"See Argument Reference above.\n","type":"boolean"},"status":{"description":"See Argument Reference above.\n","type":"string"},"tenantId":{"description":"See Argument Reference above.\n","type":"string"}},"required":["adminStateUp","ports","projectId","region","shared","status","tenantId","id"],"type":"object"}},"openstack:firewall/getPolicyV2:getPolicyV2":{"description":"Use this data source to get information of an available OpenStack firewall policy v2.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst policy = openstack.firewall.getPolicyV2({\n    name: \"tf_test_policy\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\npolicy = openstack.firewall.get_policy_v2(name=\"tf_test_policy\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var policy = OpenStack.Firewall.GetPolicyV2.Invoke(new()\n    {\n        Name = \"tf_test_policy\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/firewall\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firewall.LookupPolicyV2(ctx, \u0026firewall.LookupPolicyV2Args{\n\t\t\tName: pulumi.StringRef(\"tf_test_policy\"),\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.openstack.firewall.FirewallFunctions;\nimport com.pulumi.openstack.firewall.inputs.GetPolicyV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 policy = FirewallFunctions.getPolicyV2(GetPolicyV2Args.builder()\n            .name(\"tf_test_policy\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  policy:\n    fn::invoke:\n      function: openstack:firewall:getPolicyV2\n      arguments:\n        name: tf_test_policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getPolicyV2.\n","properties":{"audited":{"type":"boolean","description":"Whether this policy has been audited.\n"},"description":{"type":"string","description":"Human-readable description of the policy.\n"},"name":{"type":"string","description":"The name of the firewall policy.\n"},"policyId":{"type":"string","description":"The ID of the firewall policy.\n"},"projectId":{"type":"string","description":"This argument conflicts and is interchangeable\nwith \u003cspan pulumi-lang-nodejs=\"`tenantId`\" pulumi-lang-dotnet=\"`TenantId`\" pulumi-lang-go=\"`tenantId`\" pulumi-lang-python=\"`tenant_id`\" pulumi-lang-yaml=\"`tenantId`\" pulumi-lang-java=\"`tenantId`\"\u003e`tenant_id`\u003c/span\u003e. The owner of the firewall policy.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Neutron client.\nA Neutron client is needed to retrieve firewall policy ids. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n","willReplaceOnChanges":true},"shared":{"type":"boolean","description":"Whether this policy is shared across all projects.\n"},"tenantId":{"type":"string","description":"This argument conflicts and is interchangeable\nwith \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`project_id`\u003c/span\u003e. The owner of the firewall policy.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getPolicyV2.\n","properties":{"audited":{"description":"The audit status of the firewall policy.\n","type":"boolean"},"description":{"type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"name":{"description":"See Argument Reference above.\n","type":"string"},"policyId":{"description":"See Argument Reference above.\n","type":"string"},"projectId":{"description":"See Argument Reference above.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"rules":{"description":"The array of one or more firewall rules that comprise the policy.\n","items":{"type":"string"},"type":"array"},"shared":{"description":"The sharing status of the firewall policy.\n","type":"boolean"},"tenantId":{"description":"See Argument Reference above.\n","type":"string"}},"required":["audited","projectId","region","rules","shared","tenantId","id"],"type":"object"}},"openstack:firewall/getRuleV2:getRuleV2":{"description":"Use this data source to get information of an available OpenStack firewall rule v2.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst rule = openstack.firewall.getRuleV2({\n    name: \"tf_test_rule\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nrule = openstack.firewall.get_rule_v2(name=\"tf_test_rule\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var rule = OpenStack.Firewall.GetRuleV2.Invoke(new()\n    {\n        Name = \"tf_test_rule\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/firewall\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firewall.LookupRuleV2(ctx, \u0026firewall.LookupRuleV2Args{\n\t\t\tName: pulumi.StringRef(\"tf_test_rule\"),\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.openstack.firewall.FirewallFunctions;\nimport com.pulumi.openstack.firewall.inputs.GetRuleV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 rule = FirewallFunctions.getRuleV2(GetRuleV2Args.builder()\n            .name(\"tf_test_rule\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  rule:\n    fn::invoke:\n      function: openstack:firewall:getRuleV2\n      arguments:\n        name: tf_test_rule\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getRuleV2.\n","properties":{"action":{"type":"string","description":"Action to be taken when the firewall rule matches.\n"},"description":{"type":"string","description":"The description of the firewall rule.\n"},"destinationIpAddress":{"type":"string","description":"The destination IP address on which the\nfirewall rule operates.\n"},"destinationPort":{"type":"string","description":"The destination port on which the firewall\nrule operates.\n"},"enabled":{"type":"boolean","description":"Enabled status for the firewall rule.\n"},"firewallPolicyIds":{"type":"array","items":{"type":"string"},"description":"The ID of the firewall policy the rule belongs to.\n"},"ipVersion":{"type":"integer","description":"IP version, either 4 (default) or 6.\n"},"name":{"type":"string","description":"The name of the firewall rule.\n"},"projectId":{"type":"string","description":"This argument conflicts and is interchangeable\nwith \u003cspan pulumi-lang-nodejs=\"`tenantId`\" pulumi-lang-dotnet=\"`TenantId`\" pulumi-lang-go=\"`tenantId`\" pulumi-lang-python=\"`tenant_id`\" pulumi-lang-yaml=\"`tenantId`\" pulumi-lang-java=\"`tenantId`\"\u003e`tenant_id`\u003c/span\u003e. The owner of the firewall rule.\n"},"protocol":{"type":"string","description":"The protocol type on which the firewall rule operates.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Neutron client.\nA Neutron client is needed to retrieve firewall policy ids. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n","willReplaceOnChanges":true},"ruleId":{"type":"string","description":"The ID of the firewall rule.\n"},"shared":{"type":"boolean","description":"The sharing status of the firewall policy.\n"},"sourceIpAddress":{"type":"string","description":"The source IP address on which the firewall\nrule operates.\n"},"sourcePort":{"type":"string","description":"The source port on which the firewall\nrule operates.\n"},"tenantId":{"type":"string","description":"This argument conflicts and is interchangeable\nwith \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`project_id`\u003c/span\u003e. The owner of the firewall rule.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getRuleV2.\n","properties":{"action":{"description":"See Argument Reference above.\n","type":"string"},"description":{"description":"See Argument Reference above.\n","type":"string"},"destinationIpAddress":{"description":"See Argument Reference above.\n","type":"string"},"destinationPort":{"description":"See Argument Reference above.\n","type":"string"},"enabled":{"description":"See Argument Reference above.\n","type":"boolean"},"firewallPolicyIds":{"description":"The ID of the firewall policy the rule belongs to.\n","items":{"type":"string"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"ipVersion":{"description":"See Argument Reference above.\n","type":"integer"},"name":{"description":"See Argument Reference above.\n","type":"string"},"projectId":{"description":"See Argument Reference above.\n","type":"string"},"protocol":{"description":"See Argument Reference above.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"ruleId":{"description":"See Argument Reference above.\n","type":"string"},"shared":{"description":"See Argument Reference above.\n","type":"boolean"},"sourceIpAddress":{"description":"See Argument Reference above.\n","type":"string"},"sourcePort":{"description":"See Argument Reference above.\n","type":"string"},"tenantId":{"description":"See Argument Reference above.\n","type":"string"}},"required":["enabled","firewallPolicyIds","projectId","region","shared","tenantId","id"],"type":"object"}},"openstack:identity/getAuthScope:getAuthScope":{"inputs":{"description":"A collection of arguments for invoking getAuthScope.\n","properties":{"name":{"type":"string","description":"The name of the scope. This is an arbitrary name which is\nonly used as a unique identifier so an actual token isn't used as the ID.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V3 Identity client.\nA Identity client is needed to retrieve tokens IDs. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n","willReplaceOnChanges":true},"setTokenId":{"type":"boolean","description":"A boolean argument that determines whether to\nexport the current auth scope token ID. When set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the \u003cspan pulumi-lang-nodejs=\"`tokenId`\" pulumi-lang-dotnet=\"`TokenId`\" pulumi-lang-go=\"`tokenId`\" pulumi-lang-python=\"`token_id`\" pulumi-lang-yaml=\"`tokenId`\" pulumi-lang-java=\"`tokenId`\"\u003e`token_id`\u003c/span\u003e\nattribute will contain an unencrypted token that can be used for further API\ncalls. **Warning**: please note that the leaked token may allow unauthorized\naccess to other OpenStack services within the current auth scope, so use this\noption with caution.\n","willReplaceOnChanges":true}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getAuthScope.\n","properties":{"domainId":{"description":"The domain ID of the scope.\n","type":"string"},"domainName":{"description":"The domain name of the scope.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"name":{"description":"The name of the service.\n","type":"string"},"projectDomainId":{"description":"The domain ID of the project.\n","type":"string"},"projectDomainName":{"description":"The domain name of the project.\n","type":"string"},"projectId":{"description":"The project ID of the scope.\n","type":"string"},"projectName":{"description":"The project name of the scope.\n","type":"string"},"region":{"description":"The region of the endpoint.\n","type":"string"},"roles":{"description":"A list of roles in the current scope. See reference below.\n","items":{"$ref":"#/types/openstack:identity/getAuthScopeRole:getAuthScopeRole"},"type":"array"},"serviceCatalogs":{"description":"A list of service catalog entries returned with the token.\n","items":{"$ref":"#/types/openstack:identity/getAuthScopeServiceCatalog:getAuthScopeServiceCatalog"},"type":"array"},"setTokenId":{"type":"boolean"},"tokenId":{"description":"The token ID of the scope.\n","secret":true,"type":"string"},"userDomainId":{"description":"The domain ID of the user.\n","type":"string"},"userDomainName":{"description":"The domain name of the user.\n","type":"string"},"userId":{"description":"The user ID the of the scope.\n","type":"string"},"userName":{"description":"The username of the scope.\n","type":"string"}},"required":["domainId","domainName","name","projectDomainId","projectDomainName","projectId","projectName","region","roles","serviceCatalogs","tokenId","userDomainId","userDomainName","userId","userName","id"],"type":"object"}},"openstack:identity/getEndpoint:getEndpoint":{"description":"Use this data source to get the ID of an OpenStack endpoint.\n\n\u003e **Note:** This usually requires admin privileges.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst endpoint1 = openstack.identity.getEndpoint({\n    serviceName: \"demo\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nendpoint1 = openstack.identity.get_endpoint(service_name=\"demo\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var endpoint1 = OpenStack.Identity.GetEndpoint.Invoke(new()\n    {\n        ServiceName = \"demo\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/identity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := identity.GetEndpoint(ctx, \u0026identity.GetEndpointArgs{\n\t\t\tServiceName: pulumi.StringRef(\"demo\"),\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.openstack.identity.IdentityFunctions;\nimport com.pulumi.openstack.identity.inputs.GetEndpointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 endpoint1 = IdentityFunctions.getEndpoint(GetEndpointArgs.builder()\n            .serviceName(\"demo\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  endpoint1:\n    fn::invoke:\n      function: openstack:identity:getEndpoint\n      arguments:\n        serviceName: demo\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getEndpoint.\n","properties":{"endpointRegion":{"type":"string","description":"The region the endpoint is assigned to. The\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`endpointRegion`\" pulumi-lang-dotnet=\"`EndpointRegion`\" pulumi-lang-go=\"`endpointRegion`\" pulumi-lang-python=\"`endpoint_region`\" pulumi-lang-yaml=\"`endpointRegion`\" pulumi-lang-java=\"`endpointRegion`\"\u003e`endpoint_region`\u003c/span\u003e can be different.\n"},"interface":{"type":"string","description":"The endpoint interface. Valid values are \u003cspan pulumi-lang-nodejs=\"`public`\" pulumi-lang-dotnet=\"`Public`\" pulumi-lang-go=\"`public`\" pulumi-lang-python=\"`public`\" pulumi-lang-yaml=\"`public`\" pulumi-lang-java=\"`public`\"\u003e`public`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`internal`\" pulumi-lang-dotnet=\"`Internal`\" pulumi-lang-go=\"`internal`\" pulumi-lang-python=\"`internal`\" pulumi-lang-yaml=\"`internal`\" pulumi-lang-java=\"`internal`\"\u003e`internal`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`admin`\" pulumi-lang-dotnet=\"`Admin`\" pulumi-lang-go=\"`admin`\" pulumi-lang-python=\"`admin`\" pulumi-lang-yaml=\"`admin`\" pulumi-lang-java=\"`admin`\"\u003e`admin`\u003c/span\u003e. Default value is \u003cspan pulumi-lang-nodejs=\"`public`\" pulumi-lang-dotnet=\"`Public`\" pulumi-lang-go=\"`public`\" pulumi-lang-python=\"`public`\" pulumi-lang-yaml=\"`public`\" pulumi-lang-java=\"`public`\"\u003e`public`\u003c/span\u003e\n"},"name":{"type":"string","description":"The name of the endpoint.\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n","willReplaceOnChanges":true},"serviceId":{"type":"string","description":"The service id this endpoint belongs to.\n"},"serviceName":{"type":"string","description":"The service name of the endpoint.\n"},"serviceType":{"type":"string","description":"The service type of the endpoint.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getEndpoint.\n","properties":{"endpointRegion":{"description":"See Argument Reference above.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"interface":{"description":"See Argument Reference above.\n","type":"string"},"name":{"description":"See Argument Reference above.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"serviceId":{"description":"See Argument Reference above.\n","type":"string"},"serviceName":{"description":"See Argument Reference above.\n","type":"string"},"serviceType":{"description":"See Argument Reference above.\n","type":"string"},"url":{"description":"The endpoint URL.\n","type":"string"}},"required":["region","url","id"],"type":"object"}},"openstack:identity/getGroup:getGroup":{"description":"Use this data source to get the ID of an OpenStack group.\n\n\u003e **Note:** You _must_ have admin privileges in your OpenStack cloud to use\nthis resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst admins = openstack.identity.getGroup({\n    name: \"admins\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nadmins = openstack.identity.get_group(name=\"admins\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var admins = OpenStack.Identity.GetGroup.Invoke(new()\n    {\n        Name = \"admins\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/identity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := identity.GetGroup(ctx, \u0026identity.GetGroupArgs{\n\t\t\tName: \"admins\",\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.openstack.identity.IdentityFunctions;\nimport com.pulumi.openstack.identity.inputs.GetGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var admins = IdentityFunctions.getGroup(GetGroupArgs.builder()\n            .name(\"admins\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  admins:\n    fn::invoke:\n      function: openstack:identity:getGroup\n      arguments:\n        name: admins\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getGroup.\n","properties":{"domainId":{"type":"string","description":"The domain the group belongs to.\n"},"name":{"type":"string","description":"The name of the group.\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n","willReplaceOnChanges":true}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getGroup.\n","properties":{"description":{"description":"A description of the group.\n","type":"string"},"domainId":{"description":"See Argument Reference above.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"name":{"description":"See Argument Reference above.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"}},"required":["description","domainId","name","region","id"],"type":"object"}},"openstack:identity/getProject:getProject":{"description":"Use this data source to get the ID of an OpenStack project.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst project1 = openstack.identity.getProject({\n    name: \"demo\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nproject1 = openstack.identity.get_project(name=\"demo\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var project1 = OpenStack.Identity.GetProject.Invoke(new()\n    {\n        Name = \"demo\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/identity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := identity.LookupProject(ctx, \u0026identity.LookupProjectArgs{\n\t\t\tName: pulumi.StringRef(\"demo\"),\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.openstack.identity.IdentityFunctions;\nimport com.pulumi.openstack.identity.inputs.GetProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 project1 = IdentityFunctions.getProject(GetProjectArgs.builder()\n            .name(\"demo\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  project1:\n    fn::invoke:\n      function: openstack:identity:getProject\n      arguments:\n        name: demo\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getProject.\n","properties":{"domainId":{"type":"string","description":"The domain this project belongs to.\n"},"enabled":{"type":"boolean","description":"Whether the project is enabled or disabled. Valid\nvalues are \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"isDomain":{"type":"boolean","description":"Whether this project is a domain. Valid values\nare \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"name":{"type":"string","description":"The name of the project.\n"},"parentId":{"type":"string","description":"The parent of this project.\n"},"projectId":{"type":"string","description":"The id of the project. Conflicts with any of the\nabove arguments.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getProject.\n","properties":{"description":{"description":"The description of the project.\n","type":"string"},"domainId":{"description":"See Argument Reference above.\n","type":"string"},"enabled":{"description":"See Argument Reference above.\n","type":"boolean"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"isDomain":{"description":"See Argument Reference above.\n","type":"boolean"},"name":{"description":"See Argument Reference above.\n","type":"string"},"parentId":{"description":"See Argument Reference above.\n","type":"string"},"projectId":{"description":"See Argument Reference above.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"tags":{"description":"See Argument Reference above.\n","items":{"type":"string"},"type":"array"}},"required":["description","domainId","region","tags","id"],"type":"object"}},"openstack:identity/getProjectIdsV3:getProjectIdsV3":{"description":"Use this data source to get a list of OpenStack Project IDs matching the\nspecified criteria.\n\n\u003e **Note:** You _must_ have domain admin or cloud admin privileges in your OpenStack cloud to use\nthis datasource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst projects = openstack.identity.getProjectIdsV3({\n    nameRegex: \"^prod.*\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nprojects = openstack.identity.get_project_ids_v3(name_regex=\"^prod.*\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var projects = OpenStack.Identity.GetProjectIdsV3.Invoke(new()\n    {\n        NameRegex = \"^prod.*\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/identity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := identity.GetProjectIdsV3(ctx, \u0026identity.GetProjectIdsV3Args{\n\t\t\tNameRegex: pulumi.StringRef(\"^prod.*\"),\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.openstack.identity.IdentityFunctions;\nimport com.pulumi.openstack.identity.inputs.GetProjectIdsV3Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 projects = IdentityFunctions.getProjectIdsV3(GetProjectIdsV3Args.builder()\n            .nameRegex(\"^prod.*\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  projects:\n    fn::invoke:\n      function: openstack:identity:getProjectIdsV3\n      arguments:\n        nameRegex: ^prod.*\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getProjectIdsV3.\n","properties":{"domainId":{"type":"string","description":"The domain projects belongs to.\n"},"enabled":{"type":"boolean","description":"Whether the project is enabled or disabled. Valid\nvalues are \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. Default is \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"},"isDomain":{"type":"boolean"},"name":{"type":"string","description":"The name of the project.\n"},"nameRegex":{"type":"string","description":"The regular expression of the name of the project.\nCannot be used simultaneously with \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e. Unlike filtering by \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e the\n\u003cspan pulumi-lang-nodejs=\"`nameRegex`\" pulumi-lang-dotnet=\"`NameRegex`\" pulumi-lang-go=\"`nameRegex`\" pulumi-lang-python=\"`name_regex`\" pulumi-lang-yaml=\"`nameRegex`\" pulumi-lang-java=\"`nameRegex`\"\u003e`name_regex`\u003c/span\u003e filtering does by client on the result of OpenStack search\nquery.\n"},"parentId":{"type":"string","description":"The parent of the project.\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"Tags for the project.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getProjectIdsV3.\n","properties":{"description":{"type":"string"},"domainId":{"type":"string"},"enabled":{"type":"boolean"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"ids":{"items":{"type":"string"},"type":"array"},"isDomain":{"type":"boolean"},"name":{"type":"string"},"nameRegex":{"type":"string"},"parentId":{"type":"string"},"region":{"type":"string"},"tags":{"items":{"type":"string"},"type":"array"}},"required":["description","domainId","ids","region","id"],"type":"object"}},"openstack:identity/getRole:getRole":{"description":"Use this data source to get the ID of an OpenStack role.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst admin = openstack.identity.getRole({\n    name: \"admin\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nadmin = openstack.identity.get_role(name=\"admin\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var admin = OpenStack.Identity.GetRole.Invoke(new()\n    {\n        Name = \"admin\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/identity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := identity.LookupRole(ctx, \u0026identity.LookupRoleArgs{\n\t\t\tName: \"admin\",\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.openstack.identity.IdentityFunctions;\nimport com.pulumi.openstack.identity.inputs.GetRoleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var admin = IdentityFunctions.getRole(GetRoleArgs.builder()\n            .name(\"admin\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  admin:\n    fn::invoke:\n      function: openstack:identity:getRole\n      arguments:\n        name: admin\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getRole.\n","properties":{"domainId":{"type":"string","description":"The domain the role belongs to.\n"},"name":{"type":"string","description":"The name of the role.\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n","willReplaceOnChanges":true}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getRole.\n","properties":{"domainId":{"description":"See Argument Reference above.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"name":{"description":"See Argument Reference above.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"}},"required":["domainId","name","region","id"],"type":"object"}},"openstack:identity/getService:getService":{"description":"Use this data source to get the ID of an OpenStack service.\n\n\u003e **Note:** This usually requires admin privileges.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst service1 = openstack.identity.getService({\n    name: \"keystone\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nservice1 = openstack.identity.get_service(name=\"keystone\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var service1 = OpenStack.Identity.GetService.Invoke(new()\n    {\n        Name = \"keystone\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/identity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := identity.GetService(ctx, \u0026identity.GetServiceArgs{\n\t\t\tName: pulumi.StringRef(\"keystone\"),\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.openstack.identity.IdentityFunctions;\nimport com.pulumi.openstack.identity.inputs.GetServiceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 service1 = IdentityFunctions.getService(GetServiceArgs.builder()\n            .name(\"keystone\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  service1:\n    fn::invoke:\n      function: openstack:identity:getService\n      arguments:\n        name: keystone\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getService.\n","properties":{"enabled":{"type":"boolean","description":"The service status.\n"},"name":{"type":"string","description":"The service name.\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n","willReplaceOnChanges":true},"type":{"type":"string","description":"The service type.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getService.\n","properties":{"description":{"description":"The service description.\n","type":"string"},"enabled":{"description":"See Argument Reference above.\n","type":"boolean"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"name":{"description":"See Argument Reference above.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"type":{"description":"See Argument Reference above.\n","type":"string"}},"required":["description","region","id"],"type":"object"}},"openstack:identity/getUser:getUser":{"description":"Use this data source to get the ID of an OpenStack user.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst user1 = openstack.identity.getUser({\n    name: \"user_1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nuser1 = openstack.identity.get_user(name=\"user_1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var user1 = OpenStack.Identity.GetUser.Invoke(new()\n    {\n        Name = \"user_1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/identity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := identity.LookupUser(ctx, \u0026identity.LookupUserArgs{\n\t\t\tName: pulumi.StringRef(\"user_1\"),\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.openstack.identity.IdentityFunctions;\nimport com.pulumi.openstack.identity.inputs.GetUserArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var user1 = IdentityFunctions.getUser(GetUserArgs.builder()\n            .name(\"user_1\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  user1:\n    fn::invoke:\n      function: openstack:identity:getUser\n      arguments:\n        name: user_1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getUser.\n","properties":{"domainId":{"type":"string","description":"The domain this user belongs to.\n"},"enabled":{"type":"boolean","description":"Whether the user is enabled or disabled. Valid\nvalues are \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"idpId":{"type":"string","description":"The identity provider ID of the user.\n"},"name":{"type":"string","description":"The name of the user.\n"},"passwordExpiresAt":{"type":"string","description":"Query for expired passwords. See the [OpenStack API docs](https://developer.openstack.org/api-ref/identity/v3/#list-users) for more information on the query format.\n"},"protocolId":{"type":"string","description":"The protocol ID of the user.\n"},"region":{"type":"string","description":"The region in which to obtain the V3 Keystone client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"},"uniqueId":{"type":"string","description":"The unique ID of the user.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getUser.\n","properties":{"defaultProjectId":{"description":"See Argument Reference above.\n","type":"string"},"description":{"description":"A description of the user.\n","type":"string"},"domainId":{"description":"See Argument Reference above.\n","type":"string"},"enabled":{"description":"See Argument Reference above.\n","type":"boolean"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"idpId":{"description":"See Argument Reference above.\n","type":"string"},"name":{"description":"See Argument Reference above.\n","type":"string"},"passwordExpiresAt":{"description":"See Argument Reference above.\n","type":"string"},"protocolId":{"description":"See Argument Reference above.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"uniqueId":{"description":"See Argument Reference above.\n","type":"string"}},"required":["defaultProjectId","description","domainId","enabled","region","id"],"type":"object"}},"openstack:images/getImage:getImage":{"description":"Use this data source to get the ID of an available OpenStack image.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst ubuntu = openstack.images.getImage({\n    name: \"Ubuntu 16.04\",\n    mostRecent: true,\n    properties: {\n        key: \"value\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nubuntu = openstack.images.get_image(name=\"Ubuntu 16.04\",\n    most_recent=True,\n    properties={\n        \"key\": \"value\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ubuntu = OpenStack.Images.GetImage.Invoke(new()\n    {\n        Name = \"Ubuntu 16.04\",\n        MostRecent = true,\n        Properties = \n        {\n            { \"key\", \"value\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/images\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := images.LookupImage(ctx, \u0026images.LookupImageArgs{\n\t\t\tName:       pulumi.StringRef(\"Ubuntu 16.04\"),\n\t\t\tMostRecent: pulumi.BoolRef(true),\n\t\t\tProperties: map[string]interface{}{\n\t\t\t\t\"key\": \"value\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openstack.images.ImagesFunctions;\nimport com.pulumi.openstack.images.inputs.GetImageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 ubuntu = ImagesFunctions.getImage(GetImageArgs.builder()\n            .name(\"Ubuntu 16.04\")\n            .mostRecent(true)\n            .properties(Map.of(\"key\", \"value\"))\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  ubuntu:\n    fn::invoke:\n      function: openstack:images:getImage\n      arguments:\n        name: Ubuntu 16.04\n        mostRecent: true\n        properties:\n          key: value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getImage.\n","properties":{"containerFormat":{"type":"string","description":"The container format of the image.\n"},"diskFormat":{"type":"string","description":"The disk format of the image.\n"},"hidden":{"type":"boolean","description":"Whether or not the image is hidden from public list.\n"},"memberStatus":{"type":"string","description":"The status of the image. Must be one of\n\"accepted\", \"pending\", \"rejected\", or \"all\".\n","willReplaceOnChanges":true},"mostRecent":{"type":"boolean","description":"If more than one result is returned, use the most\nrecent image.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"The name of the image. Cannot be used simultaneously with\n\u003cspan pulumi-lang-nodejs=\"`nameRegex`\" pulumi-lang-dotnet=\"`NameRegex`\" pulumi-lang-go=\"`nameRegex`\" pulumi-lang-python=\"`name_regex`\" pulumi-lang-yaml=\"`nameRegex`\" pulumi-lang-java=\"`nameRegex`\"\u003e`name_regex`\u003c/span\u003e.\n","willReplaceOnChanges":true},"nameRegex":{"type":"string","description":"The regular expressian of the name of the image.\nCannot be used simultaneously with \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e. Unlike filtering by \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e the\n\u003cspan pulumi-lang-nodejs=\"`nameRegex`\" pulumi-lang-dotnet=\"`NameRegex`\" pulumi-lang-go=\"`nameRegex`\" pulumi-lang-python=\"`name_regex`\" pulumi-lang-yaml=\"`nameRegex`\" pulumi-lang-java=\"`nameRegex`\"\u003e`name_regex`\u003c/span\u003e filtering does by client on the result of OpenStack search\nquery.\n","willReplaceOnChanges":true},"owner":{"type":"string","description":"The owner (UUID) of the image.\n","willReplaceOnChanges":true},"properties":{"type":"object","additionalProperties":{"type":"string"},"description":"a map of key/value pairs to match an image with.\nAll specified properties must be matched. Unlike other options filtering by\n\u003cspan pulumi-lang-nodejs=\"`properties`\" pulumi-lang-dotnet=\"`Properties`\" pulumi-lang-go=\"`properties`\" pulumi-lang-python=\"`properties`\" pulumi-lang-yaml=\"`properties`\" pulumi-lang-java=\"`properties`\"\u003e`properties`\u003c/span\u003e does by client on the result of OpenStack search query.\nFiltering is applied if server responce contains at least 2 images. In case\nthere is only one image the \u003cspan pulumi-lang-nodejs=\"`properties`\" pulumi-lang-dotnet=\"`Properties`\" pulumi-lang-go=\"`properties`\" pulumi-lang-python=\"`properties`\" pulumi-lang-yaml=\"`properties`\" pulumi-lang-java=\"`properties`\"\u003e`properties`\u003c/span\u003e ignores.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Glance client. A\nGlance client is needed to create an Image that can be used with a compute\ninstance. If omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n","willReplaceOnChanges":true},"sizeMax":{"type":"integer","description":"The maximum size (in bytes) of the image to return.\n","willReplaceOnChanges":true},"sizeMin":{"type":"integer","description":"The minimum size (in bytes) of the image to return.\n","willReplaceOnChanges":true},"sort":{"type":"string","description":"Sorts the response by one or more attribute and sort\ndirection combinations. You can also set multiple sort keys and directions.\nDefault direction is \u003cspan pulumi-lang-nodejs=\"`desc`\" pulumi-lang-dotnet=\"`Desc`\" pulumi-lang-go=\"`desc`\" pulumi-lang-python=\"`desc`\" pulumi-lang-yaml=\"`desc`\" pulumi-lang-java=\"`desc`\"\u003e`desc`\u003c/span\u003e. Use the comma (,) character to separate multiple\nvalues. For example expression `sort = \"name:asc,status\"` sorts ascending by\nname and descending by status.\n","willReplaceOnChanges":true},"tag":{"type":"string","description":"Search for images with a specific tag.\n","willReplaceOnChanges":true},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags required to be set on the image (all\nspecified tags must be in the images tag list for it to be matched).\n"},"visibility":{"type":"string","description":"The visibility of the image. Must be one of\n\"public\", \"private\", \"community\", or \"shared\". Defaults to \"private\".\n","willReplaceOnChanges":true}},"type":"object"},"outputs":{"description":"A collection of values returned by getImage.\n","properties":{"checksum":{"description":"The checksum of the data associated with the image.\n","type":"string"},"containerFormat":{"description":"The format of the image's container.\n","type":"string"},"createdAt":{"description":"The date the image was created.\n","type":"string"},"diskFormat":{"description":"The format of the image's disk.\n","type":"string"},"file":{"description":"the trailing path after the glance endpoint that represent the\nlocation of the image or the path to retrieve it.\n","type":"string"},"hidden":{"type":"boolean"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"memberStatus":{"type":"string"},"metadata":{"additionalProperties":{"type":"string"},"description":"The metadata associated with the image. Image metadata allow for\nmeaningfully define the image properties and tags. See\nhttps://docs.openstack.org/glance/latest/user/metadefs-concepts.html.\n","type":"object"},"minDiskGb":{"description":"The minimum amount of disk space required to use the image.\n","type":"integer"},"minRamMb":{"description":"The minimum amount of ram required to use the image.\n","type":"integer"},"mostRecent":{"type":"boolean"},"name":{"type":"string"},"nameRegex":{"type":"string"},"owner":{"type":"string"},"properties":{"additionalProperties":{"type":"string"},"description":"Freeform information about the image.\n","type":"object"},"protected":{"description":"Whether or not the image is protected.\n","type":"boolean"},"region":{"type":"string"},"schema":{"description":"The path to the JSON-schema that represent the image\n","type":"string"},"sizeBytes":{"description":"The size of the image (in bytes).\n","type":"integer"},"sizeMax":{"type":"integer"},"sizeMin":{"type":"integer"},"sort":{"type":"string"},"tag":{"type":"string"},"tags":{"description":"The tags list of the image.\n","items":{"type":"string"},"type":"array"},"updatedAt":{"description":"The date the image was last updated.\n","type":"string"},"visibility":{"type":"string"}},"required":["checksum","createdAt","file","metadata","minDiskGb","minRamMb","protected","region","schema","sizeBytes","tags","updatedAt","id"],"type":"object"}},"openstack:images/getImageIds:getImageIds":{"description":"Use this data source to get a list of Openstack Image IDs matching the\nspecified criteria.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst images = openstack.images.getImageIds({\n    nameRegex: \"^Ubuntu 16\\\\.04.*-amd64\",\n    sort: \"updated_at\",\n    properties: {\n        key: \"value\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nimages = openstack.images.get_image_ids(name_regex=\"^Ubuntu 16\\\\.04.*-amd64\",\n    sort=\"updated_at\",\n    properties={\n        \"key\": \"value\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var images = OpenStack.Images.GetImageIds.Invoke(new()\n    {\n        NameRegex = \"^Ubuntu 16\\\\.04.*-amd64\",\n        Sort = \"updated_at\",\n        Properties = \n        {\n            { \"key\", \"value\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/images\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := images.GetImageIds(ctx, \u0026images.GetImageIdsArgs{\n\t\t\tNameRegex: pulumi.StringRef(\"^Ubuntu 16\\\\.04.*-amd64\"),\n\t\t\tSort:      pulumi.StringRef(\"updated_at\"),\n\t\t\tProperties: map[string]interface{}{\n\t\t\t\t\"key\": \"value\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openstack.images.ImagesFunctions;\nimport com.pulumi.openstack.images.inputs.GetImageIdsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 images = ImagesFunctions.getImageIds(GetImageIdsArgs.builder()\n            .nameRegex(\"^Ubuntu 16\\\\.04.*-amd64\")\n            .sort(\"updated_at\")\n            .properties(Map.of(\"key\", \"value\"))\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  images:\n    fn::invoke:\n      function: openstack:images:getImageIds\n      arguments:\n        nameRegex: ^Ubuntu 16\\.04.*-amd64\n        sort: updated_at\n        properties:\n          key: value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getImageIds.\n","properties":{"containerFormat":{"type":"string","description":"The container format of the image.\n"},"diskFormat":{"type":"string","description":"The disk format of the image.\n"},"hidden":{"type":"boolean","description":"Whether or not the image is hidden from public list.\n"},"memberStatus":{"type":"string","description":"The status of the image. Must be one of\n\"accepted\", \"pending\", \"rejected\", or \"all\".\n","willReplaceOnChanges":true},"name":{"type":"string","description":"The name of the image. Cannot be used simultaneously with\n\u003cspan pulumi-lang-nodejs=\"`nameRegex`\" pulumi-lang-dotnet=\"`NameRegex`\" pulumi-lang-go=\"`nameRegex`\" pulumi-lang-python=\"`name_regex`\" pulumi-lang-yaml=\"`nameRegex`\" pulumi-lang-java=\"`nameRegex`\"\u003e`name_regex`\u003c/span\u003e.\n","willReplaceOnChanges":true},"nameRegex":{"type":"string","description":"The regular expressian of the name of the image.\nCannot be used simultaneously with \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e. Unlike filtering by \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e the\n\u003cspan pulumi-lang-nodejs=\"`nameRegex`\" pulumi-lang-dotnet=\"`NameRegex`\" pulumi-lang-go=\"`nameRegex`\" pulumi-lang-python=\"`name_regex`\" pulumi-lang-yaml=\"`nameRegex`\" pulumi-lang-java=\"`nameRegex`\"\u003e`name_regex`\u003c/span\u003e filtering does by client on the result of OpenStack search\nquery.\n","willReplaceOnChanges":true},"owner":{"type":"string","description":"The owner (UUID) of the image.\n","willReplaceOnChanges":true},"properties":{"type":"object","additionalProperties":{"type":"string"},"description":"a map of key/value pairs to match an image with.\nAll specified properties must be matched. Unlike other options filtering by\n\u003cspan pulumi-lang-nodejs=\"`properties`\" pulumi-lang-dotnet=\"`Properties`\" pulumi-lang-go=\"`properties`\" pulumi-lang-python=\"`properties`\" pulumi-lang-yaml=\"`properties`\" pulumi-lang-java=\"`properties`\"\u003e`properties`\u003c/span\u003e does by client on the result of OpenStack search query.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Glance client. A\nGlance client is needed to create an Image that can be used with a compute\ninstance. If omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n","willReplaceOnChanges":true},"sizeMax":{"type":"integer","description":"The maximum size (in bytes) of the image to return.\n","willReplaceOnChanges":true},"sizeMin":{"type":"integer","description":"The minimum size (in bytes) of the image to return.\n","willReplaceOnChanges":true},"sort":{"type":"string","description":"Sorts the response by one or more attribute and sort\ndirection combinations. You can also set multiple sort keys and directions.\nDefault direction is \u003cspan pulumi-lang-nodejs=\"`desc`\" pulumi-lang-dotnet=\"`Desc`\" pulumi-lang-go=\"`desc`\" pulumi-lang-python=\"`desc`\" pulumi-lang-yaml=\"`desc`\" pulumi-lang-java=\"`desc`\"\u003e`desc`\u003c/span\u003e. Use the comma (,) character to separate multiple\nvalues. For example expression `sort = \"name:asc,status\"` sorts ascending by\nname and descending by status.\n","willReplaceOnChanges":true},"tag":{"type":"string","description":"Search for images with a specific tag.\n","willReplaceOnChanges":true},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags required to be set on the image (all\nspecified tags must be in the images tag list for it to be matched).\n"},"visibility":{"type":"string","description":"The visibility of the image. Must be one of\n\"public\", \"private\", \"community\", or \"shared\". Defaults to \"private\".\n","willReplaceOnChanges":true}},"type":"object"},"outputs":{"description":"A collection of values returned by getImageIds.\n","properties":{"containerFormat":{"type":"string"},"diskFormat":{"type":"string"},"hidden":{"type":"boolean"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"ids":{"items":{"type":"string"},"type":"array"},"memberStatus":{"type":"string"},"name":{"type":"string"},"nameRegex":{"type":"string"},"owner":{"type":"string"},"properties":{"additionalProperties":{"type":"string"},"type":"object"},"region":{"type":"string"},"sizeMax":{"type":"integer"},"sizeMin":{"type":"integer"},"sort":{"type":"string"},"tag":{"type":"string"},"tags":{"items":{"type":"string"},"type":"array"},"visibility":{"type":"string"}},"required":["ids","region","id"],"type":"object"}},"openstack:index/getFwGroupV2:getFwGroupV2":{"deprecationMessage":"openstack.index/getfwgroupv2.getFwGroupV2 has been deprecated in favor of openstack.firewall/getgroupv2.getGroupV2","description":"Use this data source to get information of an available OpenStack firewall group v2.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst group = openstack.firewall.getGroupV2({\n    name: \"tf_test_group\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\ngroup = openstack.firewall.get_group_v2(name=\"tf_test_group\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var @group = OpenStack.Firewall.GetGroupV2.Invoke(new()\n    {\n        Name = \"tf_test_group\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/firewall\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firewall.LookupGroupV2(ctx, \u0026firewall.LookupGroupV2Args{\n\t\t\tName: pulumi.StringRef(\"tf_test_group\"),\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.openstack.firewall.FirewallFunctions;\nimport com.pulumi.openstack.firewall.inputs.GetGroupV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 group = FirewallFunctions.getGroupV2(GetGroupV2Args.builder()\n            .name(\"tf_test_group\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  group:\n    fn::invoke:\n      function: openstack:firewall:getGroupV2\n      arguments:\n        name: tf_test_group\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getFwGroupV2.\n","properties":{"adminStateUp":{"type":"boolean","description":"Administrative up/down status for the firewall group.\n"},"description":{"type":"string","description":"Human-readable description of the firewall group.\n"},"egressFirewallPolicyId":{"type":"string","description":"The egress policy ID of the firewall group.\n"},"groupId":{"type":"string","description":"The ID of the firewall group.\n"},"ingressFirewallPolicyId":{"type":"string","description":"The ingress policy ID of the firewall group.\n"},"name":{"type":"string","description":"The name of the firewall group.\n"},"projectId":{"type":"string","description":"This argument conflicts and is interchangeable\nwith \u003cspan pulumi-lang-nodejs=\"`tenantId`\" pulumi-lang-dotnet=\"`TenantId`\" pulumi-lang-go=\"`tenantId`\" pulumi-lang-python=\"`tenant_id`\" pulumi-lang-yaml=\"`tenantId`\" pulumi-lang-java=\"`tenantId`\"\u003e`tenant_id`\u003c/span\u003e. The owner of the firewall group.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Neutron client.\nA Neutron client is needed to retrieve firewall group ids. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"},"shared":{"type":"boolean","description":"The sharing status of the firewall group.\n"},"status":{"type":"string","description":"Enabled status for the firewall group.\n"},"tenantId":{"type":"string","description":"This argument conflicts and is interchangeable\nwith \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`project_id`\u003c/span\u003e. The owner of the firewall group.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getFwGroupV2.\n","properties":{"adminStateUp":{"description":"See Argument Reference above.\n","type":"boolean"},"description":{"description":"See Argument Reference above.\n","type":"string"},"egressFirewallPolicyId":{"description":"See Argument Reference above.\n","type":"string"},"groupId":{"description":"See Argument Reference above.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"ingressFirewallPolicyId":{"description":"See Argument Reference above.\n","type":"string"},"name":{"description":"See Argument Reference above.\n","type":"string"},"ports":{"description":"Ports associated with the firewall group.\n","items":{"type":"string"},"type":"array"},"projectId":{"description":"See Argument Reference above.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"shared":{"description":"See Argument Reference above.\n","type":"boolean"},"status":{"description":"See Argument Reference above.\n","type":"string"},"tenantId":{"description":"See Argument Reference above.\n","type":"string"}},"required":["adminStateUp","ports","projectId","region","shared","status","tenantId","id"],"type":"object"}},"openstack:index/getFwPolicyV2:getFwPolicyV2":{"deprecationMessage":"openstack.index/getfwpolicyv2.getFwPolicyV2 has been deprecated in favor of openstack.firewall/getpolicyv2.getPolicyV2","description":"Use this data source to get information of an available OpenStack firewall policy v2.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst policy = openstack.firewall.getPolicyV2({\n    name: \"tf_test_policy\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\npolicy = openstack.firewall.get_policy_v2(name=\"tf_test_policy\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var policy = OpenStack.Firewall.GetPolicyV2.Invoke(new()\n    {\n        Name = \"tf_test_policy\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/firewall\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firewall.LookupPolicyV2(ctx, \u0026firewall.LookupPolicyV2Args{\n\t\t\tName: pulumi.StringRef(\"tf_test_policy\"),\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.openstack.firewall.FirewallFunctions;\nimport com.pulumi.openstack.firewall.inputs.GetPolicyV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 policy = FirewallFunctions.getPolicyV2(GetPolicyV2Args.builder()\n            .name(\"tf_test_policy\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  policy:\n    fn::invoke:\n      function: openstack:firewall:getPolicyV2\n      arguments:\n        name: tf_test_policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getFwPolicyV2.\n","properties":{"audited":{"type":"boolean","description":"Whether this policy has been audited.\n"},"description":{"type":"string","description":"Human-readable description of the policy.\n"},"name":{"type":"string","description":"The name of the firewall policy.\n"},"policyId":{"type":"string","description":"The ID of the firewall policy.\n"},"projectId":{"type":"string","description":"This argument conflicts and is interchangeable\nwith \u003cspan pulumi-lang-nodejs=\"`tenantId`\" pulumi-lang-dotnet=\"`TenantId`\" pulumi-lang-go=\"`tenantId`\" pulumi-lang-python=\"`tenant_id`\" pulumi-lang-yaml=\"`tenantId`\" pulumi-lang-java=\"`tenantId`\"\u003e`tenant_id`\u003c/span\u003e. The owner of the firewall policy.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Neutron client.\nA Neutron client is needed to retrieve firewall policy ids. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n","willReplaceOnChanges":true},"shared":{"type":"boolean","description":"Whether this policy is shared across all projects.\n"},"tenantId":{"type":"string","description":"This argument conflicts and is interchangeable\nwith \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`project_id`\u003c/span\u003e. The owner of the firewall policy.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getFwPolicyV2.\n","properties":{"audited":{"description":"The audit status of the firewall policy.\n","type":"boolean"},"description":{"type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"name":{"description":"See Argument Reference above.\n","type":"string"},"policyId":{"description":"See Argument Reference above.\n","type":"string"},"projectId":{"description":"See Argument Reference above.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"rules":{"description":"The array of one or more firewall rules that comprise the policy.\n","items":{"type":"string"},"type":"array"},"shared":{"description":"The sharing status of the firewall policy.\n","type":"boolean"},"tenantId":{"description":"See Argument Reference above.\n","type":"string"}},"required":["audited","projectId","region","rules","shared","tenantId","id"],"type":"object"}},"openstack:index/getFwRuleV2:getFwRuleV2":{"deprecationMessage":"openstack.index/getfwrulev2.getFwRuleV2 has been deprecated in favor of openstack.firewall/getrulev2.getRuleV2","description":"Use this data source to get information of an available OpenStack firewall rule v2.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst rule = openstack.firewall.getRuleV2({\n    name: \"tf_test_rule\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nrule = openstack.firewall.get_rule_v2(name=\"tf_test_rule\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var rule = OpenStack.Firewall.GetRuleV2.Invoke(new()\n    {\n        Name = \"tf_test_rule\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/firewall\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firewall.LookupRuleV2(ctx, \u0026firewall.LookupRuleV2Args{\n\t\t\tName: pulumi.StringRef(\"tf_test_rule\"),\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.openstack.firewall.FirewallFunctions;\nimport com.pulumi.openstack.firewall.inputs.GetRuleV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 rule = FirewallFunctions.getRuleV2(GetRuleV2Args.builder()\n            .name(\"tf_test_rule\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  rule:\n    fn::invoke:\n      function: openstack:firewall:getRuleV2\n      arguments:\n        name: tf_test_rule\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getFwRuleV2.\n","properties":{"action":{"type":"string","description":"Action to be taken when the firewall rule matches.\n"},"description":{"type":"string","description":"The description of the firewall rule.\n"},"destinationIpAddress":{"type":"string","description":"The destination IP address on which the\nfirewall rule operates.\n"},"destinationPort":{"type":"string","description":"The destination port on which the firewall\nrule operates.\n"},"enabled":{"type":"boolean","description":"Enabled status for the firewall rule.\n"},"firewallPolicyIds":{"type":"array","items":{"type":"string"},"description":"The ID of the firewall policy the rule belongs to.\n"},"ipVersion":{"type":"integer","description":"IP version, either 4 (default) or 6.\n"},"name":{"type":"string","description":"The name of the firewall rule.\n"},"projectId":{"type":"string","description":"This argument conflicts and is interchangeable\nwith \u003cspan pulumi-lang-nodejs=\"`tenantId`\" pulumi-lang-dotnet=\"`TenantId`\" pulumi-lang-go=\"`tenantId`\" pulumi-lang-python=\"`tenant_id`\" pulumi-lang-yaml=\"`tenantId`\" pulumi-lang-java=\"`tenantId`\"\u003e`tenant_id`\u003c/span\u003e. The owner of the firewall rule.\n"},"protocol":{"type":"string","description":"The protocol type on which the firewall rule operates.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Neutron client.\nA Neutron client is needed to retrieve firewall policy ids. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n","willReplaceOnChanges":true},"ruleId":{"type":"string","description":"The ID of the firewall rule.\n"},"shared":{"type":"boolean","description":"The sharing status of the firewall policy.\n"},"sourceIpAddress":{"type":"string","description":"The source IP address on which the firewall\nrule operates.\n"},"sourcePort":{"type":"string","description":"The source port on which the firewall\nrule operates.\n"},"tenantId":{"type":"string","description":"This argument conflicts and is interchangeable\nwith \u003cspan pulumi-lang-nodejs=\"`projectId`\" pulumi-lang-dotnet=\"`ProjectId`\" pulumi-lang-go=\"`projectId`\" pulumi-lang-python=\"`project_id`\" pulumi-lang-yaml=\"`projectId`\" pulumi-lang-java=\"`projectId`\"\u003e`project_id`\u003c/span\u003e. The owner of the firewall rule.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getFwRuleV2.\n","properties":{"action":{"description":"See Argument Reference above.\n","type":"string"},"description":{"description":"See Argument Reference above.\n","type":"string"},"destinationIpAddress":{"description":"See Argument Reference above.\n","type":"string"},"destinationPort":{"description":"See Argument Reference above.\n","type":"string"},"enabled":{"description":"See Argument Reference above.\n","type":"boolean"},"firewallPolicyIds":{"description":"The ID of the firewall policy the rule belongs to.\n","items":{"type":"string"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"ipVersion":{"description":"See Argument Reference above.\n","type":"integer"},"name":{"description":"See Argument Reference above.\n","type":"string"},"projectId":{"description":"See Argument Reference above.\n","type":"string"},"protocol":{"description":"See Argument Reference above.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"ruleId":{"description":"See Argument Reference above.\n","type":"string"},"shared":{"description":"See Argument Reference above.\n","type":"boolean"},"sourceIpAddress":{"description":"See Argument Reference above.\n","type":"string"},"sourcePort":{"description":"See Argument Reference above.\n","type":"string"},"tenantId":{"description":"See Argument Reference above.\n","type":"string"}},"required":["enabled","firewallPolicyIds","projectId","region","shared","tenantId","id"],"type":"object"}},"openstack:index/workflowWorkflowV2:WorkflowWorkflowV2":{"description":"Use this data source to get the ID of an available workflow.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst workflow1 = openstack.WorkflowWorkflowV2({\n    name: \"workflow_1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nworkflow1 = openstack.workflow_workflow_v2(name=\"workflow_1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var workflow1 = OpenStack.WorkflowWorkflowV2.Invoke(new()\n    {\n        Name = \"workflow_1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := openstack.WorkflowWorkflowV2(ctx, \u0026openstack.WorkflowWorkflowV2Args{\n\t\t\tName: pulumi.StringRef(\"workflow_1\"),\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.openstack.OpenstackFunctions;\nimport com.pulumi.openstack.inputs.WorkflowWorkflowV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 workflow1 = OpenstackFunctions.WorkflowWorkflowV2(WorkflowWorkflowV2Args.builder()\n            .name(\"workflow_1\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  workflow1:\n    fn::invoke:\n      function: openstack:WorkflowWorkflowV2\n      arguments:\n        name: workflow_1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking WorkflowWorkflowV2.\n","properties":{"name":{"type":"string","description":"The name of the workflow.\n"},"namespace":{"type":"string","description":"The namespace of the workflow.\n"},"projectId":{"type":"string","description":"The id of the project to retrieve the workflow.\nRequires admin privileges.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Workflow client.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by WorkflowWorkflowV2.\n","properties":{"createdAt":{"description":"The date the workflow was created.\n","type":"string"},"definition":{"description":"The workflow definition in Mistral v2 DSL.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"input":{"description":"A set of input parameters required for workflow execution.\n","type":"string"},"name":{"description":"See Argument Reference above.\n","type":"string"},"namespace":{"description":"See Argument Reference above.\n","type":"string"},"projectId":{"description":"See Argument Reference above.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"scope":{"description":"Scope (private or public).\n","type":"string"},"tags":{"description":"A set of string tags for the workflow.\n","items":{"type":"string"},"type":"array"}},"required":["createdAt","definition","input","name","namespace","projectId","region","scope","tags","id"],"type":"object"}},"openstack:keymanager/getContainer:getContainer":{"description":"Use this data source to get the ID of an available Barbican container.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst example = openstack.keymanager.getContainer({\n    name: \"my_container\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nexample = openstack.keymanager.get_container(name=\"my_container\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = OpenStack.KeyManager.GetContainer.Invoke(new()\n    {\n        Name = \"my_container\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/keymanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := keymanager.GetContainer(ctx, \u0026keymanager.GetContainerArgs{\n\t\t\tName: pulumi.StringRef(\"my_container\"),\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.openstack.keymanager.KeymanagerFunctions;\nimport com.pulumi.openstack.keymanager.inputs.GetContainerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = KeymanagerFunctions.getContainer(GetContainerArgs.builder()\n            .name(\"my_container\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: openstack:keymanager:getContainer\n      arguments:\n        name: my_container\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getContainer.\n","properties":{"name":{"type":"string","description":"The Container name.\n"},"region":{"type":"string","description":"The region in which to obtain the V1 KeyManager client.\nA KeyManager client is needed to fetch a container. If omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e\nargument of the provider is used.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getContainer.\n","properties":{"acls":{"description":"The list of ACLs assigned to a container. The \u003cspan pulumi-lang-nodejs=\"`read`\" pulumi-lang-dotnet=\"`Read`\" pulumi-lang-go=\"`read`\" pulumi-lang-python=\"`read`\" pulumi-lang-yaml=\"`read`\" pulumi-lang-java=\"`read`\"\u003e`read`\u003c/span\u003e structure is\ndescribed below.\n","items":{"$ref":"#/types/openstack:keymanager/getContainerAcl:getContainerAcl"},"type":"array"},"consumers":{"description":"The list of the container consumers. The structure is described\nbelow.\n","items":{"$ref":"#/types/openstack:keymanager/getContainerConsumer:getContainerConsumer"},"type":"array"},"containerRef":{"description":"The container reference / where to find the container.\n","type":"string"},"createdAt":{"description":"The date the container ACL was created.\n","type":"string"},"creatorId":{"description":"The creator of the container.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"name":{"description":"The name of the consumer.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"secretRefs":{"description":"A set of dictionaries containing references to secrets. The\nstructure is described below.\n","items":{"$ref":"#/types/openstack:keymanager/getContainerSecretRef:getContainerSecretRef"},"type":"array"},"status":{"description":"The status of the container.\n","type":"string"},"type":{"description":"The container type.\n","type":"string"},"updatedAt":{"description":"The date the container ACL was last updated.\n","type":"string"}},"required":["acls","consumers","containerRef","createdAt","creatorId","secretRefs","status","type","updatedAt","id"],"type":"object"}},"openstack:keymanager/getSecret:getSecret":{"description":"## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst example = openstack.keymanager.getSecret({\n    mode: \"cbc\",\n    secretType: \"passphrase\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nexample = openstack.keymanager.get_secret(mode=\"cbc\",\n    secret_type=\"passphrase\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = OpenStack.KeyManager.GetSecret.Invoke(new()\n    {\n        Mode = \"cbc\",\n        SecretType = \"passphrase\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/keymanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := keymanager.GetSecret(ctx, \u0026keymanager.GetSecretArgs{\n\t\t\tMode:       pulumi.StringRef(\"cbc\"),\n\t\t\tSecretType: pulumi.StringRef(\"passphrase\"),\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.openstack.keymanager.KeymanagerFunctions;\nimport com.pulumi.openstack.keymanager.inputs.GetSecretArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = KeymanagerFunctions.getSecret(GetSecretArgs.builder()\n            .mode(\"cbc\")\n            .secretType(\"passphrase\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: openstack:keymanager:getSecret\n      arguments:\n        mode: cbc\n        secretType: passphrase\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Date Filters\n\nThe values for the \u003cspan pulumi-lang-nodejs=\"`expirationFilter`\" pulumi-lang-dotnet=\"`ExpirationFilter`\" pulumi-lang-go=\"`expirationFilter`\" pulumi-lang-python=\"`expiration_filter`\" pulumi-lang-yaml=\"`expirationFilter`\" pulumi-lang-java=\"`expirationFilter`\"\u003e`expiration_filter`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`createdAtFilter`\" pulumi-lang-dotnet=\"`CreatedAtFilter`\" pulumi-lang-go=\"`createdAtFilter`\" pulumi-lang-python=\"`created_at_filter`\" pulumi-lang-yaml=\"`createdAtFilter`\" pulumi-lang-java=\"`createdAtFilter`\"\u003e`created_at_filter`\u003c/span\u003e, and\n\u003cspan pulumi-lang-nodejs=\"`updatedAtFilter`\" pulumi-lang-dotnet=\"`UpdatedAtFilter`\" pulumi-lang-go=\"`updatedAtFilter`\" pulumi-lang-python=\"`updated_at_filter`\" pulumi-lang-yaml=\"`updatedAtFilter`\" pulumi-lang-java=\"`updatedAtFilter`\"\u003e`updated_at_filter`\u003c/span\u003e parameters are comma-separated lists of time stamps in\nRFC3339 format. The time stamps can be prefixed with any of these comparison\noperators: *gt:* (greater-than), *gte:* (greater-than-or-equal), *lt:*\n(less-than), *lte:* (less-than-or-equal).\n\nFor example, to get a passphrase a Secret with CBC moda, that will expire in\nJanuary of 2020:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst dateFilterExample = openstack.keymanager.getSecret({\n    mode: \"cbc\",\n    secretType: \"passphrase\",\n    expirationFilter: \"gt:2020-01-01T00:00:00Z\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\ndate_filter_example = openstack.keymanager.get_secret(mode=\"cbc\",\n    secret_type=\"passphrase\",\n    expiration_filter=\"gt:2020-01-01T00:00:00Z\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var dateFilterExample = OpenStack.KeyManager.GetSecret.Invoke(new()\n    {\n        Mode = \"cbc\",\n        SecretType = \"passphrase\",\n        ExpirationFilter = \"gt:2020-01-01T00:00:00Z\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/keymanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := keymanager.GetSecret(ctx, \u0026keymanager.GetSecretArgs{\n\t\t\tMode:             pulumi.StringRef(\"cbc\"),\n\t\t\tSecretType:       pulumi.StringRef(\"passphrase\"),\n\t\t\tExpirationFilter: pulumi.StringRef(\"gt:2020-01-01T00:00:00Z\"),\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.openstack.keymanager.KeymanagerFunctions;\nimport com.pulumi.openstack.keymanager.inputs.GetSecretArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 dateFilterExample = KeymanagerFunctions.getSecret(GetSecretArgs.builder()\n            .mode(\"cbc\")\n            .secretType(\"passphrase\")\n            .expirationFilter(\"gt:2020-01-01T00:00:00Z\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  dateFilterExample:\n    fn::invoke:\n      function: openstack:keymanager:getSecret\n      arguments:\n        mode: cbc\n        secretType: passphrase\n        expirationFilter: gt:2020-01-01T00:00:00Z\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getSecret.\n","properties":{"aclOnly":{"type":"boolean","description":"Select the Secret with an ACL that contains the user.\nProject scope is ignored. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"algorithm":{"type":"string","description":"The Secret algorithm.\n"},"bitLength":{"type":"integer","description":"The Secret bit length.\n"},"createdAtFilter":{"type":"string","description":"Date filter to select the Secret with\ncreated matching the specified criteria. See Date Filters below for more\ndetail.\n"},"expirationFilter":{"type":"string","description":"Date filter to select the Secret with\nexpiration matching the specified criteria. See Date Filters below for more\ndetail.\n"},"mode":{"type":"string","description":"The Secret mode.\n"},"name":{"type":"string","description":"The Secret name.\n"},"region":{"type":"string","description":"The region in which to obtain the V1 KeyManager client.\nA KeyManager client is needed to fetch a secret. If omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e\nargument of the provider is used.\n"},"secretType":{"type":"string","description":"The Secret type. For more information see\n[Secret types](https://docs.openstack.org/barbican/latest/api/reference/secret_types.html).\n"},"updatedAtFilter":{"type":"string","description":"Date filter to select the Secret with\nupdated matching the specified criteria. See Date Filters below for more\ndetail.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getSecret.\n","properties":{"aclOnly":{"description":"See Argument Reference above.\n","type":"boolean"},"acls":{"description":"The list of ACLs assigned to a secret. The \u003cspan pulumi-lang-nodejs=\"`read`\" pulumi-lang-dotnet=\"`Read`\" pulumi-lang-go=\"`read`\" pulumi-lang-python=\"`read`\" pulumi-lang-yaml=\"`read`\" pulumi-lang-java=\"`read`\"\u003e`read`\u003c/span\u003e structure is described below.\n","items":{"$ref":"#/types/openstack:keymanager/getSecretAcl:getSecretAcl"},"type":"array"},"algorithm":{"description":"See Argument Reference above.\n","type":"string"},"bitLength":{"description":"See Argument Reference above.\n","type":"integer"},"contentTypes":{"additionalProperties":{"type":"string"},"description":"The map of the content types, assigned on the secret.\n","type":"object"},"createdAt":{"description":"The date the secret ACL was created.\n","type":"string"},"createdAtFilter":{"description":"See Argument Reference above.\n","type":"string"},"creatorId":{"description":"The creator of the secret.\n","type":"string"},"expiration":{"description":"The date the secret will expire.\n","type":"string"},"expirationFilter":{"description":"See Argument Reference above.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"metadata":{"additionalProperties":{"type":"string"},"description":"The map of metadata, assigned on the secret, which has been\nexplicitly and implicitly added.\n","type":"object"},"mode":{"description":"See Argument Reference above.\n","type":"string"},"name":{"description":"See Argument Reference above.\n","type":"string"},"payload":{"description":"The secret payload.\n","secret":true,"type":"string"},"payloadContentEncoding":{"description":"The Secret encoding.\n","type":"string"},"payloadContentType":{"description":"The Secret content type.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"secretRef":{"description":"The secret reference / where to find the secret.\n","type":"string"},"secretType":{"description":"See Argument Reference above.\n","type":"string"},"status":{"description":"The status of the secret.\n","type":"string"},"updatedAt":{"description":"The date the secret ACL was last updated.\n","type":"string"},"updatedAtFilter":{"description":"See Argument Reference above.\n","type":"string"}},"required":["acls","contentTypes","createdAt","creatorId","expiration","metadata","payload","payloadContentEncoding","payloadContentType","secretRef","status","updatedAt","id"],"type":"object"}},"openstack:loadbalancer/getFlavorV2:getFlavorV2":{"description":"Use this data source to get the ID of an OpenStack Load Balancer flavor.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst flavor1 = openstack.loadbalancer.getFlavorV2({\n    name: \"flavor_1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nflavor1 = openstack.loadbalancer.get_flavor_v2(name=\"flavor_1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var flavor1 = OpenStack.LoadBalancer.GetFlavorV2.Invoke(new()\n    {\n        Name = \"flavor_1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/loadbalancer\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := loadbalancer.LookupFlavorV2(ctx, \u0026loadbalancer.LookupFlavorV2Args{\n\t\t\tName: pulumi.StringRef(\"flavor_1\"),\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.openstack.loadbalancer.LoadbalancerFunctions;\nimport com.pulumi.openstack.loadbalancer.inputs.GetFlavorV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 flavor1 = LoadbalancerFunctions.getFlavorV2(GetFlavorV2Args.builder()\n            .name(\"flavor_1\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  flavor1:\n    fn::invoke:\n      function: openstack:loadbalancer:getFlavorV2\n      arguments:\n        name: flavor_1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getFlavorV2.\n","properties":{"flavorId":{"type":"string","description":"The ID of the flavor. Exactly one of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`flavorId`\" pulumi-lang-dotnet=\"`FlavorId`\" pulumi-lang-go=\"`flavorId`\" pulumi-lang-python=\"`flavor_id`\" pulumi-lang-yaml=\"`flavorId`\" pulumi-lang-java=\"`flavorId`\"\u003e`flavor_id`\u003c/span\u003e is required to be set.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"The name of the flavor. Exactly one of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`flavorId`\" pulumi-lang-dotnet=\"`FlavorId`\" pulumi-lang-go=\"`flavorId`\" pulumi-lang-python=\"`flavor_id`\" pulumi-lang-yaml=\"`flavorId`\" pulumi-lang-java=\"`flavorId`\"\u003e`flavor_id`\u003c/span\u003e is required to be set.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Load Balancer client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getFlavorV2.\n","properties":{"description":{"description":"The description of the flavor.\n","type":"string"},"enabled":{"description":"Is the flavor enabled.\n","type":"boolean"},"flavorId":{"description":"The ID of the flavor.\n","type":"string"},"flavorProfileId":{"description":"The ID of the flavor profile.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"name":{"description":"The name of the flavor.\n","type":"string"},"region":{"type":"string"}},"required":["description","enabled","flavorId","flavorProfileId","name","region","id"],"type":"object"}},"openstack:loadbalancer/getFlavorprofileV2:getFlavorprofileV2":{"description":"Use this data source to get the ID of an OpenStack Load Balancer flavorprofile.\n\n\u003e **Note:** This usually requires admin privileges.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst fp1 = openstack.loadbalancer.getFlavorprofileV2({\n    name: \"flavorprofile_1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nfp1 = openstack.loadbalancer.get_flavorprofile_v2(name=\"flavorprofile_1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var fp1 = OpenStack.LoadBalancer.GetFlavorprofileV2.Invoke(new()\n    {\n        Name = \"flavorprofile_1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/loadbalancer\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := loadbalancer.LookupFlavorprofileV2(ctx, \u0026loadbalancer.LookupFlavorprofileV2Args{\n\t\t\tName: pulumi.StringRef(\"flavorprofile_1\"),\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.openstack.loadbalancer.LoadbalancerFunctions;\nimport com.pulumi.openstack.loadbalancer.inputs.GetFlavorprofileV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 fp1 = LoadbalancerFunctions.getFlavorprofileV2(GetFlavorprofileV2Args.builder()\n            .name(\"flavorprofile_1\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  fp1:\n    fn::invoke:\n      function: openstack:loadbalancer:getFlavorprofileV2\n      arguments:\n        name: flavorprofile_1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getFlavorprofileV2.\n","properties":{"flavorprofileId":{"type":"string","description":"The ID of the flavorprofile. Conflicts with \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and\n\u003cspan pulumi-lang-nodejs=\"`providerName`\" pulumi-lang-dotnet=\"`ProviderName`\" pulumi-lang-go=\"`providerName`\" pulumi-lang-python=\"`provider_name`\" pulumi-lang-yaml=\"`providerName`\" pulumi-lang-java=\"`providerName`\"\u003e`provider_name`\u003c/span\u003e.\n"},"name":{"type":"string","description":"The name of the flavorprofile. Conflicts with \u003cspan pulumi-lang-nodejs=\"`flavorprofileId`\" pulumi-lang-dotnet=\"`FlavorprofileId`\" pulumi-lang-go=\"`flavorprofileId`\" pulumi-lang-python=\"`flavorprofile_id`\" pulumi-lang-yaml=\"`flavorprofileId`\" pulumi-lang-java=\"`flavorprofileId`\"\u003e`flavorprofile_id`\u003c/span\u003e.\n"},"providerName":{"type":"string","description":"The name of the provider that the flavorprofile uses. Conflicts\nwith \u003cspan pulumi-lang-nodejs=\"`flavorprofileId`\" pulumi-lang-dotnet=\"`FlavorprofileId`\" pulumi-lang-go=\"`flavorprofileId`\" pulumi-lang-python=\"`flavorprofile_id`\" pulumi-lang-yaml=\"`flavorprofileId`\" pulumi-lang-java=\"`flavorprofileId`\"\u003e`flavorprofile_id`\u003c/span\u003e.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Load Balancer client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getFlavorprofileV2.\n","properties":{"flavorData":{"description":"Extra data of the flavorprofile depending on the provider.\n","type":"string"},"flavorprofileId":{"type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"name":{"description":"The name of the flavorprofile.\n","type":"string"},"providerName":{"description":"The name of the provider that the flavorprofile uses.\n","type":"string"},"region":{"type":"string"}},"required":["flavorData","flavorprofileId","name","providerName","region","id"],"type":"object"}},"openstack:loadbalancer/getLbFlavorDeprecated:getLbFlavorDeprecated":{"description":"Use this data source to get the ID of an OpenStack Load Balancer flavor.\n\n\u003e **Note:** This data source is deprecated, please use \u003cspan pulumi-lang-nodejs=\"`openstack.loadbalancer.FlavorV2`\" pulumi-lang-dotnet=\"`openstack.loadbalancer.FlavorV2`\" pulumi-lang-go=\"`loadbalancer.FlavorV2`\" pulumi-lang-python=\"`loadbalancer.FlavorV2`\" pulumi-lang-yaml=\"`openstack.loadbalancer.FlavorV2`\" pulumi-lang-java=\"`openstack.loadbalancer.FlavorV2`\"\u003e`openstack.loadbalancer.FlavorV2`\u003c/span\u003e instead.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst flavor1 = openstack.loadbalancer.getLbFlavorDeprecated({\n    name: \"flavor_1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nflavor1 = openstack.loadbalancer.get_lb_flavor_deprecated(name=\"flavor_1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var flavor1 = OpenStack.LoadBalancer.GetLbFlavorDeprecated.Invoke(new()\n    {\n        Name = \"flavor_1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/loadbalancer\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := loadbalancer.GetLbFlavorDeprecated(ctx, \u0026loadbalancer.GetLbFlavorDeprecatedArgs{\n\t\t\tName: pulumi.StringRef(\"flavor_1\"),\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.openstack.loadbalancer.LoadbalancerFunctions;\nimport com.pulumi.openstack.loadbalancer.inputs.GetLbFlavorDeprecatedArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 flavor1 = LoadbalancerFunctions.getLbFlavorDeprecated(GetLbFlavorDeprecatedArgs.builder()\n            .name(\"flavor_1\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  flavor1:\n    fn::invoke:\n      function: openstack:loadbalancer:getLbFlavorDeprecated\n      arguments:\n        name: flavor_1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getLbFlavorDeprecated.\n","properties":{"flavorId":{"type":"string","description":"The ID of the flavor. Exactly one of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`flavorId`\" pulumi-lang-dotnet=\"`FlavorId`\" pulumi-lang-go=\"`flavorId`\" pulumi-lang-python=\"`flavor_id`\" pulumi-lang-yaml=\"`flavorId`\" pulumi-lang-java=\"`flavorId`\"\u003e`flavor_id`\u003c/span\u003e is required to be set.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"The name of the flavor. Exactly one of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`flavorId`\" pulumi-lang-dotnet=\"`FlavorId`\" pulumi-lang-go=\"`flavorId`\" pulumi-lang-python=\"`flavor_id`\" pulumi-lang-yaml=\"`flavorId`\" pulumi-lang-java=\"`flavorId`\"\u003e`flavor_id`\u003c/span\u003e is required to be set.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Load Balancer client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getLbFlavorDeprecated.\n","properties":{"description":{"description":"The description of the flavor.\n","type":"string"},"enabled":{"description":"Is the flavor enabled.\n","type":"boolean"},"flavorId":{"description":"The ID of the flavor.\n","type":"string"},"flavorProfileId":{"description":"The ID of the flavor profile.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"name":{"description":"The name of the flavor.\n","type":"string"},"region":{"type":"string"}},"required":["description","enabled","flavorId","flavorProfileId","name","region","id"],"type":"object"}},"openstack:loadbalancer/getListenerV2:getListenerV2":{"description":"Use this data source to get the ID of an OpenStack Load Balancer listener.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst listener1 = openstack.loadbalancer.getListenerV2({\n    name: \"listener_1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nlistener1 = openstack.loadbalancer.get_listener_v2(name=\"listener_1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var listener1 = OpenStack.LoadBalancer.GetListenerV2.Invoke(new()\n    {\n        Name = \"listener_1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/loadbalancer\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := loadbalancer.GetListenerV2(ctx, \u0026loadbalancer.GetListenerV2Args{\n\t\t\tName: pulumi.StringRef(\"listener_1\"),\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.openstack.loadbalancer.LoadbalancerFunctions;\nimport com.pulumi.openstack.loadbalancer.inputs.GetListenerV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 listener1 = LoadbalancerFunctions.getListenerV2(GetListenerV2Args.builder()\n            .name(\"listener_1\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  listener1:\n    fn::invoke:\n      function: openstack:loadbalancer:getListenerV2\n      arguments:\n        name: listener_1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getListenerV2.\n","properties":{"listenerId":{"type":"string","description":"The ID of the listener. Exactly one of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`listenerId`\" pulumi-lang-dotnet=\"`ListenerId`\" pulumi-lang-go=\"`listenerId`\" pulumi-lang-python=\"`listener_id`\" pulumi-lang-yaml=\"`listenerId`\" pulumi-lang-java=\"`listenerId`\"\u003e`listener_id`\u003c/span\u003e is required to be set.\n"},"loadbalancerId":{"type":"string","description":"The ID of the load balancer associated with\nthe requested listener.\n"},"name":{"type":"string","description":"The name of the listener. Exactly one of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`listenerId`\" pulumi-lang-dotnet=\"`ListenerId`\" pulumi-lang-go=\"`listenerId`\" pulumi-lang-python=\"`listener_id`\" pulumi-lang-yaml=\"`listenerId`\" pulumi-lang-java=\"`listenerId`\"\u003e`listener_id`\u003c/span\u003e is required to be set.\n"},"protocol":{"type":"string","description":"The protocol of the requested listener.\n"},"protocolPort":{"type":"integer","description":"The port on which the requested listener accepts client traffic.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Load Balancer client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A set of tags applied to the loadbalancer's listener.\nThe loadbalancer' listener will be returned if it has all of the specified tags.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getListenerV2.\n","properties":{"adminStateUp":{"description":"The administrative state of the Listener.\n","type":"boolean"},"allowedCidrs":{"description":"A list of IPv4, IPv6 or mix of both CIDRs.\n","items":{"type":"string"},"type":"array"},"alpnProtocols":{"description":"A list of ALPN protocols.\n","items":{"type":"string"},"type":"array"},"clientAuthentication":{"description":"The TLS client authentication mode.\n","type":"string"},"clientCaTlsContainerRef":{"description":"The ref of the key manager service secret\ncontaining a PEM format client CA certificate bundle for TERMINATED_HTTPS listeners.\n","type":"string"},"clientCrlContainerRef":{"description":"The URI of the key manager service secret\ncontaining a PEM format CA revocation list file for TERMINATED_HTTPS listeners.\n","type":"string"},"connectionLimit":{"description":"The maximum number of connections allowed for the Loadbalancer.\n","type":"integer"},"defaultPool":{"description":"The default pool with which the Listener is associated.\n","type":"string"},"defaultPoolId":{"description":"The UUID of default pool.\n","type":"string"},"defaultTlsContainerRef":{"description":"A reference to a Barbican container of TLS secrets.\n","type":"string"},"description":{"description":"The description of the listener.\n","type":"string"},"hstsIncludeSubdomains":{"description":"Defines whether the includeSubDomains directive\nshould be added to the Strict-Transport-Security HTTP response header.\n","type":"boolean"},"hstsMaxAge":{"description":"The value of the\u003cspan pulumi-lang-nodejs=\" maxAge \" pulumi-lang-dotnet=\" MaxAge \" pulumi-lang-go=\" maxAge \" pulumi-lang-python=\" max_age \" pulumi-lang-yaml=\" maxAge \" pulumi-lang-java=\" maxAge \"\u003e max_age \u003c/span\u003edirective for the\nStrict-Transport-Security HTTP response header.\n","type":"integer"},"hstsPreload":{"description":"Defines whether the preload directive should be added to the\nStrict-Transport-Security HTTP response header.\n","type":"boolean"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"insertHeaders":{"additionalProperties":{"type":"string"},"description":"A dictionary of optional headers to insert into the request\nbefore it is sent to the backend member.\n","type":"object"},"l7policies":{"description":"L7policies are the L7 policies which are part of this listener.\n","items":{"$ref":"#/types/openstack:loadbalancer/getListenerV2L7policy:getListenerV2L7policy"},"type":"array"},"listenerId":{"type":"string"},"loadbalancerId":{"type":"string"},"loadbalancers":{"description":"A list of load balancer IDs.\n","items":{"$ref":"#/types/openstack:loadbalancer/getListenerV2Loadbalancer:getListenerV2Loadbalancer"},"type":"array"},"name":{"description":"The name of the listener.\n","type":"string"},"operatingStatus":{"description":"The operating status of the resource.\n","type":"string"},"pools":{"description":"Pools are the pools which are part of this listener.\n","items":{"$ref":"#/types/openstack:loadbalancer/getListenerV2Pool:getListenerV2Pool"},"type":"array"},"projectId":{"description":"The owner (project/tenant) ID of the listener.\n","type":"string"},"protocol":{"description":"The protocol to loadbalance.\n","type":"string"},"protocolPort":{"description":"The port on which to listen to client traffic that is\nassociated with the Loadbalancer.\n","type":"integer"},"provisioningStatus":{"description":"The provisioning status of the Listener.\n","type":"string"},"region":{"type":"string"},"sniContainerRefs":{"description":"The list of references to TLS secrets.\n","items":{"type":"string"},"type":"array"},"tags":{"description":"Tags is a list of resource tags.\n","items":{"type":"string"},"type":"array"},"timeoutClientData":{"description":"Frontend client inactivity timeout in milliseconds.\n","type":"integer"},"timeoutMemberConnect":{"description":"Backend member connection timeout in milliseconds.\n","type":"integer"},"timeoutMemberData":{"description":"Backend member inactivity timeout in milliseconds.\n","type":"integer"},"timeoutTcpInspect":{"description":"Time, in milliseconds, to wait for additional TCP\npackets for content inspection.\n","type":"integer"},"tlsCiphers":{"description":"List of ciphers in OpenSSL format (colon-separated).\n","type":"string"},"tlsVersions":{"description":"A list of TLS protocol versions.\n","items":{"type":"string"},"type":"array"}},"required":["adminStateUp","allowedCidrs","alpnProtocols","clientAuthentication","clientCaTlsContainerRef","clientCrlContainerRef","connectionLimit","defaultPool","defaultPoolId","defaultTlsContainerRef","description","hstsIncludeSubdomains","hstsMaxAge","hstsPreload","insertHeaders","l7policies","listenerId","loadbalancerId","loadbalancers","name","operatingStatus","pools","projectId","protocol","protocolPort","provisioningStatus","region","sniContainerRefs","tags","timeoutClientData","timeoutMemberConnect","timeoutMemberData","timeoutTcpInspect","tlsCiphers","tlsVersions","id"],"type":"object"}},"openstack:loadbalancer/getLoadbalancerV2:getLoadbalancerV2":{"description":"Use this data source to get the ID of an OpenStack Load Balancer.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst loadbalancer1 = openstack.loadbalancer.getLoadbalancerV2({\n    name: \"loadbalancer_1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nloadbalancer1 = openstack.loadbalancer.get_loadbalancer_v2(name=\"loadbalancer_1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var loadbalancer1 = OpenStack.LoadBalancer.GetLoadbalancerV2.Invoke(new()\n    {\n        Name = \"loadbalancer_1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/loadbalancer\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := loadbalancer.GetLoadbalancerV2(ctx, \u0026loadbalancer.GetLoadbalancerV2Args{\n\t\t\tName: pulumi.StringRef(\"loadbalancer_1\"),\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.openstack.loadbalancer.LoadbalancerFunctions;\nimport com.pulumi.openstack.loadbalancer.inputs.GetLoadbalancerV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 loadbalancer1 = LoadbalancerFunctions.getLoadbalancerV2(GetLoadbalancerV2Args.builder()\n            .name(\"loadbalancer_1\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  loadbalancer1:\n    fn::invoke:\n      function: openstack:loadbalancer:getLoadbalancerV2\n      arguments:\n        name: loadbalancer_1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getLoadbalancerV2.\n","properties":{"description":{"type":"string","description":"The human-readable description for the loadbalancer.\n"},"loadbalancerId":{"type":"string","description":"The ID of the loadbalancer. Exactly one of\n\u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`loadbalancerId`\" pulumi-lang-dotnet=\"`LoadbalancerId`\" pulumi-lang-go=\"`loadbalancerId`\" pulumi-lang-python=\"`loadbalancer_id`\" pulumi-lang-yaml=\"`loadbalancerId`\" pulumi-lang-java=\"`loadbalancerId`\"\u003e`loadbalancer_id`\u003c/span\u003e is required to be set.\n"},"name":{"type":"string","description":"The name of the loadbalancer. Exactly one of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`loadbalancerId`\" pulumi-lang-dotnet=\"`LoadbalancerId`\" pulumi-lang-go=\"`loadbalancerId`\" pulumi-lang-python=\"`loadbalancer_id`\" pulumi-lang-yaml=\"`loadbalancerId`\" pulumi-lang-java=\"`loadbalancerId`\"\u003e`loadbalancer_id`\u003c/span\u003e is required to be set.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Load Balancer client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A set of tags applied to the loadbalancer. The load balancer\nwill be returned if it has all of the specified tags.\n"},"tagsAnies":{"type":"array","items":{"type":"string"},"description":"A set of tags. The load balancer will be returned if\nit has at least one of the specified tags.\n"},"tagsNotAnies":{"type":"array","items":{"type":"string"},"description":"A set of tags. The load balancer will be returned\nif it does not have any of the specified tags.\n"},"tagsNots":{"type":"array","items":{"type":"string"},"description":"A set of tags. The load balancer will be returned if\nit does not have all of the specified tags.\n"},"vipAddress":{"type":"string","description":"The IP address of the loadbalancer's virtual IP (VIP).\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getLoadbalancerV2.\n","properties":{"additionalVips":{"description":"A list of additional VIP IP addresses associated with\nthe loadbalancer.\n","items":{"type":"string"},"type":"array"},"adminStateUp":{"description":"The administrative state of the loadbalancer (true/false).\n","type":"boolean"},"availabilityZone":{"description":"The availability zone of the loadbalancer.\n","type":"string"},"description":{"description":"The description of the loadbalancer.\n","type":"string"},"flavorId":{"description":"The flavor ID used by the loadbalancer.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"listeners":{"description":"A list of listener IDs (UUIDs) associated with the loadbalancer.\n","items":{"$ref":"#/types/openstack:loadbalancer/getLoadbalancerV2Listener:getLoadbalancerV2Listener"},"type":"array"},"loadbalancerId":{"type":"string"},"loadbalancerProvider":{"description":"The loadbalancer driver/provider used by Octavia\n(for example, \u003cspan pulumi-lang-nodejs=\"`amphora`\" pulumi-lang-dotnet=\"`Amphora`\" pulumi-lang-go=\"`amphora`\" pulumi-lang-python=\"`amphora`\" pulumi-lang-yaml=\"`amphora`\" pulumi-lang-java=\"`amphora`\"\u003e`amphora`\u003c/span\u003e).\n","type":"string"},"name":{"description":"The name of the loadbalancer.\n","type":"string"},"operatingStatus":{"description":"The operating status of the loadbalancer.\n","type":"string"},"pools":{"description":"A list of pool IDs (UUIDs) associated with the loadbalancer.\n","items":{"$ref":"#/types/openstack:loadbalancer/getLoadbalancerV2Pool:getLoadbalancerV2Pool"},"type":"array"},"projectId":{"description":"The owner (project/tenant) ID of the loadbalancer.\n","type":"string"},"provisioningStatus":{"description":"The provisioning status of the loadbalancer.\n","type":"string"},"region":{"type":"string"},"tags":{"description":"A set of tags applied to the loadbalancer.\n","items":{"type":"string"},"type":"array"},"tagsAnies":{"items":{"type":"string"},"type":"array"},"tagsNotAnies":{"items":{"type":"string"},"type":"array"},"tagsNots":{"items":{"type":"string"},"type":"array"},"vipAddress":{"description":"The IP address of the loadbalancer’s virtual IP (VIP).\n","type":"string"},"vipNetworkId":{"description":"The network ID associated with the VIP.\n","type":"string"},"vipPortId":{"description":"The port ID associated with the VIP.\n","type":"string"},"vipQosPolicyId":{"description":"The QoS policy ID associated with the VIP, if any.\n","type":"string"},"vipSubnetId":{"description":"The subnet ID associated with the VIP.\n","type":"string"}},"required":["additionalVips","adminStateUp","availabilityZone","description","flavorId","listeners","loadbalancerId","loadbalancerProvider","name","operatingStatus","pools","projectId","provisioningStatus","region","tags","vipAddress","vipNetworkId","vipPortId","vipQosPolicyId","vipSubnetId","id"],"type":"object"}},"openstack:loadbalancer/getPoolV2:getPoolV2":{"description":"Use this data source to get the ID of an OpenStack Load Balancer pool.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst pool1 = openstack.loadbalancer.getPoolV2({\n    name: \"pool_1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\npool1 = openstack.loadbalancer.get_pool_v2(name=\"pool_1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var pool1 = OpenStack.LoadBalancer.GetPoolV2.Invoke(new()\n    {\n        Name = \"pool_1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/loadbalancer\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := loadbalancer.GetPoolV2(ctx, \u0026loadbalancer.GetPoolV2Args{\n\t\t\tName: pulumi.StringRef(\"pool_1\"),\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.openstack.loadbalancer.LoadbalancerFunctions;\nimport com.pulumi.openstack.loadbalancer.inputs.GetPoolV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 pool1 = LoadbalancerFunctions.getPoolV2(GetPoolV2Args.builder()\n            .name(\"pool_1\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  pool1:\n    fn::invoke:\n      function: openstack:loadbalancer:getPoolV2\n      arguments:\n        name: pool_1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getPoolV2.\n","properties":{"lbMethod":{"type":"string","description":"The load balancing algorithm to distribute traffic to the\npool's members.\n"},"loadbalancerId":{"type":"string","description":"The ID of the load balancer associated with\nthe requested pool.\n"},"name":{"type":"string","description":"The name of the pool. Exactly one of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`poolId`\" pulumi-lang-dotnet=\"`PoolId`\" pulumi-lang-go=\"`poolId`\" pulumi-lang-python=\"`pool_id`\" pulumi-lang-yaml=\"`poolId`\" pulumi-lang-java=\"`poolId`\"\u003e`pool_id`\u003c/span\u003e\nis required to be set.\n"},"poolId":{"type":"string","description":"The ID of the pool. Exactly one of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`poolId`\" pulumi-lang-dotnet=\"`PoolId`\" pulumi-lang-go=\"`poolId`\" pulumi-lang-python=\"`pool_id`\" pulumi-lang-yaml=\"`poolId`\" pulumi-lang-java=\"`poolId`\"\u003e`pool_id`\u003c/span\u003e\nis required to be set.\n"},"protocol":{"type":"string","description":"The protocol of the requested pool.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Load Balancer\nclient. If omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A set of tags applied to the loadbalancer's pool. The\nloadbalancer' pool will be returned if it has all of the specified tags.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getPoolV2.\n","properties":{"adminStateUp":{"description":"The administrative state of the Pool, which is up (true)\nor down (false).\n","type":"boolean"},"alpnProtocols":{"description":"A list of ALPN protocols.\n","items":{"type":"string"},"type":"array"},"caTlsContainerRef":{"description":"The reference of the key manager service secret\ncontaining a PEM format CA certificate bundle for\u003cspan pulumi-lang-nodejs=\" tlsEnabled \" pulumi-lang-dotnet=\" TlsEnabled \" pulumi-lang-go=\" tlsEnabled \" pulumi-lang-python=\" tls_enabled \" pulumi-lang-yaml=\" tlsEnabled \" pulumi-lang-java=\" tlsEnabled \"\u003e tls_enabled \u003c/span\u003epools.\n","type":"string"},"crlContainerRef":{"description":"The reference of the key manager service secret\ncontaining a PEM format CA revocation list file for\u003cspan pulumi-lang-nodejs=\" tlsEnabled \" pulumi-lang-dotnet=\" TlsEnabled \" pulumi-lang-go=\" tlsEnabled \" pulumi-lang-python=\" tls_enabled \" pulumi-lang-yaml=\" tlsEnabled \" pulumi-lang-java=\" tlsEnabled \"\u003e tls_enabled \u003c/span\u003epools.\n","type":"string"},"description":{"description":"The description of the pool.\n","type":"string"},"healthmonitorId":{"description":"The ID of associated health monitor.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"lbMethod":{"description":"The load-balancer algorithm, which is round-robin,\nleast-connections, and so on.\n","type":"string"},"listeners":{"description":"A list of listeners objects IDs.\n","items":{"$ref":"#/types/openstack:loadbalancer/getPoolV2Listener:getPoolV2Listener"},"type":"array"},"loadbalancerId":{"type":"string"},"loadbalancers":{"description":"A list of load balancer objects IDs.\n","items":{"$ref":"#/types/openstack:loadbalancer/getPoolV2Loadbalancer:getPoolV2Loadbalancer"},"type":"array"},"members":{"description":"A list of member objects IDs.\n","items":{"$ref":"#/types/openstack:loadbalancer/getPoolV2Member:getPoolV2Member"},"type":"array"},"name":{"description":"The name of the pool.\n","type":"string"},"operatingStatus":{"description":"The operating status of the pool.\n","type":"string"},"poolId":{"type":"string"},"projectId":{"description":"The owner (project/tenant) ID of the pool.\n","type":"string"},"protocol":{"description":"The protocol to loadbalance.\n","type":"string"},"provisioningStatus":{"description":"The provisioning status of the pool.\n","type":"string"},"region":{"type":"string"},"sessionPersistences":{"description":"Indicates whether connections in the same session\nwill be processed by the same Pool member or not.\n","items":{"$ref":"#/types/openstack:loadbalancer/getPoolV2SessionPersistence:getPoolV2SessionPersistence"},"type":"array"},"tags":{"description":"Tags is a list of resource tags.\n","items":{"type":"string"},"type":"array"},"tlsCiphers":{"description":"List of ciphers in OpenSSL format (colon-separated).\n","type":"string"},"tlsContainerRef":{"description":"The reference to the key manager service secret\ncontaining a PKCS12 format certificate/key bundle for\u003cspan pulumi-lang-nodejs=\" tlsEnabled \" pulumi-lang-dotnet=\" TlsEnabled \" pulumi-lang-go=\" tlsEnabled \" pulumi-lang-python=\" tls_enabled \" pulumi-lang-yaml=\" tlsEnabled \" pulumi-lang-java=\" tlsEnabled \"\u003e tls_enabled \u003c/span\u003epools for\nTLS client authentication to the member servers.\n","type":"string"},"tlsEnabled":{"description":"When true connections to backend member servers will use\nTLS encryption.\n","type":"boolean"},"tlsVersions":{"description":"A list of TLS protocol versions.\n","items":{"type":"string"},"type":"array"}},"required":["adminStateUp","alpnProtocols","caTlsContainerRef","crlContainerRef","description","healthmonitorId","lbMethod","listeners","loadbalancerId","loadbalancers","members","name","operatingStatus","poolId","projectId","protocol","provisioningStatus","region","sessionPersistences","tags","tlsCiphers","tlsContainerRef","tlsEnabled","tlsVersions","id"],"type":"object"}},"openstack:networking/getAddressScope:getAddressScope":{"description":"Use this data source to get the ID of an available OpenStack address-scope.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst publicAddressscope = openstack.networking.getAddressScope({\n    name: \"public_addressscope\",\n    shared: true,\n    ipVersion: 4,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\npublic_addressscope = openstack.networking.get_address_scope(name=\"public_addressscope\",\n    shared=True,\n    ip_version=4)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var publicAddressscope = OpenStack.Networking.GetAddressScope.Invoke(new()\n    {\n        Name = \"public_addressscope\",\n        Shared = true,\n        IpVersion = 4,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networking.LookupAddressScope(ctx, \u0026networking.LookupAddressScopeArgs{\n\t\t\tName:      pulumi.StringRef(\"public_addressscope\"),\n\t\t\tShared:    pulumi.BoolRef(true),\n\t\t\tIpVersion: pulumi.IntRef(4),\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.openstack.networking.NetworkingFunctions;\nimport com.pulumi.openstack.networking.inputs.GetAddressScopeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 publicAddressscope = NetworkingFunctions.getAddressScope(GetAddressScopeArgs.builder()\n            .name(\"public_addressscope\")\n            .shared(true)\n            .ipVersion(4)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  publicAddressscope:\n    fn::invoke:\n      function: openstack:networking:getAddressScope\n      arguments:\n        name: public_addressscope\n        shared: true\n        ipVersion: 4\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getAddressScope.\n","properties":{"ipVersion":{"type":"integer","description":"IP version.\n"},"name":{"type":"string","description":"Name of the address-scope.\n"},"projectId":{"type":"string","description":"The owner of the address-scope.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Neutron client.\nA Neutron client is needed to retrieve address-scopes. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"},"shared":{"type":"boolean","description":"Indicates whether this address-scope is shared across\nall projects.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getAddressScope.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"ipVersion":{"description":"See Argument Reference above.\n","type":"integer"},"name":{"description":"See Argument Reference above.\n","type":"string"},"projectId":{"description":"See Argument Reference above.\n","type":"string"},"region":{"type":"string"},"shared":{"description":"See Argument Reference above.\n","type":"boolean"}},"required":["id"],"type":"object"}},"openstack:networking/getFloatingIp:getFloatingIp":{"description":"Use this data source to get the ID of an available OpenStack floating IP.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst floatingip1 = openstack.networking.getFloatingIp({\n    address: \"192.168.0.4\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nfloatingip1 = openstack.networking.get_floating_ip(address=\"192.168.0.4\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var floatingip1 = OpenStack.Networking.GetFloatingIp.Invoke(new()\n    {\n        Address = \"192.168.0.4\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networking.LookupFloatingIp(ctx, \u0026networking.LookupFloatingIpArgs{\n\t\t\tAddress: pulumi.StringRef(\"192.168.0.4\"),\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.openstack.networking.NetworkingFunctions;\nimport com.pulumi.openstack.networking.inputs.GetFloatingIpArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 floatingip1 = NetworkingFunctions.getFloatingIp(GetFloatingIpArgs.builder()\n            .address(\"192.168.0.4\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  floatingip1:\n    fn::invoke:\n      function: openstack:networking:getFloatingIp\n      arguments:\n        address: 192.168.0.4\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getFloatingIp.\n","properties":{"address":{"type":"string","description":"The IP address of the floating IP.\n"},"description":{"type":"string","description":"Human-readable description of the floating IP.\n"},"fixedIp":{"type":"string","description":"The specific IP address of the internal port which should be associated with the floating IP.\n"},"pool":{"type":"string","description":"The ID of the network from which the floating IP belongs to.\n"},"portId":{"type":"string","description":"The ID of the port the floating IP is attached.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Neutron client.\nA Neutron client is needed to retrieve floating IP ids. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"},"status":{"type":"string","description":"status of the floating IP (ACTIVE/DOWN).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The list of floating IP tags to filter.\n"},"tenantId":{"type":"string","description":"The owner of the floating IP.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getFloatingIp.\n","properties":{"address":{"type":"string"},"allTags":{"description":"A set of string tags applied on the floating IP.\n","items":{"type":"string"},"type":"array"},"description":{"type":"string"},"dnsDomain":{"description":"The floating IP DNS domain. Available, when Neutron DNS\nextension is enabled.\n","type":"string"},"dnsName":{"description":"The floating IP DNS name. Available, when Neutron DNS extension\nis enabled.\n","type":"string"},"fixedIp":{"type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"pool":{"type":"string"},"portId":{"type":"string"},"region":{"type":"string"},"status":{"type":"string"},"tags":{"items":{"type":"string"},"type":"array"},"tenantId":{"type":"string"}},"required":["allTags","dnsDomain","dnsName","id"],"type":"object"}},"openstack:networking/getNetwork:getNetwork":{"description":"Use this data source to get the ID of an available OpenStack network.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst network = openstack.networking.getNetwork({\n    name: \"tf_test_network\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nnetwork = openstack.networking.get_network(name=\"tf_test_network\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var network = OpenStack.Networking.GetNetwork.Invoke(new()\n    {\n        Name = \"tf_test_network\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networking.LookupNetwork(ctx, \u0026networking.LookupNetworkArgs{\n\t\t\tName: pulumi.StringRef(\"tf_test_network\"),\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.openstack.networking.NetworkingFunctions;\nimport com.pulumi.openstack.networking.inputs.GetNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 network = NetworkingFunctions.getNetwork(GetNetworkArgs.builder()\n            .name(\"tf_test_network\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  network:\n    fn::invoke:\n      function: openstack:networking:getNetwork\n      arguments:\n        name: tf_test_network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getNetwork.\n","properties":{"description":{"type":"string","description":"Human-readable description of the network.\n"},"external":{"type":"boolean","description":"The external routing facility of the network.\n"},"matchingSubnetCidr":{"type":"string","description":"The CIDR of a subnet within the network.\n"},"mtu":{"type":"integer","description":"The network MTU to filter. Available, when Neutron `net-mtu`\nextension is enabled.\n"},"name":{"type":"string","description":"The name of the network.\n"},"networkId":{"type":"string","description":"The ID of the network.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Neutron client.\nA Neutron client is needed to retrieve networks ids. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n","willReplaceOnChanges":true},"status":{"type":"string","description":"The status of the network.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The list of network tags to filter.\n"},"tenantId":{"type":"string","description":"The owner of the network.\n"},"transparentVlan":{"type":"boolean","description":"The VLAN transparent attribute for the\nnetwork.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getNetwork.\n","properties":{"adminStateUp":{"description":"The administrative state of the network.\n","type":"string"},"allTags":{"description":"The set of string tags applied on the network.\n","items":{"type":"string"},"type":"array"},"availabilityZoneHints":{"description":"The availability zone candidates for the network.\n","items":{"type":"string"},"type":"array"},"description":{"description":"See Argument Reference above.\n","type":"string"},"dnsDomain":{"description":"The network DNS domain. Available, when Neutron DNS extension\nis enabled\n","type":"string"},"external":{"description":"See Argument Reference above.\n","type":"boolean"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"matchingSubnetCidr":{"type":"string"},"mtu":{"description":"See Argument Reference above.\n","type":"integer"},"name":{"description":"See Argument Reference above.\n","type":"string"},"networkId":{"type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"segments":{"description":"An array of one or more provider segment objects.\n","items":{"$ref":"#/types/openstack:networking/getNetworkSegment:getNetworkSegment"},"type":"array"},"shared":{"description":"Specifies whether the network resource can be accessed by any\ntenant or not.\n","type":"string"},"status":{"type":"string"},"subnets":{"description":"A list of subnet IDs belonging to the network.\n","items":{"type":"string"},"type":"array"},"tags":{"items":{"type":"string"},"type":"array"},"tenantId":{"type":"string"},"transparentVlan":{"description":"See Argument Reference above.\n","type":"boolean"}},"required":["adminStateUp","allTags","availabilityZoneHints","dnsDomain","region","segments","shared","subnets","id"],"type":"object"}},"openstack:networking/getPort:getPort":{"description":"Use this data source to get the ID of an available OpenStack port.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst port1 = openstack.networking.getPort({\n    name: \"port_1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nport1 = openstack.networking.get_port(name=\"port_1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var port1 = OpenStack.Networking.GetPort.Invoke(new()\n    {\n        Name = \"port_1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networking.LookupPort(ctx, \u0026networking.LookupPortArgs{\n\t\t\tName: pulumi.StringRef(\"port_1\"),\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.openstack.networking.NetworkingFunctions;\nimport com.pulumi.openstack.networking.inputs.GetPortArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 port1 = NetworkingFunctions.getPort(GetPortArgs.builder()\n            .name(\"port_1\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  port1:\n    fn::invoke:\n      function: openstack:networking:getPort\n      arguments:\n        name: port_1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getPort.\n","properties":{"adminStateUp":{"type":"boolean","description":"The administrative state of the port.\n"},"description":{"type":"string","description":"Human-readable description of the port.\n"},"deviceId":{"type":"string","description":"The ID of the device the port belongs to.\n"},"deviceOwner":{"type":"string","description":"The device owner of the port.\n"},"dnsName":{"type":"string","description":"The port DNS name to filter. Available, when Neutron\nDNS extension is enabled.\n"},"fixedIp":{"type":"string","description":"The port IP address filter.\n"},"macAddress":{"type":"string","description":"The MAC address of the port.\n"},"name":{"type":"string","description":"The name of the port.\n"},"networkId":{"type":"string","description":"The ID of the network the port belongs to.\n"},"portId":{"type":"string","description":"The ID of the port.\n"},"projectId":{"type":"string","description":"The owner of the port.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Neutron client.\nA Neutron client is needed to retrieve port ids. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"},"securityGroupIds":{"type":"array","items":{"type":"string"},"description":"The list of port security group IDs to filter.\n"},"status":{"type":"string","description":"The status of the port.\n","willReplaceOnChanges":true},"tags":{"type":"array","items":{"type":"string"},"description":"The list of port tags to filter.\n"},"tenantId":{"type":"string"}},"type":"object"},"outputs":{"description":"A collection of values returned by getPort.\n","properties":{"adminStateUp":{"description":"See Argument Reference above.\n","type":"boolean"},"allFixedIps":{"description":"The collection of Fixed IP addresses on the port in the\norder returned by the Network v2 API.\n","items":{"type":"string"},"type":"array"},"allSecurityGroupIds":{"description":"The set of security group IDs applied on the port.\n","items":{"type":"string"},"type":"array"},"allTags":{"description":"The set of string tags applied on the port.\n","items":{"type":"string"},"type":"array"},"allowedAddressPairs":{"description":"An IP/MAC Address pair of additional IP\naddresses that can be active on this port. The structure is described\nbelow.\n","items":{"$ref":"#/types/openstack:networking/getPortAllowedAddressPair:getPortAllowedAddressPair"},"type":"array"},"bindings":{"description":"The port binding information. The structure is described below.\n","items":{"$ref":"#/types/openstack:networking/getPortBinding:getPortBinding"},"type":"array"},"description":{"description":"See Argument Reference above.\n","type":"string"},"deviceId":{"description":"See Argument Reference above.\n","type":"string"},"deviceOwner":{"description":"See Argument Reference above.\n","type":"string"},"dnsAssignments":{"description":"The list of maps representing port DNS assignments.\n","items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array"},"dnsName":{"description":"See Argument Reference above.\n","type":"string"},"extraDhcpOptions":{"description":"An extra DHCP option configured on the port.\nThe structure is described below.\n","items":{"$ref":"#/types/openstack:networking/getPortExtraDhcpOption:getPortExtraDhcpOption"},"type":"array"},"fixedIp":{"type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"macAddress":{"description":"The additional MAC address.\n","type":"string"},"name":{"description":"Name of the DHCP option.\n","type":"string"},"networkId":{"description":"See Argument Reference above.\n","type":"string"},"portId":{"description":"See Argument Reference above.\n","type":"string"},"projectId":{"description":"See Argument Reference above.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"securityGroupIds":{"items":{"type":"string"},"type":"array"},"status":{"type":"string"},"tags":{"items":{"type":"string"},"type":"array"},"tenantId":{"type":"string"}},"required":["allFixedIps","allSecurityGroupIds","allTags","allowedAddressPairs","bindings","dnsAssignments","extraDhcpOptions","id"],"type":"object"}},"openstack:networking/getPortIds:getPortIds":{"description":"Use this data source to get a list of Openstack Port IDs matching the\nspecified criteria.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst ports = openstack.networking.getPortIds({\n    name: \"port\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nports = openstack.networking.get_port_ids(name=\"port\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ports = OpenStack.Networking.GetPortIds.Invoke(new()\n    {\n        Name = \"port\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networking.GetPortIds(ctx, \u0026networking.GetPortIdsArgs{\n\t\t\tName: pulumi.StringRef(\"port\"),\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.openstack.networking.NetworkingFunctions;\nimport com.pulumi.openstack.networking.inputs.GetPortIdsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 ports = NetworkingFunctions.getPortIds(GetPortIdsArgs.builder()\n            .name(\"port\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  ports:\n    fn::invoke:\n      function: openstack:networking:getPortIds\n      arguments:\n        name: port\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getPortIds.\n","properties":{"adminStateUp":{"type":"boolean","description":"The administrative state of the port.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"Human-readable description of the port.\n","willReplaceOnChanges":true},"deviceId":{"type":"string","description":"The ID of the device the port belongs to.\n","willReplaceOnChanges":true},"deviceOwner":{"type":"string","description":"The device owner of the port.\n","willReplaceOnChanges":true},"dnsName":{"type":"string","willReplaceOnChanges":true},"fixedIp":{"type":"string","description":"The port IP address filter.\n","willReplaceOnChanges":true},"macAddress":{"type":"string","description":"The MAC address of the port.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"The name of the port.\n","willReplaceOnChanges":true},"networkId":{"type":"string","description":"The ID of the network the port belongs to.\n","willReplaceOnChanges":true},"projectId":{"type":"string","description":"The owner of the port.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Neutron client.\nA Neutron client is needed to retrieve port ids. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n","willReplaceOnChanges":true},"securityGroupIds":{"type":"array","items":{"type":"string"},"description":"The list of port security group IDs to filter.\n","willReplaceOnChanges":true},"sortDirection":{"type":"string","description":"Order the results in either \u003cspan pulumi-lang-nodejs=\"`asc`\" pulumi-lang-dotnet=\"`Asc`\" pulumi-lang-go=\"`asc`\" pulumi-lang-python=\"`asc`\" pulumi-lang-yaml=\"`asc`\" pulumi-lang-java=\"`asc`\"\u003e`asc`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`desc`\" pulumi-lang-dotnet=\"`Desc`\" pulumi-lang-go=\"`desc`\" pulumi-lang-python=\"`desc`\" pulumi-lang-yaml=\"`desc`\" pulumi-lang-java=\"`desc`\"\u003e`desc`\u003c/span\u003e.\nDefaults to none.\n","willReplaceOnChanges":true},"sortKey":{"type":"string","description":"Sort ports based on a certain key. Defaults to none.\n","willReplaceOnChanges":true},"status":{"type":"string","description":"The status of the port.\n","willReplaceOnChanges":true},"tags":{"type":"array","items":{"type":"string"},"description":"The list of port tags to filter.\n","willReplaceOnChanges":true},"tenantId":{"type":"string","willReplaceOnChanges":true}},"type":"object"},"outputs":{"description":"A collection of values returned by getPortIds.\n","properties":{"adminStateUp":{"type":"boolean"},"description":{"type":"string"},"deviceId":{"type":"string"},"deviceOwner":{"type":"string"},"dnsName":{"type":"string"},"fixedIp":{"type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"ids":{"items":{"type":"string"},"type":"array"},"macAddress":{"type":"string"},"name":{"type":"string"},"networkId":{"type":"string"},"projectId":{"type":"string"},"region":{"type":"string"},"securityGroupIds":{"items":{"type":"string"},"type":"array"},"sortDirection":{"type":"string"},"sortKey":{"type":"string"},"status":{"type":"string"},"tags":{"items":{"type":"string"},"type":"array"},"tenantId":{"type":"string"}},"required":["ids","id"],"type":"object"}},"openstack:networking/getQosBandwidthLimitRule:getQosBandwidthLimitRule":{"description":"Use this data source to get the ID of an available OpenStack QoS bandwidth limit rule.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst qosBandwidthLimitRule1 = openstack.networking.getQosBandwidthLimitRule({\n    maxKbps: 300,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nqos_bandwidth_limit_rule1 = openstack.networking.get_qos_bandwidth_limit_rule(max_kbps=300)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var qosBandwidthLimitRule1 = OpenStack.Networking.GetQosBandwidthLimitRule.Invoke(new()\n    {\n        MaxKbps = 300,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networking.LookupQosBandwidthLimitRule(ctx, \u0026networking.LookupQosBandwidthLimitRuleArgs{\n\t\t\tMaxKbps: pulumi.IntRef(300),\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.openstack.networking.NetworkingFunctions;\nimport com.pulumi.openstack.networking.inputs.GetQosBandwidthLimitRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 qosBandwidthLimitRule1 = NetworkingFunctions.getQosBandwidthLimitRule(GetQosBandwidthLimitRuleArgs.builder()\n            .maxKbps(300)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  qosBandwidthLimitRule1:\n    fn::invoke:\n      function: openstack:networking:getQosBandwidthLimitRule\n      arguments:\n        maxKbps: 300\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getQosBandwidthLimitRule.\n","properties":{"maxBurstKbps":{"type":"integer","description":"The maximum burst size in kilobits of a QoS bandwidth limit rule.\n"},"maxKbps":{"type":"integer","description":"The maximum kilobits per second of a QoS bandwidth limit rule.\n"},"qosPolicyId":{"type":"string","description":"The QoS policy reference.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron QoS bandwidth limit rule. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n","willReplaceOnChanges":true}},"type":"object","required":["qosPolicyId"]},"outputs":{"description":"A collection of values returned by getQosBandwidthLimitRule.\n","properties":{"direction":{"description":"See Argument Reference above.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"maxBurstKbps":{"description":"See Argument Reference above.\n","type":"integer"},"maxKbps":{"description":"See Argument Reference above.\n","type":"integer"},"qosPolicyId":{"description":"See Argument Reference above.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"}},"required":["direction","maxBurstKbps","maxKbps","qosPolicyId","region","id"],"type":"object"}},"openstack:networking/getQosDscpMarkingRule:getQosDscpMarkingRule":{"description":"Use this data source to get the ID of an available OpenStack QoS DSCP marking rule.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst qosDscpMarkingRule1 = openstack.networking.getQosDscpMarkingRule({\n    dscpMark: 26,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nqos_dscp_marking_rule1 = openstack.networking.get_qos_dscp_marking_rule(dscp_mark=26)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var qosDscpMarkingRule1 = OpenStack.Networking.GetQosDscpMarkingRule.Invoke(new()\n    {\n        DscpMark = 26,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networking.LookupQosDscpMarkingRule(ctx, \u0026networking.LookupQosDscpMarkingRuleArgs{\n\t\t\tDscpMark: pulumi.IntRef(26),\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.openstack.networking.NetworkingFunctions;\nimport com.pulumi.openstack.networking.inputs.GetQosDscpMarkingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 qosDscpMarkingRule1 = NetworkingFunctions.getQosDscpMarkingRule(GetQosDscpMarkingRuleArgs.builder()\n            .dscpMark(26)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  qosDscpMarkingRule1:\n    fn::invoke:\n      function: openstack:networking:getQosDscpMarkingRule\n      arguments:\n        dscpMark: 26\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getQosDscpMarkingRule.\n","properties":{"dscpMark":{"type":"integer","description":"The value of a DSCP mark.\n"},"qosPolicyId":{"type":"string","description":"The QoS policy reference.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron QoS DSCP marking rule. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n","willReplaceOnChanges":true}},"type":"object","required":["qosPolicyId"]},"outputs":{"description":"A collection of values returned by getQosDscpMarkingRule.\n","properties":{"dscpMark":{"description":"See Argument Reference above.\n","type":"integer"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"qosPolicyId":{"description":"See Argument Reference above.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"}},"required":["dscpMark","qosPolicyId","region","id"],"type":"object"}},"openstack:networking/getQosMinimumBandwidthRule:getQosMinimumBandwidthRule":{"description":"Use this data source to get the ID of an available OpenStack QoS minimum bandwidth rule.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst qosMinBwRule1 = openstack.networking.getQosMinimumBandwidthRule({\n    minKbps: 2000,\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nqos_min_bw_rule1 = openstack.networking.get_qos_minimum_bandwidth_rule(min_kbps=2000)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var qosMinBwRule1 = OpenStack.Networking.GetQosMinimumBandwidthRule.Invoke(new()\n    {\n        MinKbps = 2000,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networking.LookupQosMinimumBandwidthRule(ctx, \u0026networking.LookupQosMinimumBandwidthRuleArgs{\n\t\t\tMinKbps: pulumi.IntRef(2000),\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.openstack.networking.NetworkingFunctions;\nimport com.pulumi.openstack.networking.inputs.GetQosMinimumBandwidthRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 qosMinBwRule1 = NetworkingFunctions.getQosMinimumBandwidthRule(GetQosMinimumBandwidthRuleArgs.builder()\n            .minKbps(2000)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  qosMinBwRule1:\n    fn::invoke:\n      function: openstack:networking:getQosMinimumBandwidthRule\n      arguments:\n        minKbps: 2000\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getQosMinimumBandwidthRule.\n","properties":{"direction":{"type":"string"},"minKbps":{"type":"integer","description":"The value of a minimum kbps bandwidth.\n"},"qosPolicyId":{"type":"string","description":"The QoS policy reference.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to create a Neutron QoS minimum bandwidth rule. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n","willReplaceOnChanges":true}},"type":"object","required":["qosPolicyId"]},"outputs":{"description":"A collection of values returned by getQosMinimumBandwidthRule.\n","properties":{"direction":{"type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"minKbps":{"description":"See Argument Reference above.\n","type":"integer"},"qosPolicyId":{"description":"See Argument Reference above.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"}},"required":["direction","minKbps","qosPolicyId","region","id"],"type":"object"}},"openstack:networking/getQosPolicy:getQosPolicy":{"description":"Use this data source to get the ID of an available OpenStack QoS policy.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst qosPolicy1 = openstack.networking.getQosPolicy({\n    name: \"qos_policy_1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nqos_policy1 = openstack.networking.get_qos_policy(name=\"qos_policy_1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var qosPolicy1 = OpenStack.Networking.GetQosPolicy.Invoke(new()\n    {\n        Name = \"qos_policy_1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networking.LookupQosPolicy(ctx, \u0026networking.LookupQosPolicyArgs{\n\t\t\tName: pulumi.StringRef(\"qos_policy_1\"),\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.openstack.networking.NetworkingFunctions;\nimport com.pulumi.openstack.networking.inputs.GetQosPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 qosPolicy1 = NetworkingFunctions.getQosPolicy(GetQosPolicyArgs.builder()\n            .name(\"qos_policy_1\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  qosPolicy1:\n    fn::invoke:\n      function: openstack:networking:getQosPolicy\n      arguments:\n        name: qos_policy_1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getQosPolicy.\n","properties":{"description":{"type":"string","description":"The human-readable description for the QoS policy.\n"},"isDefault":{"type":"boolean","description":"Whether the QoS policy is default policy or not.\n"},"name":{"type":"string","description":"The name of the QoS policy.\n"},"projectId":{"type":"string","description":"The owner of the QoS policy.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to retrieve a QoS policy ID. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n","willReplaceOnChanges":true},"shared":{"type":"boolean","description":"Whether this QoS policy is shared across all projects.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The list of QoS policy tags to filter.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getQosPolicy.\n","properties":{"allTags":{"description":"The set of string tags applied on the QoS policy.\n","items":{"type":"string"},"type":"array"},"createdAt":{"description":"The time at which QoS policy was created.\n","type":"string"},"description":{"description":"See Argument Reference above.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"isDefault":{"description":"See Argument Reference above.\n","type":"boolean"},"name":{"description":"See Argument Reference above.\n","type":"string"},"projectId":{"type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"revisionNumber":{"description":"The revision number of the QoS policy.\n","type":"integer"},"shared":{"description":"See Argument Reference above.\n","type":"boolean"},"tags":{"items":{"type":"string"},"type":"array"},"updatedAt":{"description":"The time at which QoS policy was created.\n","type":"string"}},"required":["allTags","createdAt","description","isDefault","name","projectId","region","revisionNumber","shared","updatedAt","id"],"type":"object"}},"openstack:networking/getQuotaV2:getQuotaV2":{"description":"Use this data source to get the networking quota of an OpenStack project.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst quota = openstack.networking.getQuotaV2({\n    projectId: \"2e367a3d29f94fd988e6ec54e305ec9d\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nquota = openstack.networking.get_quota_v2(project_id=\"2e367a3d29f94fd988e6ec54e305ec9d\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var quota = OpenStack.Networking.GetQuotaV2.Invoke(new()\n    {\n        ProjectId = \"2e367a3d29f94fd988e6ec54e305ec9d\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networking.LookupQuotaV2(ctx, \u0026networking.LookupQuotaV2Args{\n\t\t\tProjectId: \"2e367a3d29f94fd988e6ec54e305ec9d\",\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.openstack.networking.NetworkingFunctions;\nimport com.pulumi.openstack.networking.inputs.GetQuotaV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 quota = NetworkingFunctions.getQuotaV2(GetQuotaV2Args.builder()\n            .projectId(\"2e367a3d29f94fd988e6ec54e305ec9d\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  quota:\n    fn::invoke:\n      function: openstack:networking:getQuotaV2\n      arguments:\n        projectId: 2e367a3d29f94fd988e6ec54e305ec9d\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getQuotaV2.\n","properties":{"projectId":{"type":"string","description":"The id of the project to retrieve the quota.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Network client.\nIf omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n","willReplaceOnChanges":true}},"type":"object","required":["projectId"]},"outputs":{"description":"A collection of values returned by getQuotaV2.\n","properties":{"floatingip":{"description":"The number of allowed floating ips.\n","type":"integer"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"network":{"description":"The number of allowed networks.\n","type":"integer"},"port":{"description":"The number of allowed ports.\n","type":"integer"},"projectId":{"description":"See Argument Reference above.\n","type":"string"},"rbacPolicy":{"description":"The number of allowed rbac policies.\n","type":"integer"},"region":{"description":"See Argument Reference above.\n","type":"string"},"router":{"description":"The amount of allowed routers.\n","type":"integer"},"securityGroup":{"description":"The number of allowed security groups.\n","type":"integer"},"securityGroupRule":{"description":"The number of allowed security group rules.\n","type":"integer"},"subnet":{"description":"The number of allowed subnets.\n* `subnetpool-` - The number of allowed subnet pools.\n","type":"integer"},"subnetpool":{"type":"integer"}},"required":["floatingip","network","port","projectId","rbacPolicy","region","router","securityGroup","securityGroupRule","subnet","subnetpool","id"],"type":"object"}},"openstack:networking/getRouter:getRouter":{"description":"Use this data source to get the ID of an available OpenStack router.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst router = openstack.networking.getRouter({\n    name: \"router_1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nrouter = openstack.networking.get_router(name=\"router_1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var router = OpenStack.Networking.GetRouter.Invoke(new()\n    {\n        Name = \"router_1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networking.LookupRouter(ctx, \u0026networking.LookupRouterArgs{\n\t\t\tName: pulumi.StringRef(\"router_1\"),\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.openstack.networking.NetworkingFunctions;\nimport com.pulumi.openstack.networking.inputs.GetRouterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 router = NetworkingFunctions.getRouter(GetRouterArgs.builder()\n            .name(\"router_1\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  router:\n    fn::invoke:\n      function: openstack:networking:getRouter\n      arguments:\n        name: router_1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getRouter.\n","properties":{"adminStateUp":{"type":"boolean","description":"Administrative up/down status for the router (must be \"true\" or \"false\" if provided).\n"},"description":{"type":"string","description":"Human-readable description of the router.\n"},"distributed":{"type":"boolean","description":"Indicates whether or not to get a distributed router.\n"},"enableSnat":{"type":"boolean","description":"The value that points out if the Source NAT is enabled on the router.\n"},"name":{"type":"string","description":"The name of the router.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Neutron client.\nA Neutron client is needed to retrieve router ids. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"},"routerId":{"type":"string","description":"The UUID of the router resource.\n"},"status":{"type":"string","description":"The status of the router (ACTIVE/DOWN).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The list of router tags to filter.\n"},"tenantId":{"type":"string","description":"The owner of the router.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getRouter.\n","properties":{"adminStateUp":{"type":"boolean"},"allTags":{"description":"The set of string tags applied on the router.\n","items":{"type":"string"},"type":"array"},"availabilityZoneHints":{"description":"The availability zone that is used to make router resources highly available.\n","items":{"type":"string"},"type":"array"},"description":{"type":"string"},"distributed":{"type":"boolean"},"enableSnat":{"description":"The value that points out if the Source NAT is enabled on the router.\n","type":"boolean"},"externalFixedIps":{"description":"The external fixed IPs of the router.\n","items":{"$ref":"#/types/openstack:networking/getRouterExternalFixedIp:getRouterExternalFixedIp"},"type":"array"},"externalNetworkId":{"description":"The network UUID of an external gateway for the router.\n","type":"string"},"externalQosPolicyId":{"description":"The QoS policy UUID applied on the external gateway for the router.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"name":{"type":"string"},"region":{"type":"string"},"routerId":{"type":"string"},"routes":{"description":"The list of static routes set on the router.\n","items":{"$ref":"#/types/openstack:networking/getRouterRoute:getRouterRoute"},"type":"array"},"status":{"type":"string"},"tags":{"items":{"type":"string"},"type":"array"},"tenantId":{"type":"string"}},"required":["allTags","availabilityZoneHints","enableSnat","externalFixedIps","externalNetworkId","externalQosPolicyId","routes","id"],"type":"object"}},"openstack:networking/getSecGroup:getSecGroup":{"description":"Use this data source to get the ID of an available OpenStack security group.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst secgroup = openstack.networking.getSecGroup({\n    name: \"tf_test_secgroup\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nsecgroup = openstack.networking.get_sec_group(name=\"tf_test_secgroup\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var secgroup = OpenStack.Networking.GetSecGroup.Invoke(new()\n    {\n        Name = \"tf_test_secgroup\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networking.LookupSecGroup(ctx, \u0026networking.LookupSecGroupArgs{\n\t\t\tName: pulumi.StringRef(\"tf_test_secgroup\"),\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.openstack.networking.NetworkingFunctions;\nimport com.pulumi.openstack.networking.inputs.GetSecGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 secgroup = NetworkingFunctions.getSecGroup(GetSecGroupArgs.builder()\n            .name(\"tf_test_secgroup\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  secgroup:\n    fn::invoke:\n      function: openstack:networking:getSecGroup\n      arguments:\n        name: tf_test_secgroup\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getSecGroup.\n","properties":{"description":{"type":"string","description":"Human-readable description the the subnet.\n"},"name":{"type":"string","description":"The name of the security group.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Neutron client.\nA Neutron client is needed to retrieve security groups ids. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n","willReplaceOnChanges":true},"secgroupId":{"type":"string","description":"The ID of the security group.\n"},"stateful":{"type":"boolean","description":"Whether the security group is stateful or not.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The list of security group tags to filter.\n"},"tenantId":{"type":"string","description":"The owner of the security group.\n","willReplaceOnChanges":true}},"type":"object"},"outputs":{"description":"A collection of values returned by getSecGroup.\n","properties":{"allTags":{"description":"The set of string tags applied on the security group.\n","items":{"type":"string"},"type":"array"},"description":{"description":"See Argument Reference above.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"name":{"description":"See Argument Reference above.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"secgroupId":{"type":"string"},"stateful":{"description":"See Argument Reference above.\n","type":"boolean"},"tags":{"items":{"type":"string"},"type":"array"},"tenantId":{"type":"string"}},"required":["allTags","region","stateful","tenantId","id"],"type":"object"}},"openstack:networking/getSegmentV2:getSegmentV2":{"description":"Use this data source to get the ID of an available OpenStack network.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst network = openstack.networking.getSegmentV2({\n    name: \"tf_test_segment\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nnetwork = openstack.networking.get_segment_v2(name=\"tf_test_segment\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var network = OpenStack.Networking.GetSegmentV2.Invoke(new()\n    {\n        Name = \"tf_test_segment\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networking.LookupSegmentV2(ctx, \u0026networking.LookupSegmentV2Args{\n\t\t\tName: pulumi.StringRef(\"tf_test_segment\"),\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.openstack.networking.NetworkingFunctions;\nimport com.pulumi.openstack.networking.inputs.GetSegmentV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 network = NetworkingFunctions.getSegmentV2(GetSegmentV2Args.builder()\n            .name(\"tf_test_segment\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  network:\n    fn::invoke:\n      function: openstack:networking:getSegmentV2\n      arguments:\n        name: tf_test_segment\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getSegmentV2.\n","properties":{"description":{"type":"string","description":"Human-readable description of the network segment.\n"},"name":{"type":"string","description":"The name of the network segment.\n"},"networkId":{"type":"string","description":"The ID of the network.\n"},"networkType":{"type":"string","description":"The type of the network, such as \u003cspan pulumi-lang-nodejs=\"`vlan`\" pulumi-lang-dotnet=\"`Vlan`\" pulumi-lang-go=\"`vlan`\" pulumi-lang-python=\"`vlan`\" pulumi-lang-yaml=\"`vlan`\" pulumi-lang-java=\"`vlan`\"\u003e`vlan`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`vxlan`\" pulumi-lang-dotnet=\"`Vxlan`\" pulumi-lang-go=\"`vxlan`\" pulumi-lang-python=\"`vxlan`\" pulumi-lang-yaml=\"`vxlan`\" pulumi-lang-java=\"`vxlan`\"\u003e`vxlan`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`flat`\" pulumi-lang-dotnet=\"`Flat`\" pulumi-lang-go=\"`flat`\" pulumi-lang-python=\"`flat`\" pulumi-lang-yaml=\"`flat`\" pulumi-lang-java=\"`flat`\"\u003e`flat`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gre`\" pulumi-lang-dotnet=\"`Gre`\" pulumi-lang-go=\"`gre`\" pulumi-lang-python=\"`gre`\" pulumi-lang-yaml=\"`gre`\" pulumi-lang-java=\"`gre`\"\u003e`gre`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`geneve`\" pulumi-lang-dotnet=\"`Geneve`\" pulumi-lang-go=\"`geneve`\" pulumi-lang-python=\"`geneve`\" pulumi-lang-yaml=\"`geneve`\" pulumi-lang-java=\"`geneve`\"\u003e`geneve`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`local`\" pulumi-lang-dotnet=\"`Local`\" pulumi-lang-go=\"`local`\" pulumi-lang-python=\"`local`\" pulumi-lang-yaml=\"`local`\" pulumi-lang-java=\"`local`\"\u003e`local`\u003c/span\u003e.\n"},"physicalNetwork":{"type":"string","description":"The name of the physical network.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Neutron client.\nA Neutron client is needed to retrieve networks ids. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n","willReplaceOnChanges":true},"revisionNumber":{"type":"integer","description":"See Argument Reference above.\n"},"segmentId":{"type":"string","description":"The ID of the network segment\n"},"segmentationId":{"type":"integer","description":"The segmentation ID of the network segment.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getSegmentV2.\n","properties":{"createdAt":{"description":"The date and time when the network segment was created.\n","type":"string"},"description":{"description":"See Argument Reference above.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"name":{"description":"See Argument Reference above.\n","type":"string"},"networkId":{"description":"See Argument Reference above.\n","type":"string"},"networkType":{"description":"See Argument Reference above.\n","type":"string"},"physicalNetwork":{"description":"See Argument Reference above.\n","type":"string"},"region":{"type":"string"},"revisionNumber":{"description":"See Argument Reference above.\n","type":"integer"},"segmentId":{"description":"See Argument Reference above.\n","type":"string"},"segmentationId":{"description":"See Argument Reference above.\n","type":"integer"},"updatedAt":{"description":"The date and time when the network segment was last updated.\n","type":"string"}},"required":["createdAt","description","name","networkId","networkType","physicalNetwork","region","revisionNumber","segmentId","segmentationId","updatedAt","id"],"type":"object"}},"openstack:networking/getSubnet:getSubnet":{"description":"Use this data source to get the ID of an available OpenStack subnet.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst subnet1 = openstack.networking.getSubnet({\n    name: \"subnet_1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nsubnet1 = openstack.networking.get_subnet(name=\"subnet_1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var subnet1 = OpenStack.Networking.GetSubnet.Invoke(new()\n    {\n        Name = \"subnet_1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networking.LookupSubnet(ctx, \u0026networking.LookupSubnetArgs{\n\t\t\tName: pulumi.StringRef(\"subnet_1\"),\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.openstack.networking.NetworkingFunctions;\nimport com.pulumi.openstack.networking.inputs.GetSubnetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 subnet1 = NetworkingFunctions.getSubnet(GetSubnetArgs.builder()\n            .name(\"subnet_1\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  subnet1:\n    fn::invoke:\n      function: openstack:networking:getSubnet\n      arguments:\n        name: subnet_1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getSubnet.\n","properties":{"cidr":{"type":"string","description":"The CIDR of the subnet.\n"},"description":{"type":"string","description":"Human-readable description of the subnet.\n"},"dhcpEnabled":{"type":"boolean","description":"If the subnet has DHCP enabled.\n"},"dnsPublishFixedIp":{"type":"boolean","description":"If the subnet publishes DNS records.\n"},"gatewayIp":{"type":"string","description":"The IP of the subnet's gateway.\n"},"ipVersion":{"type":"integer","description":"The IP version of the subnet (either 4 or 6).\n"},"ipv6AddressMode":{"type":"string","description":"The IPv6 address mode. Valid values are\n`dhcpv6-stateful`, `dhcpv6-stateless`, or \u003cspan pulumi-lang-nodejs=\"`slaac`\" pulumi-lang-dotnet=\"`Slaac`\" pulumi-lang-go=\"`slaac`\" pulumi-lang-python=\"`slaac`\" pulumi-lang-yaml=\"`slaac`\" pulumi-lang-java=\"`slaac`\"\u003e`slaac`\u003c/span\u003e.\n","willReplaceOnChanges":true},"ipv6RaMode":{"type":"string","description":"The IPv6 Router Advertisement mode. Valid values\nare `dhcpv6-stateful`, `dhcpv6-stateless`, or \u003cspan pulumi-lang-nodejs=\"`slaac`\" pulumi-lang-dotnet=\"`Slaac`\" pulumi-lang-go=\"`slaac`\" pulumi-lang-python=\"`slaac`\" pulumi-lang-yaml=\"`slaac`\" pulumi-lang-java=\"`slaac`\"\u003e`slaac`\u003c/span\u003e.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"The name of the subnet.\n"},"networkId":{"type":"string","description":"The ID of the network the subnet belongs to.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Neutron client.\nA Neutron client is needed to retrieve subnet ids. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n","willReplaceOnChanges":true},"segmentId":{"type":"string","description":"The ID of the segment the subnet belongs to.\nAvailable when neutron segment extension is enabled.\n"},"subnetId":{"type":"string","description":"The ID of the subnet.\n"},"subnetpoolId":{"type":"string","description":"The ID of the subnetpool associated with the subnet.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The list of subnet tags to filter.\n"},"tenantId":{"type":"string","description":"The owner of the subnet.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getSubnet.\n","properties":{"allTags":{"description":"A set of string tags applied on the subnet.\n","items":{"type":"string"},"type":"array"},"allocationPools":{"description":"Allocation pools of the subnet.\n","items":{"$ref":"#/types/openstack:networking/getSubnetAllocationPool:getSubnetAllocationPool"},"type":"array"},"cidr":{"type":"string"},"description":{"type":"string"},"dhcpEnabled":{"type":"boolean"},"dnsNameservers":{"description":"DNS Nameservers of the subnet.\n","items":{"type":"string"},"type":"array"},"dnsPublishFixedIp":{"type":"boolean"},"enableDhcp":{"description":"Whether the subnet has DHCP enabled or not.\n","type":"boolean"},"gatewayIp":{"type":"string"},"hostRoutes":{"description":"Host Routes of the subnet.\n","items":{"$ref":"#/types/openstack:networking/getSubnetHostRoute:getSubnetHostRoute"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"ipVersion":{"type":"integer"},"ipv6AddressMode":{"type":"string"},"ipv6RaMode":{"type":"string"},"name":{"type":"string"},"networkId":{"type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"segmentId":{"type":"string"},"serviceTypes":{"description":"Service types of the subnet.\n","items":{"type":"string"},"type":"array"},"subnetId":{"type":"string"},"subnetpoolId":{"type":"string"},"tags":{"items":{"type":"string"},"type":"array"},"tenantId":{"type":"string"}},"required":["allTags","allocationPools","cidr","description","dnsNameservers","enableDhcp","gatewayIp","hostRoutes","ipVersion","ipv6AddressMode","ipv6RaMode","name","networkId","region","segmentId","serviceTypes","subnetId","subnetpoolId","tenantId","id"],"type":"object"}},"openstack:networking/getSubnetIdsV2:getSubnetIdsV2":{"description":"Use this data source to get a list of Openstack Subnet IDs matching the\nspecified criteria.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst subnets = openstack.networking.getSubnetIdsV2({\n    nameRegex: \"public\",\n    tags: [\"public\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nsubnets = openstack.networking.get_subnet_ids_v2(name_regex=\"public\",\n    tags=[\"public\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var subnets = OpenStack.Networking.GetSubnetIdsV2.Invoke(new()\n    {\n        NameRegex = \"public\",\n        Tags = new[]\n        {\n            \"public\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networking.GetSubnetIdsV2(ctx, \u0026networking.GetSubnetIdsV2Args{\n\t\t\tNameRegex: pulumi.StringRef(\"public\"),\n\t\t\tTags: []string{\n\t\t\t\t\"public\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openstack.networking.NetworkingFunctions;\nimport com.pulumi.openstack.networking.inputs.GetSubnetIdsV2Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 subnets = NetworkingFunctions.getSubnetIdsV2(GetSubnetIdsV2Args.builder()\n            .nameRegex(\"public\")\n            .tags(\"public\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  subnets:\n    fn::invoke:\n      function: openstack:networking:getSubnetIdsV2\n      arguments:\n        nameRegex: public\n        tags:\n          - public\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getSubnetIdsV2.\n","properties":{"cidr":{"type":"string","description":"The CIDR of the subnet.\n","willReplaceOnChanges":true},"description":{"type":"string","description":"Human-readable description of the subnet.\n","willReplaceOnChanges":true},"dhcpEnabled":{"type":"boolean","description":"If the subnet has DHCP enabled.\n"},"dnsPublishFixedIp":{"type":"boolean","description":"If the subnet publishes DNS records.\n"},"gatewayIp":{"type":"string","description":"The IP of the subnet's gateway.\n","willReplaceOnChanges":true},"ipVersion":{"type":"integer","description":"The IP version of the subnet (either 4 or 6).\n","willReplaceOnChanges":true},"ipv6AddressMode":{"type":"string","description":"The IPv6 address mode. Valid values are\n`dhcpv6-stateful`, `dhcpv6-stateless`, or \u003cspan pulumi-lang-nodejs=\"`slaac`\" pulumi-lang-dotnet=\"`Slaac`\" pulumi-lang-go=\"`slaac`\" pulumi-lang-python=\"`slaac`\" pulumi-lang-yaml=\"`slaac`\" pulumi-lang-java=\"`slaac`\"\u003e`slaac`\u003c/span\u003e.\n","willReplaceOnChanges":true},"ipv6RaMode":{"type":"string","description":"The IPv6 Router Advertisement mode. Valid values\nare `dhcpv6-stateful`, `dhcpv6-stateless`, or \u003cspan pulumi-lang-nodejs=\"`slaac`\" pulumi-lang-dotnet=\"`Slaac`\" pulumi-lang-go=\"`slaac`\" pulumi-lang-python=\"`slaac`\" pulumi-lang-yaml=\"`slaac`\" pulumi-lang-java=\"`slaac`\"\u003e`slaac`\u003c/span\u003e.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"The name of the subnet.\n","willReplaceOnChanges":true},"nameRegex":{"type":"string","willReplaceOnChanges":true},"networkId":{"type":"string","description":"The ID of the network the subnet belongs to.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Neutron client.\nA Neutron client is needed to retrieve subnet ids. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n","willReplaceOnChanges":true},"segmentId":{"type":"string","description":"The ID of the segment the subnet belongs to.\nAvailable when neutron segment extension is enabled.\n"},"sortDirection":{"type":"string","description":"Order the results in either \u003cspan pulumi-lang-nodejs=\"`asc`\" pulumi-lang-dotnet=\"`Asc`\" pulumi-lang-go=\"`asc`\" pulumi-lang-python=\"`asc`\" pulumi-lang-yaml=\"`asc`\" pulumi-lang-java=\"`asc`\"\u003e`asc`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`desc`\" pulumi-lang-dotnet=\"`Desc`\" pulumi-lang-go=\"`desc`\" pulumi-lang-python=\"`desc`\" pulumi-lang-yaml=\"`desc`\" pulumi-lang-java=\"`desc`\"\u003e`desc`\u003c/span\u003e.\nDefaults to none.\n","willReplaceOnChanges":true},"sortKey":{"type":"string","description":"Sort subnets based on a certain key. Defaults to none.\n","willReplaceOnChanges":true},"subnetpoolId":{"type":"string","description":"The ID of the subnetpool associated with the subnet.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The list of subnet tags to filter.\n"},"tenantId":{"type":"string","description":"The owner of the subnet.\n","willReplaceOnChanges":true}},"type":"object"},"outputs":{"description":"A collection of values returned by getSubnetIdsV2.\n","properties":{"cidr":{"type":"string"},"description":{"type":"string"},"dhcpEnabled":{"type":"boolean"},"dnsPublishFixedIp":{"type":"boolean"},"gatewayIp":{"type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"ids":{"items":{"type":"string"},"type":"array"},"ipVersion":{"type":"integer"},"ipv6AddressMode":{"type":"string"},"ipv6RaMode":{"type":"string"},"name":{"type":"string"},"nameRegex":{"type":"string"},"networkId":{"type":"string"},"region":{"type":"string"},"segmentId":{"type":"string"},"sortDirection":{"type":"string"},"sortKey":{"type":"string"},"subnetpoolId":{"type":"string"},"tags":{"items":{"type":"string"},"type":"array"},"tenantId":{"type":"string"}},"required":["ids","ipv6RaMode","region","id"],"type":"object"}},"openstack:networking/getSubnetPool:getSubnetPool":{"description":"Use this data source to get the ID of an available OpenStack subnetpool.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst subnetpool1 = openstack.networking.getSubnetPool({\n    name: \"subnetpool_1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nsubnetpool1 = openstack.networking.get_subnet_pool(name=\"subnetpool_1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var subnetpool1 = OpenStack.Networking.GetSubnetPool.Invoke(new()\n    {\n        Name = \"subnetpool_1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networking.LookupSubnetPool(ctx, \u0026networking.LookupSubnetPoolArgs{\n\t\t\tName: pulumi.StringRef(\"subnetpool_1\"),\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.openstack.networking.NetworkingFunctions;\nimport com.pulumi.openstack.networking.inputs.GetSubnetPoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 subnetpool1 = NetworkingFunctions.getSubnetPool(GetSubnetPoolArgs.builder()\n            .name(\"subnetpool_1\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  subnetpool1:\n    fn::invoke:\n      function: openstack:networking:getSubnetPool\n      arguments:\n        name: subnetpool_1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getSubnetPool.\n","properties":{"addressScopeId":{"type":"string","description":"The Neutron address scope that subnetpools\nis assigned to.\n"},"defaultPrefixlen":{"type":"integer","description":"The size of the subnetpool default prefix\nlength.\n"},"defaultQuota":{"type":"integer","description":"The per-project quota on the prefix space that\ncan be allocated from the subnetpool for project subnets.\n"},"description":{"type":"string","description":"The human-readable description for the subnetpool.\n"},"ipVersion":{"type":"integer","description":"The IP protocol version.\n"},"isDefault":{"type":"boolean","description":"Whether the subnetpool is default subnetpool or not.\n"},"maxPrefixlen":{"type":"integer","description":"The size of the subnetpool max prefix length.\n"},"minPrefixlen":{"type":"integer","description":"The size of the subnetpool min prefix length.\n"},"name":{"type":"string","description":"The name of the subnetpool.\n"},"projectId":{"type":"string","description":"The owner of the subnetpool.\n","willReplaceOnChanges":true},"region":{"type":"string","description":"The region in which to obtain the V2 Networking client.\nA Networking client is needed to retrieve a subnetpool id. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n","willReplaceOnChanges":true},"shared":{"type":"boolean","description":"Whether this subnetpool is shared across all projects.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The list of subnetpool tags to filter.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getSubnetPool.\n","properties":{"addressScopeId":{"description":"See Argument Reference above.\n","type":"string"},"allTags":{"description":"The set of string tags applied on the subnetpool.\n","items":{"type":"string"},"type":"array"},"createdAt":{"description":"The time at which subnetpool was created.\n","type":"string"},"defaultPrefixlen":{"description":"See Argument Reference above.\n","type":"integer"},"defaultQuota":{"description":"See Argument Reference above.\n","type":"integer"},"description":{"description":"See Argument Reference above.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"ipVersion":{"description":"The IP protocol version.\n","type":"integer"},"isDefault":{"description":"See Argument Reference above.\n","type":"boolean"},"maxPrefixlen":{"description":"See Argument Reference above.\n","type":"integer"},"minPrefixlen":{"description":"See Argument Reference above.\n","type":"integer"},"name":{"description":"See Argument Reference above.\n","type":"string"},"prefixes":{"description":"See Argument Reference above.\n","items":{"type":"string"},"type":"array"},"projectId":{"description":"See Argument Reference above.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"revisionNumber":{"description":"The revision number of the subnetpool.\n","type":"integer"},"shared":{"description":"See Argument Reference above.\n","type":"boolean"},"tags":{"items":{"type":"string"},"type":"array"},"updatedAt":{"description":"The time at which subnetpool was created.\n","type":"string"}},"required":["addressScopeId","allTags","createdAt","defaultPrefixlen","defaultQuota","description","ipVersion","isDefault","maxPrefixlen","minPrefixlen","name","prefixes","projectId","region","revisionNumber","shared","updatedAt","id"],"type":"object"}},"openstack:networking/getTrunk:getTrunk":{"description":"Use this data source to get the ID of an available OpenStack trunk.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst trunk1 = openstack.networking.getTrunk({\n    name: \"trunk_1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\ntrunk1 = openstack.networking.get_trunk(name=\"trunk_1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var trunk1 = OpenStack.Networking.GetTrunk.Invoke(new()\n    {\n        Name = \"trunk_1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/networking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networking.LookupTrunk(ctx, \u0026networking.LookupTrunkArgs{\n\t\t\tName: pulumi.StringRef(\"trunk_1\"),\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.openstack.networking.NetworkingFunctions;\nimport com.pulumi.openstack.networking.inputs.GetTrunkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 trunk1 = NetworkingFunctions.getTrunk(GetTrunkArgs.builder()\n            .name(\"trunk_1\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  trunk1:\n    fn::invoke:\n      function: openstack:networking:getTrunk\n      arguments:\n        name: trunk_1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getTrunk.\n","properties":{"adminStateUp":{"type":"boolean","description":"The administrative state of the trunk.\n"},"description":{"type":"string","description":"Human-readable description of the trunk.\n"},"name":{"type":"string","description":"The name of the trunk.\n"},"portId":{"type":"string","description":"The ID of the trunk parent port.\n"},"projectId":{"type":"string","description":"The owner of the trunk.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Neutron client.\nA Neutron client is needed to retrieve trunk ids. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"},"status":{"type":"string","description":"The status of the trunk.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The list of trunk tags to filter.\n"},"trunkId":{"type":"string","description":"The ID of the trunk.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getTrunk.\n","properties":{"adminStateUp":{"type":"boolean"},"allTags":{"description":"The set of string tags applied on the trunk.\n","items":{"type":"string"},"type":"array"},"description":{"type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"name":{"type":"string"},"portId":{"description":"The ID of the trunk subport.\n","type":"string"},"projectId":{"type":"string"},"region":{"type":"string"},"status":{"type":"string"},"subPorts":{"description":"The set of the trunk subports. The structure of each subport is\ndescribed below.\n","items":{"$ref":"#/types/openstack:networking/getTrunkSubPort:getTrunkSubPort"},"type":"array"},"tags":{"items":{"type":"string"},"type":"array"},"trunkId":{"type":"string"}},"required":["allTags","projectId","region","subPorts","id"],"type":"object"}},"openstack:sharedfilesystem/getAvailbilityZones:getAvailbilityZones":{"description":"Use this data source to get a list of Shared File System availability zones\nfrom OpenStack\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst zones = openstack.sharedfilesystem.getAvailbilityZones({});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nzones = openstack.sharedfilesystem.get_availbility_zones()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var zones = OpenStack.SharedFileSystem.GetAvailbilityZones.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/sharedfilesystem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sharedfilesystem.GetAvailbilityZones(ctx, \u0026sharedfilesystem.GetAvailbilityZonesArgs{}, 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.openstack.sharedfilesystem.SharedfilesystemFunctions;\nimport com.pulumi.openstack.sharedfilesystem.inputs.GetAvailbilityZonesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 zones = SharedfilesystemFunctions.getAvailbilityZones(GetAvailbilityZonesArgs.builder()\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  zones:\n    fn::invoke:\n      function: openstack:sharedfilesystem:getAvailbilityZones\n      arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getAvailbilityZones.\n","properties":{"region":{"type":"string","description":"The region in which to obtain the V2 Shared File System\nclient. If omitted, the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getAvailbilityZones.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"names":{"description":"The names of the availability zones, ordered alphanumerically.\n","items":{"type":"string"},"type":"array"},"region":{"description":"See Argument Reference above.\n","type":"string"}},"required":["names","region","id"],"type":"object"}},"openstack:sharedfilesystem/getShare:getShare":{"description":"Use this data source to get the ID of an available Shared File System share.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst share1 = openstack.sharedfilesystem.getShare({\n    name: \"share_1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nshare1 = openstack.sharedfilesystem.get_share(name=\"share_1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var share1 = OpenStack.SharedFileSystem.GetShare.Invoke(new()\n    {\n        Name = \"share_1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/sharedfilesystem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sharedfilesystem.LookupShare(ctx, \u0026sharedfilesystem.LookupShareArgs{\n\t\t\tName: pulumi.StringRef(\"share_1\"),\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.openstack.sharedfilesystem.SharedfilesystemFunctions;\nimport com.pulumi.openstack.sharedfilesystem.inputs.GetShareArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 share1 = SharedfilesystemFunctions.getShare(GetShareArgs.builder()\n            .name(\"share_1\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  share1:\n    fn::invoke:\n      function: openstack:sharedfilesystem:getShare\n      arguments:\n        name: share_1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getShare.\n","properties":{"description":{"type":"string","description":"The human-readable description for the share.\n"},"exportLocationPath":{"type":"string","description":"The export location path of the share. Available\nsince Manila API version 2.35.\n"},"isPublic":{"type":"boolean","description":"The level of visibility for the share.\nlength.\n"},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"One or more metadata key and value pairs as a dictionary of\nstrings.\n"},"name":{"type":"string","description":"The name of the share.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Shared File System\nclient. A Shared File System client is needed to read a share. If omitted,\nthe \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"},"shareNetworkId":{"type":"string","description":"The UUID of the share's share network.\n"},"snapshotId":{"type":"string","description":"The UUID of the share's base snapshot.\n"},"status":{"type":"string","description":"A share status filter. A valid value is \u003cspan pulumi-lang-nodejs=\"`creating`\" pulumi-lang-dotnet=\"`Creating`\" pulumi-lang-go=\"`creating`\" pulumi-lang-python=\"`creating`\" pulumi-lang-yaml=\"`creating`\" pulumi-lang-java=\"`creating`\"\u003e`creating`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\"\u003e`error`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`available`\" pulumi-lang-dotnet=\"`Available`\" pulumi-lang-go=\"`available`\" pulumi-lang-python=\"`available`\" pulumi-lang-yaml=\"`available`\" pulumi-lang-java=\"`available`\"\u003e`available`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`deleting`\" pulumi-lang-dotnet=\"`Deleting`\" pulumi-lang-go=\"`deleting`\" pulumi-lang-python=\"`deleting`\" pulumi-lang-yaml=\"`deleting`\" pulumi-lang-java=\"`deleting`\"\u003e`deleting`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`errorDeleting`\" pulumi-lang-dotnet=\"`ErrorDeleting`\" pulumi-lang-go=\"`errorDeleting`\" pulumi-lang-python=\"`error_deleting`\" pulumi-lang-yaml=\"`errorDeleting`\" pulumi-lang-java=\"`errorDeleting`\"\u003e`error_deleting`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`manageStarting`\" pulumi-lang-dotnet=\"`ManageStarting`\" pulumi-lang-go=\"`manageStarting`\" pulumi-lang-python=\"`manage_starting`\" pulumi-lang-yaml=\"`manageStarting`\" pulumi-lang-java=\"`manageStarting`\"\u003e`manage_starting`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`manageError`\" pulumi-lang-dotnet=\"`ManageError`\" pulumi-lang-go=\"`manageError`\" pulumi-lang-python=\"`manage_error`\" pulumi-lang-yaml=\"`manageError`\" pulumi-lang-java=\"`manageError`\"\u003e`manage_error`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`unmanageStarting`\" pulumi-lang-dotnet=\"`UnmanageStarting`\" pulumi-lang-go=\"`unmanageStarting`\" pulumi-lang-python=\"`unmanage_starting`\" pulumi-lang-yaml=\"`unmanageStarting`\" pulumi-lang-java=\"`unmanageStarting`\"\u003e`unmanage_starting`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`unmanageError`\" pulumi-lang-dotnet=\"`UnmanageError`\" pulumi-lang-go=\"`unmanageError`\" pulumi-lang-python=\"`unmanage_error`\" pulumi-lang-yaml=\"`unmanageError`\" pulumi-lang-java=\"`unmanageError`\"\u003e`unmanage_error`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`unmanaged`\" pulumi-lang-dotnet=\"`Unmanaged`\" pulumi-lang-go=\"`unmanaged`\" pulumi-lang-python=\"`unmanaged`\" pulumi-lang-yaml=\"`unmanaged`\" pulumi-lang-java=\"`unmanaged`\"\u003e`unmanaged`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`extending`\" pulumi-lang-dotnet=\"`Extending`\" pulumi-lang-go=\"`extending`\" pulumi-lang-python=\"`extending`\" pulumi-lang-yaml=\"`extending`\" pulumi-lang-java=\"`extending`\"\u003e`extending`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`extendingError`\" pulumi-lang-dotnet=\"`ExtendingError`\" pulumi-lang-go=\"`extendingError`\" pulumi-lang-python=\"`extending_error`\" pulumi-lang-yaml=\"`extendingError`\" pulumi-lang-java=\"`extendingError`\"\u003e`extending_error`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`shrinking`\" pulumi-lang-dotnet=\"`Shrinking`\" pulumi-lang-go=\"`shrinking`\" pulumi-lang-python=\"`shrinking`\" pulumi-lang-yaml=\"`shrinking`\" pulumi-lang-java=\"`shrinking`\"\u003e`shrinking`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`shrinkingError`\" pulumi-lang-dotnet=\"`ShrinkingError`\" pulumi-lang-go=\"`shrinkingError`\" pulumi-lang-python=\"`shrinking_error`\" pulumi-lang-yaml=\"`shrinkingError`\" pulumi-lang-java=\"`shrinkingError`\"\u003e`shrinking_error`\u003c/span\u003e, or\n\u003cspan pulumi-lang-nodejs=\"`shrinkingPossibleDataLossError`\" pulumi-lang-dotnet=\"`ShrinkingPossibleDataLossError`\" pulumi-lang-go=\"`shrinkingPossibleDataLossError`\" pulumi-lang-python=\"`shrinking_possible_data_loss_error`\" pulumi-lang-yaml=\"`shrinkingPossibleDataLossError`\" pulumi-lang-java=\"`shrinkingPossibleDataLossError`\"\u003e`shrinking_possible_data_loss_error`\u003c/span\u003e.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getShare.\n","properties":{"availabilityZone":{"description":"The share availability zone.\n","type":"string"},"description":{"description":"See Argument Reference above.\n","type":"string"},"exportLocationPath":{"description":"See Argument Reference above.\n","type":"string"},"exportLocations":{"description":"A list of export locations. For example, when a share\nserver has more than one network interface, it can have multiple export\nlocations.\n","items":{"$ref":"#/types/openstack:sharedfilesystem/getShareExportLocation:getShareExportLocation"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"isPublic":{"description":"See Argument Reference above.\n","type":"boolean"},"metadata":{"additionalProperties":{"type":"string"},"description":"See Argument Reference above.\n","type":"object"},"name":{"description":"See Argument Reference above.\n","type":"string"},"projectId":{"description":"See Argument Reference above.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"shareNetworkId":{"description":"See Argument Reference above.\n","type":"string"},"shareProto":{"description":"The share protocol.\n","type":"string"},"size":{"description":"The share size, in GBs.\n","type":"integer"},"snapshotId":{"description":"See Argument Reference above.\n","type":"string"},"status":{"description":"See Argument Reference above.\n","type":"string"}},"required":["availabilityZone","description","exportLocations","isPublic","metadata","name","projectId","region","shareNetworkId","shareProto","size","snapshotId","status","id"],"type":"object"}},"openstack:sharedfilesystem/getShareNetwork:getShareNetwork":{"description":"Use this data source to get the ID of an available Shared File System share network.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst sharenetwork1 = openstack.sharedfilesystem.getShareNetwork({\n    name: \"sharenetwork_1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nsharenetwork1 = openstack.sharedfilesystem.get_share_network(name=\"sharenetwork_1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sharenetwork1 = OpenStack.SharedFileSystem.GetShareNetwork.Invoke(new()\n    {\n        Name = \"sharenetwork_1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/sharedfilesystem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sharedfilesystem.LookupShareNetwork(ctx, \u0026sharedfilesystem.LookupShareNetworkArgs{\n\t\t\tName: pulumi.StringRef(\"sharenetwork_1\"),\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.openstack.sharedfilesystem.SharedfilesystemFunctions;\nimport com.pulumi.openstack.sharedfilesystem.inputs.GetShareNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 sharenetwork1 = SharedfilesystemFunctions.getShareNetwork(GetShareNetworkArgs.builder()\n            .name(\"sharenetwork_1\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  sharenetwork1:\n    fn::invoke:\n      function: openstack:sharedfilesystem:getShareNetwork\n      arguments:\n        name: sharenetwork_1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getShareNetwork.\n","properties":{"description":{"type":"string","description":"The human-readable description of the share network.\n"},"ipVersion":{"type":"integer","description":"The IP version of the share network. Can either be 4 or 6.\n"},"name":{"type":"string","description":"The name of the share network.\n"},"networkType":{"type":"string","description":"The share network type. Can either be VLAN, VXLAN,\nGRE, or flat.\n"},"neutronNetId":{"type":"string","description":"The neutron network UUID of the share network.\n"},"neutronSubnetId":{"type":"string","description":"The neutron subnet UUID of the share network.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Shared File System client.\nA Shared File System client is needed to read a share network. If omitted, the\n\u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e argument of the provider is used.\n"},"securityServiceId":{"type":"string","description":"The security service IDs associated with\nthe share network.\n"},"segmentationId":{"type":"integer","description":"The share network segmentation ID.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getShareNetwork.\n","properties":{"cidr":{"description":"See Argument Reference above.\n","type":"string"},"description":{"description":"See Argument Reference above.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"ipVersion":{"description":"See Argument Reference above.\n","type":"integer"},"name":{"description":"See Argument Reference above.\n","type":"string"},"networkType":{"description":"See Argument Reference above.\n","type":"string"},"neutronNetId":{"description":"See Argument Reference above.\n","type":"string"},"neutronSubnetId":{"description":"See Argument Reference above.\n","type":"string"},"projectId":{"description":"The owner of the Share Network.\n","type":"string"},"region":{"description":"See Argument Reference above.\n","type":"string"},"securityServiceId":{"description":"See Argument Reference above.\n","type":"string"},"securityServiceIds":{"description":"The list of security service IDs associated with\nthe share network.\n","items":{"type":"string"},"type":"array"},"segmentationId":{"description":"See Argument Reference above.\n","type":"integer"}},"required":["cidr","description","ipVersion","name","networkType","neutronNetId","neutronSubnetId","projectId","region","securityServiceIds","segmentationId","id"],"type":"object"}},"openstack:sharedfilesystem/getSnapshot:getSnapshot":{"description":"Use this data source to get the ID of an available Shared File System snapshot.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openstack from \"@pulumi/openstack\";\n\nconst snapshot1 = openstack.sharedfilesystem.getSnapshot({\n    name: \"snapshot_1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openstack as openstack\n\nsnapshot1 = openstack.sharedfilesystem.get_snapshot(name=\"snapshot_1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing OpenStack = Pulumi.OpenStack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var snapshot1 = OpenStack.SharedFileSystem.GetSnapshot.Invoke(new()\n    {\n        Name = \"snapshot_1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-openstack/sdk/v5/go/openstack/sharedfilesystem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := sharedfilesystem.GetSnapshot(ctx, \u0026sharedfilesystem.GetSnapshotArgs{\n\t\t\tName: pulumi.StringRef(\"snapshot_1\"),\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.openstack.sharedfilesystem.SharedfilesystemFunctions;\nimport com.pulumi.openstack.sharedfilesystem.inputs.GetSnapshotArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 snapshot1 = SharedfilesystemFunctions.getSnapshot(GetSnapshotArgs.builder()\n            .name(\"snapshot_1\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  snapshot1:\n    fn::invoke:\n      function: openstack:sharedfilesystem:getSnapshot\n      arguments:\n        name: snapshot_1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getSnapshot.\n","properties":{"description":{"type":"string","description":"The human-readable description of the snapshot.\n"},"name":{"type":"string","description":"The name of the snapshot.\n"},"region":{"type":"string","description":"The region in which to obtain the V2 Shared File System client.\n"},"shareId":{"type":"string","description":"The UUID of the source share that was used to create the snapshot.\n"},"status":{"type":"string","description":"A snapshot status filter. A valid value is \u003cspan pulumi-lang-nodejs=\"`available`\" pulumi-lang-dotnet=\"`Available`\" pulumi-lang-go=\"`available`\" pulumi-lang-python=\"`available`\" pulumi-lang-yaml=\"`available`\" pulumi-lang-java=\"`available`\"\u003e`available`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\"\u003e`error`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`creating`\" pulumi-lang-dotnet=\"`Creating`\" pulumi-lang-go=\"`creating`\" pulumi-lang-python=\"`creating`\" pulumi-lang-yaml=\"`creating`\" pulumi-lang-java=\"`creating`\"\u003e`creating`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`deleting`\" pulumi-lang-dotnet=\"`Deleting`\" pulumi-lang-go=\"`deleting`\" pulumi-lang-python=\"`deleting`\" pulumi-lang-yaml=\"`deleting`\" pulumi-lang-java=\"`deleting`\"\u003e`deleting`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`manageStarting`\" pulumi-lang-dotnet=\"`ManageStarting`\" pulumi-lang-go=\"`manageStarting`\" pulumi-lang-python=\"`manage_starting`\" pulumi-lang-yaml=\"`manageStarting`\" pulumi-lang-java=\"`manageStarting`\"\u003e`manage_starting`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`manageError`\" pulumi-lang-dotnet=\"`ManageError`\" pulumi-lang-go=\"`manageError`\" pulumi-lang-python=\"`manage_error`\" pulumi-lang-yaml=\"`manageError`\" pulumi-lang-java=\"`manageError`\"\u003e`manage_error`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`unmanageStarting`\" pulumi-lang-dotnet=\"`UnmanageStarting`\" pulumi-lang-go=\"`unmanageStarting`\" pulumi-lang-python=\"`unmanage_starting`\" pulumi-lang-yaml=\"`unmanageStarting`\" pulumi-lang-java=\"`unmanageStarting`\"\u003e`unmanage_starting`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`unmanageError`\" pulumi-lang-dotnet=\"`UnmanageError`\" pulumi-lang-go=\"`unmanageError`\" pulumi-lang-python=\"`unmanage_error`\" pulumi-lang-yaml=\"`unmanageError`\" pulumi-lang-java=\"`unmanageError`\"\u003e`unmanage_error`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`errorDeleting`\" pulumi-lang-dotnet=\"`ErrorDeleting`\" pulumi-lang-go=\"`errorDeleting`\" pulumi-lang-python=\"`error_deleting`\" pulumi-lang-yaml=\"`errorDeleting`\" pulumi-lang-java=\"`errorDeleting`\"\u003e`error_deleting`\u003c/span\u003e.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getSnapshot.\n","properties":{"description":{"description":"See Argument Reference above.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"name":{"description":"See Argument Reference above.\n","type":"string"},"projectId":{"description":"See Argument Reference above.\n","type":"string"},"region":{"type":"string"},"shareId":{"description":"The UUID of the source share that was used to create the snapshot.\n","type":"string"},"shareProto":{"description":"The file system protocol of a share snapshot.\n","type":"string"},"shareSize":{"description":"The share snapshot size, in GBs.\n","type":"integer"},"size":{"description":"The snapshot size, in GBs.\n","type":"integer"},"status":{"description":"See Argument Reference above.\n","type":"string"}},"required":["description","name","projectId","region","shareId","shareProto","shareSize","size","status","id"],"type":"object"}},"pulumi:providers:openstack/terraformConfig":{"description":"This function returns a Terraform config object with terraform-namecased keys,to be used with the Terraform Module Provider.","inputs":{"properties":{"__self__":{"type":"ref","$ref":"#/provider"}},"type":"pulumi:providers:openstack/terraformConfig","required":["__self__"]},"outputs":{"properties":{"result":{"additionalProperties":{"$ref":"pulumi.json#/Any"},"type":"object"}},"required":["result"],"type":"object"}}}}