{"name":"rabbitmq","version":"3.4.2","description":"A Pulumi package for creating and managing RabbitMQ resources.","keywords":["pulumi","rabbitmq"],"homepage":"https://pulumi.io","license":"Apache-2.0","attribution":"This Pulumi package is based on the [`rabbitmq` Terraform Provider](https://github.com/terraform-providers/terraform-provider-rabbitmq).","repository":"https://github.com/pulumi/pulumi-rabbitmq","meta":{"moduleFormat":"(.*)(?:/[^/]*)"},"language":{"csharp":{"packageReferences":{"Pulumi":"3.*"},"namespaces":{"rabbitmq":"RabbitMQ"},"compatibility":"tfbridge20","respectSchemaVersion":true},"go":{"importBasePath":"github.com/pulumi/pulumi-rabbitmq/sdk/v3/go/rabbitmq","generateResourceContainerTypes":true,"generateExtraInputTypes":true,"respectSchemaVersion":true},"nodejs":{"packageDescription":"A Pulumi package for creating and managing RabbitMQ resources.","readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/terraform-providers/terraform-provider-rabbitmq)\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-rabbitmq` repo](https://github.com/pulumi/pulumi-rabbitmq/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-rabbitmq` repo](https://github.com/terraform-providers/terraform-provider-rabbitmq/issues).","devDependencies":{"@types/mime":"^2.0.0","@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-providers/terraform-provider-rabbitmq)\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-rabbitmq` repo](https://github.com/pulumi/pulumi-rabbitmq/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-rabbitmq` repo](https://github.com/terraform-providers/terraform-provider-rabbitmq/issues).","compatibility":"tfbridge20","respectSchemaVersion":true,"pyproject":{"enabled":true}}},"config":{"variables":{"cacertFile":{"type":"string","defaultInfo":{"environment":["RABBITMQ_CACERT"]}},"clientcertFile":{"type":"string"},"clientkeyFile":{"type":"string"},"endpoint":{"type":"string"},"insecure":{"type":"boolean","defaultInfo":{"environment":["RABBITMQ_INSECURE"]}},"password":{"type":"string"},"proxy":{"type":"string"},"username":{"type":"string"}},"defaults":["endpoint","password","username"]},"types":{"rabbitmq:index/ExchangeSettings:ExchangeSettings":{"properties":{"arguments":{"type":"object","additionalProperties":{"type":"string"},"description":"Additional key/value settings for the exchange.\n","willReplaceOnChanges":true},"autoDelete":{"type":"boolean","description":"Whether the exchange will self-delete when all\nqueues have finished using it.\n","willReplaceOnChanges":true},"durable":{"type":"boolean","description":"Whether the exchange survives server restarts.\nDefaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n","willReplaceOnChanges":true},"type":{"type":"string","description":"The type of exchange.\n","willReplaceOnChanges":true}},"type":"object","required":["type"]},"rabbitmq:index/FederationUpstreamDefinition:FederationUpstreamDefinition":{"properties":{"ackMode":{"type":"string","description":"Determines how the link should acknowledge messages. Valid values are `on-confirm`, `on-publish`, and `no-ack`. Default is `on-confirm`.\n"},"exchange":{"type":"string","description":"The name of the upstream exchange.\n"},"expires":{"type":"integer","description":"The expiry time (in milliseconds) after which an upstream queue for a federated exchange may be deleted if a connection to the upstream is lost.\n"},"maxHops":{"type":"integer","description":"Maximum number of federation links that messages can traverse before being dropped. Default is \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e.\n"},"messageTtl":{"type":"integer","description":"The expiry time (in milliseconds) for messages in the upstream queue for a federated exchange (see expires).\n\nApplicable to Federated Queues Only\n"},"prefetchCount":{"type":"integer","description":"Maximum number of unacknowledged messages that may be in flight over a federation link at one time. Default is \u003cspan pulumi-lang-nodejs=\"`1000`\" pulumi-lang-dotnet=\"`1000`\" pulumi-lang-go=\"`1000`\" pulumi-lang-python=\"`1000`\" pulumi-lang-yaml=\"`1000`\" pulumi-lang-java=\"`1000`\"\u003e`1000`\u003c/span\u003e.\n"},"queue":{"type":"string","description":"The name of the upstream queue.\n\nConsult the RabbitMQ [Federation Reference](https://www.rabbitmq.com/federation-reference.html) documentation for detailed information and guidance on setting these values.\n"},"reconnectDelay":{"type":"integer","description":"Time in seconds to wait after a network link goes down before attempting reconnection. Default is \u003cspan pulumi-lang-nodejs=\"`5`\" pulumi-lang-dotnet=\"`5`\" pulumi-lang-go=\"`5`\" pulumi-lang-python=\"`5`\" pulumi-lang-yaml=\"`5`\" pulumi-lang-java=\"`5`\"\u003e`5`\u003c/span\u003e.\n"},"trustUserId":{"type":"boolean","description":"Determines how federation should interact with the validated user-id feature. 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.\n\nApplicable to Federated Exchanges Only\n"},"uri":{"type":"string","description":"The AMQP URI(s) for the upstream. Note that the URI may contain sensitive information, such as a password.\n","secret":true}},"type":"object","required":["uri"]},"rabbitmq:index/OperatorPolicyPolicy:OperatorPolicyPolicy":{"properties":{"applyTo":{"type":"string","description":"Can be \"queues\".\n"},"definition":{"type":"object","additionalProperties":{"type":"string"},"description":"Key/value pairs of the operator policy definition. See the\nRabbitMQ documentation for definition references and examples.\n"},"pattern":{"type":"string","description":"A pattern to match an exchange or queue name.\n"},"priority":{"type":"integer","description":"The policy with the greater priority is applied first.\n"}},"type":"object","required":["applyTo","definition","pattern","priority"]},"rabbitmq:index/PermissionsPermissions:PermissionsPermissions":{"properties":{"configure":{"type":"string","description":"The \"configure\" ACL.\n"},"read":{"type":"string","description":"The \"read\" ACL.\n"},"write":{"type":"string","description":"The \"write\" ACL.\n"}},"type":"object","required":["configure","read","write"]},"rabbitmq:index/PolicyPolicy:PolicyPolicy":{"properties":{"applyTo":{"type":"string","description":"Can either be \"exchanges\", \"queues\", or \"all\".\n"},"definition":{"type":"object","additionalProperties":{"type":"string"},"description":"Key/value pairs of the policy definition. See the\nRabbitMQ documentation for definition references and examples.\n"},"pattern":{"type":"string","description":"A pattern to match an exchange or queue name.\n"},"priority":{"type":"integer","description":"The policy with the greater priority is applied first.\n"}},"type":"object","required":["applyTo","definition","pattern","priority"]},"rabbitmq:index/QueueSettings:QueueSettings":{"properties":{"arguments":{"type":"object","additionalProperties":{"type":"string"},"description":"Additional key/value settings for the queue.\nAll values will be sent to RabbitMQ as a string. If you require non-string\nvalues, use \u003cspan pulumi-lang-nodejs=\"`argumentsJson`\" pulumi-lang-dotnet=\"`ArgumentsJson`\" pulumi-lang-go=\"`argumentsJson`\" pulumi-lang-python=\"`arguments_json`\" pulumi-lang-yaml=\"`argumentsJson`\" pulumi-lang-java=\"`argumentsJson`\"\u003e`arguments_json`\u003c/span\u003e.\n","willReplaceOnChanges":true},"argumentsJson":{"type":"string","description":"A nested JSON string which contains additional\nsettings for the queue. This is useful for when the arguments contain\nnon-string values.\n","willReplaceOnChanges":true},"autoDelete":{"type":"boolean","description":"Whether the queue will self-delete when all\nconsumers have unsubscribed.\n","willReplaceOnChanges":true},"durable":{"type":"boolean","description":"Whether the queue survives server restarts.\nDefaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n","willReplaceOnChanges":true}},"type":"object"},"rabbitmq:index/ShovelInfo:ShovelInfo":{"properties":{"ackMode":{"type":"string","description":"Determines how the shovel should acknowledge messages. Possible values are: `on-confirm`, `on-publish` and `no-ack`.\nDefaults to `on-confirm`.\n","willReplaceOnChanges":true},"addForwardHeaders":{"type":"boolean","description":"Whether to add `x-shovelled` headers to shovelled messages.\n","deprecationMessage":"use\u003cspan pulumi-lang-nodejs=\" destinationAddForwardHeaders \" pulumi-lang-dotnet=\" DestinationAddForwardHeaders \" pulumi-lang-go=\" destinationAddForwardHeaders \" pulumi-lang-python=\" destination_add_forward_headers \" pulumi-lang-yaml=\" destinationAddForwardHeaders \" pulumi-lang-java=\" destinationAddForwardHeaders \"\u003e destination_add_forward_headers \u003c/span\u003einstead","willReplaceOnChanges":true},"deleteAfter":{"type":"string","description":"Determines when (if ever) the shovel should delete itself. Possible values are: \u003cspan pulumi-lang-nodejs=\"`never`\" pulumi-lang-dotnet=\"`Never`\" pulumi-lang-go=\"`never`\" pulumi-lang-python=\"`never`\" pulumi-lang-yaml=\"`never`\" pulumi-lang-java=\"`never`\"\u003e`never`\u003c/span\u003e, `queue-length` or an integer.\n","deprecationMessage":"use\u003cspan pulumi-lang-nodejs=\" sourceDeleteAfter \" pulumi-lang-dotnet=\" SourceDeleteAfter \" pulumi-lang-go=\" sourceDeleteAfter \" pulumi-lang-python=\" source_delete_after \" pulumi-lang-yaml=\" sourceDeleteAfter \" pulumi-lang-java=\" sourceDeleteAfter \"\u003e source_delete_after \u003c/span\u003einstead","willReplaceOnChanges":true},"destinationAddForwardHeaders":{"type":"boolean","description":"Whether to add `x-shovelled` headers to shovelled messages.\n","willReplaceOnChanges":true},"destinationAddTimestampHeader":{"type":"boolean","willReplaceOnChanges":true},"destinationAddress":{"type":"string","description":"The AMQP 1.0 destination link address.\n","willReplaceOnChanges":true},"destinationApplicationProperties":{"type":"object","additionalProperties":{"type":"string"},"description":"Application properties to set when shovelling messages.\n","willReplaceOnChanges":true},"destinationExchange":{"type":"string","description":"The exchange to which messages should be published.\nEither this or \u003cspan pulumi-lang-nodejs=\"`destinationQueue`\" pulumi-lang-dotnet=\"`DestinationQueue`\" pulumi-lang-go=\"`destinationQueue`\" pulumi-lang-python=\"`destination_queue`\" pulumi-lang-yaml=\"`destinationQueue`\" pulumi-lang-java=\"`destinationQueue`\"\u003e`destination_queue`\u003c/span\u003e must be specified but not both.\n","willReplaceOnChanges":true},"destinationExchangeKey":{"type":"string","description":"The routing key when using \u003cspan pulumi-lang-nodejs=\"`destinationExchange`\" pulumi-lang-dotnet=\"`DestinationExchange`\" pulumi-lang-go=\"`destinationExchange`\" pulumi-lang-python=\"`destination_exchange`\" pulumi-lang-yaml=\"`destinationExchange`\" pulumi-lang-java=\"`destinationExchange`\"\u003e`destination_exchange`\u003c/span\u003e.\n","willReplaceOnChanges":true},"destinationProperties":{"type":"object","additionalProperties":{"type":"string"},"description":"Properties to overwrite when shovelling messages.\n\nFor more details regarding dynamic shovel parameters please have a look at the official reference documentaion at [RabbitMQ: Configuring Dynamic Shovels](https://www.rabbitmq.com/shovel-dynamic.html).\n","willReplaceOnChanges":true},"destinationProtocol":{"type":"string","description":"The protocol (\u003cspan pulumi-lang-nodejs=\"`amqp091`\" pulumi-lang-dotnet=\"`Amqp091`\" pulumi-lang-go=\"`amqp091`\" pulumi-lang-python=\"`amqp091`\" pulumi-lang-yaml=\"`amqp091`\" pulumi-lang-java=\"`amqp091`\"\u003e`amqp091`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`amqp10`\" pulumi-lang-dotnet=\"`Amqp10`\" pulumi-lang-go=\"`amqp10`\" pulumi-lang-python=\"`amqp10`\" pulumi-lang-yaml=\"`amqp10`\" pulumi-lang-java=\"`amqp10`\"\u003e`amqp10`\u003c/span\u003e) to use when connecting to the destination.\nDefaults to \u003cspan pulumi-lang-nodejs=\"`amqp091`\" pulumi-lang-dotnet=\"`Amqp091`\" pulumi-lang-go=\"`amqp091`\" pulumi-lang-python=\"`amqp091`\" pulumi-lang-yaml=\"`amqp091`\" pulumi-lang-java=\"`amqp091`\"\u003e`amqp091`\u003c/span\u003e.\n","willReplaceOnChanges":true},"destinationPublishProperties":{"type":"object","additionalProperties":{"type":"string"},"description":"A map of properties to overwrite when shovelling messages.\n","willReplaceOnChanges":true},"destinationQueue":{"type":"string","description":"The queue to which messages should be published.\nEither this or \u003cspan pulumi-lang-nodejs=\"`destinationExchange`\" pulumi-lang-dotnet=\"`DestinationExchange`\" pulumi-lang-go=\"`destinationExchange`\" pulumi-lang-python=\"`destination_exchange`\" pulumi-lang-yaml=\"`destinationExchange`\" pulumi-lang-java=\"`destinationExchange`\"\u003e`destination_exchange`\u003c/span\u003e must be specified but not both.\n","willReplaceOnChanges":true},"destinationQueueArguments":{"type":"object","additionalProperties":{"type":"string"},"willReplaceOnChanges":true},"destinationUri":{"type":"string","description":"The amqp uri for the destination .\n","willReplaceOnChanges":true},"prefetchCount":{"type":"integer","description":"The maximum number of unacknowledged messages copied over a shovel at any one time.\n","deprecationMessage":"use\u003cspan pulumi-lang-nodejs=\" sourcePrefetchCount \" pulumi-lang-dotnet=\" SourcePrefetchCount \" pulumi-lang-go=\" sourcePrefetchCount \" pulumi-lang-python=\" source_prefetch_count \" pulumi-lang-yaml=\" sourcePrefetchCount \" pulumi-lang-java=\" sourcePrefetchCount \"\u003e source_prefetch_count \u003c/span\u003einstead","willReplaceOnChanges":true},"reconnectDelay":{"type":"integer","description":"The duration in seconds to reconnect to a broker after disconnected.\nDefaults to \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e.\n","willReplaceOnChanges":true},"sourceAddress":{"type":"string","description":"The AMQP 1.0 source link address.\n","willReplaceOnChanges":true},"sourceDeleteAfter":{"type":"string","description":"Determines when (if ever) the shovel should delete itself. Possible values are: \u003cspan pulumi-lang-nodejs=\"`never`\" pulumi-lang-dotnet=\"`Never`\" pulumi-lang-go=\"`never`\" pulumi-lang-python=\"`never`\" pulumi-lang-yaml=\"`never`\" pulumi-lang-java=\"`never`\"\u003e`never`\u003c/span\u003e, `queue-length` or an integer.\n","willReplaceOnChanges":true},"sourceExchange":{"type":"string","description":"The exchange from which to consume.\nEither this or \u003cspan pulumi-lang-nodejs=\"`sourceQueue`\" pulumi-lang-dotnet=\"`SourceQueue`\" pulumi-lang-go=\"`sourceQueue`\" pulumi-lang-python=\"`source_queue`\" pulumi-lang-yaml=\"`sourceQueue`\" pulumi-lang-java=\"`sourceQueue`\"\u003e`source_queue`\u003c/span\u003e must be specified but not both.\n","willReplaceOnChanges":true},"sourceExchangeKey":{"type":"string","description":"The routing key when using \u003cspan pulumi-lang-nodejs=\"`sourceExchange`\" pulumi-lang-dotnet=\"`SourceExchange`\" pulumi-lang-go=\"`sourceExchange`\" pulumi-lang-python=\"`source_exchange`\" pulumi-lang-yaml=\"`sourceExchange`\" pulumi-lang-java=\"`sourceExchange`\"\u003e`source_exchange`\u003c/span\u003e.\n","willReplaceOnChanges":true},"sourcePrefetchCount":{"type":"integer","description":"The maximum number of unacknowledged messages copied over a shovel at any one time.\n","willReplaceOnChanges":true},"sourceProtocol":{"type":"string","description":"The protocol (\u003cspan pulumi-lang-nodejs=\"`amqp091`\" pulumi-lang-dotnet=\"`Amqp091`\" pulumi-lang-go=\"`amqp091`\" pulumi-lang-python=\"`amqp091`\" pulumi-lang-yaml=\"`amqp091`\" pulumi-lang-java=\"`amqp091`\"\u003e`amqp091`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`amqp10`\" pulumi-lang-dotnet=\"`Amqp10`\" pulumi-lang-go=\"`amqp10`\" pulumi-lang-python=\"`amqp10`\" pulumi-lang-yaml=\"`amqp10`\" pulumi-lang-java=\"`amqp10`\"\u003e`amqp10`\u003c/span\u003e) to use when connecting to the source.\nDefaults to \u003cspan pulumi-lang-nodejs=\"`amqp091`\" pulumi-lang-dotnet=\"`Amqp091`\" pulumi-lang-go=\"`amqp091`\" pulumi-lang-python=\"`amqp091`\" pulumi-lang-yaml=\"`amqp091`\" pulumi-lang-java=\"`amqp091`\"\u003e`amqp091`\u003c/span\u003e.\n","willReplaceOnChanges":true},"sourceQueue":{"type":"string","description":"The queue from which to consume.\nEither this or \u003cspan pulumi-lang-nodejs=\"`sourceExchange`\" pulumi-lang-dotnet=\"`SourceExchange`\" pulumi-lang-go=\"`sourceExchange`\" pulumi-lang-python=\"`source_exchange`\" pulumi-lang-yaml=\"`sourceExchange`\" pulumi-lang-java=\"`sourceExchange`\"\u003e`source_exchange`\u003c/span\u003e must be specified but not both.\n","willReplaceOnChanges":true},"sourceUri":{"type":"string","description":"The amqp uri for the source.\n","willReplaceOnChanges":true}},"type":"object","required":["destinationUri","sourceUri"]},"rabbitmq:index/TopicPermissionsPermission:TopicPermissionsPermission":{"properties":{"exchange":{"type":"string","description":"The exchange to set the permissions for.\n"},"read":{"type":"string","description":"The \"read\" ACL.\n"},"write":{"type":"string","description":"The \"write\" ACL.\n"}},"type":"object","required":["exchange","read","write"]},"rabbitmq:index/getExchangeSetting:getExchangeSetting":{"properties":{"arguments":{"type":"object","additionalProperties":{"type":"string"}},"autoDelete":{"type":"boolean"},"durable":{"type":"boolean"},"type":{"type":"string"}},"type":"object","required":["type"],"language":{"nodejs":{"requiredInputs":[]}}}},"provider":{"description":"The provider type for the rabbitmq 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":{"cacertFile":{"type":"string"},"clientcertFile":{"type":"string"},"clientkeyFile":{"type":"string"},"endpoint":{"type":"string"},"insecure":{"type":"boolean"},"password":{"type":"string"},"proxy":{"type":"string"},"username":{"type":"string"}},"inputProperties":{"cacertFile":{"type":"string","defaultInfo":{"environment":["RABBITMQ_CACERT"]}},"clientcertFile":{"type":"string"},"clientkeyFile":{"type":"string"},"endpoint":{"type":"string"},"insecure":{"type":"boolean","defaultInfo":{"environment":["RABBITMQ_INSECURE"]}},"password":{"type":"string"},"proxy":{"type":"string"},"username":{"type":"string"}},"methods":{"terraformConfig":"pulumi:providers:rabbitmq/terraformConfig"}},"resources":{"rabbitmq:index/binding:Binding":{"description":"The `\u003cspan pulumi-lang-nodejs=\"`rabbitmq.Binding`\" pulumi-lang-dotnet=\"`rabbitmq.Binding`\" pulumi-lang-go=\"`Binding`\" pulumi-lang-python=\"`Binding`\" pulumi-lang-yaml=\"`rabbitmq.Binding`\" pulumi-lang-java=\"`rabbitmq.Binding`\"\u003e`rabbitmq.Binding`\u003c/span\u003e` resource creates and manages a binding relationship\nbetween a queue an exchange.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as rabbitmq from \"@pulumi/rabbitmq\";\n\nconst test = new rabbitmq.VHost(\"test\", {name: \"test\"});\nconst guest = new rabbitmq.Permissions(\"guest\", {\n    user: \"guest\",\n    vhost: test.name,\n    permissions: {\n        configure: \".*\",\n        write: \".*\",\n        read: \".*\",\n    },\n});\nconst testExchange = new rabbitmq.Exchange(\"test\", {\n    name: \"test\",\n    vhost: guest.vhost,\n    settings: {\n        type: \"fanout\",\n        durable: false,\n        autoDelete: true,\n    },\n});\nconst testQueue = new rabbitmq.Queue(\"test\", {\n    name: \"test\",\n    vhost: guest.vhost,\n    settings: {\n        durable: true,\n        autoDelete: false,\n    },\n});\nconst testBinding = new rabbitmq.Binding(\"test\", {\n    source: testExchange.name,\n    vhost: test.name,\n    destination: testQueue.name,\n    destinationType: \"queue\",\n    routingKey: \"#\",\n});\n```\n```python\nimport pulumi\nimport pulumi_rabbitmq as rabbitmq\n\ntest = rabbitmq.VHost(\"test\", name=\"test\")\nguest = rabbitmq.Permissions(\"guest\",\n    user=\"guest\",\n    vhost=test.name,\n    permissions={\n        \"configure\": \".*\",\n        \"write\": \".*\",\n        \"read\": \".*\",\n    })\ntest_exchange = rabbitmq.Exchange(\"test\",\n    name=\"test\",\n    vhost=guest.vhost,\n    settings={\n        \"type\": \"fanout\",\n        \"durable\": False,\n        \"auto_delete\": True,\n    })\ntest_queue = rabbitmq.Queue(\"test\",\n    name=\"test\",\n    vhost=guest.vhost,\n    settings={\n        \"durable\": True,\n        \"auto_delete\": False,\n    })\ntest_binding = rabbitmq.Binding(\"test\",\n    source=test_exchange.name,\n    vhost=test.name,\n    destination=test_queue.name,\n    destination_type=\"queue\",\n    routing_key=\"#\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing RabbitMQ = Pulumi.RabbitMQ;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new RabbitMQ.VHost(\"test\", new()\n    {\n        Name = \"test\",\n    });\n\n    var guest = new RabbitMQ.Permissions(\"guest\", new()\n    {\n        User = \"guest\",\n        Vhost = test.Name,\n        PermissionDetails = new RabbitMQ.Inputs.PermissionsPermissionsArgs\n        {\n            Configure = \".*\",\n            Write = \".*\",\n            Read = \".*\",\n        },\n    });\n\n    var testExchange = new RabbitMQ.Exchange(\"test\", new()\n    {\n        Name = \"test\",\n        Vhost = guest.Vhost,\n        Settings = new RabbitMQ.Inputs.ExchangeSettingsArgs\n        {\n            Type = \"fanout\",\n            Durable = false,\n            AutoDelete = true,\n        },\n    });\n\n    var testQueue = new RabbitMQ.Queue(\"test\", new()\n    {\n        Name = \"test\",\n        Vhost = guest.Vhost,\n        Settings = new RabbitMQ.Inputs.QueueSettingsArgs\n        {\n            Durable = true,\n            AutoDelete = false,\n        },\n    });\n\n    var testBinding = new RabbitMQ.Binding(\"test\", new()\n    {\n        Source = testExchange.Name,\n        Vhost = test.Name,\n        Destination = testQueue.Name,\n        DestinationType = \"queue\",\n        RoutingKey = \"#\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-rabbitmq/sdk/v3/go/rabbitmq\"\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, err := rabbitmq.NewVHost(ctx, \"test\", \u0026rabbitmq.VHostArgs{\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\tguest, err := rabbitmq.NewPermissions(ctx, \"guest\", \u0026rabbitmq.PermissionsArgs{\n\t\t\tUser:  pulumi.String(\"guest\"),\n\t\t\tVhost: test.Name,\n\t\t\tPermissions: \u0026rabbitmq.PermissionsPermissionsArgs{\n\t\t\t\tConfigure: pulumi.String(\".*\"),\n\t\t\t\tWrite:     pulumi.String(\".*\"),\n\t\t\t\tRead:      pulumi.String(\".*\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestExchange, err := rabbitmq.NewExchange(ctx, \"test\", \u0026rabbitmq.ExchangeArgs{\n\t\t\tName:  pulumi.String(\"test\"),\n\t\t\tVhost: guest.Vhost,\n\t\t\tSettings: \u0026rabbitmq.ExchangeSettingsArgs{\n\t\t\t\tType:       pulumi.String(\"fanout\"),\n\t\t\t\tDurable:    pulumi.Bool(false),\n\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestQueue, err := rabbitmq.NewQueue(ctx, \"test\", \u0026rabbitmq.QueueArgs{\n\t\t\tName:  pulumi.String(\"test\"),\n\t\t\tVhost: guest.Vhost,\n\t\t\tSettings: \u0026rabbitmq.QueueSettingsArgs{\n\t\t\t\tDurable:    pulumi.Bool(true),\n\t\t\t\tAutoDelete: pulumi.Bool(false),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = rabbitmq.NewBinding(ctx, \"test\", \u0026rabbitmq.BindingArgs{\n\t\t\tSource:          testExchange.Name,\n\t\t\tVhost:           test.Name,\n\t\t\tDestination:     testQueue.Name,\n\t\t\tDestinationType: pulumi.String(\"queue\"),\n\t\t\tRoutingKey:      pulumi.String(\"#\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.rabbitmq.VHost;\nimport com.pulumi.rabbitmq.VHostArgs;\nimport com.pulumi.rabbitmq.Permissions;\nimport com.pulumi.rabbitmq.PermissionsArgs;\nimport com.pulumi.rabbitmq.inputs.PermissionsPermissionsArgs;\nimport com.pulumi.rabbitmq.Exchange;\nimport com.pulumi.rabbitmq.ExchangeArgs;\nimport com.pulumi.rabbitmq.inputs.ExchangeSettingsArgs;\nimport com.pulumi.rabbitmq.Queue;\nimport com.pulumi.rabbitmq.QueueArgs;\nimport com.pulumi.rabbitmq.inputs.QueueSettingsArgs;\nimport com.pulumi.rabbitmq.Binding;\nimport com.pulumi.rabbitmq.BindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 VHost(\"test\", VHostArgs.builder()\n            .name(\"test\")\n            .build());\n\n        var guest = new Permissions(\"guest\", PermissionsArgs.builder()\n            .user(\"guest\")\n            .vhost(test.name())\n            .permissions(PermissionsPermissionsArgs.builder()\n                .configure(\".*\")\n                .write(\".*\")\n                .read(\".*\")\n                .build())\n            .build());\n\n        var testExchange = new Exchange(\"testExchange\", ExchangeArgs.builder()\n            .name(\"test\")\n            .vhost(guest.vhost())\n            .settings(ExchangeSettingsArgs.builder()\n                .type(\"fanout\")\n                .durable(false)\n                .autoDelete(true)\n                .build())\n            .build());\n\n        var testQueue = new Queue(\"testQueue\", QueueArgs.builder()\n            .name(\"test\")\n            .vhost(guest.vhost())\n            .settings(QueueSettingsArgs.builder()\n                .durable(true)\n                .autoDelete(false)\n                .build())\n            .build());\n\n        var testBinding = new Binding(\"testBinding\", BindingArgs.builder()\n            .source(testExchange.name())\n            .vhost(test.name())\n            .destination(testQueue.name())\n            .destinationType(\"queue\")\n            .routingKey(\"#\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: rabbitmq:VHost\n    properties:\n      name: test\n  guest:\n    type: rabbitmq:Permissions\n    properties:\n      user: guest\n      vhost: ${test.name}\n      permissions:\n        configure: .*\n        write: .*\n        read: .*\n  testExchange:\n    type: rabbitmq:Exchange\n    name: test\n    properties:\n      name: test\n      vhost: ${guest.vhost}\n      settings:\n        type: fanout\n        durable: false\n        autoDelete: true\n  testQueue:\n    type: rabbitmq:Queue\n    name: test\n    properties:\n      name: test\n      vhost: ${guest.vhost}\n      settings:\n        durable: true\n        autoDelete: false\n  testBinding:\n    type: rabbitmq:Binding\n    name: test\n    properties:\n      source: ${testExchange.name}\n      vhost: ${test.name}\n      destination: ${testQueue.name}\n      destinationType: queue\n      routingKey: '#'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBindings can be imported using the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e which is composed of\n  `vhost/source/destination/destination_type/properties_key`. E.g.\n\n```sh\n$ pulumi import rabbitmq:index/binding:Binding test test/test/test/queue/%23\n```\n\n","properties":{"arguments":{"type":"object","additionalProperties":{"type":"string"},"description":"Additional key/value arguments for the binding.\n"},"argumentsJson":{"type":"string"},"destination":{"type":"string","description":"The destination queue or exchange.\n"},"destinationType":{"type":"string","description":"The type of destination (queue or exchange).\n"},"propertiesKey":{"type":"string","description":"A unique key to refer to the binding.\n"},"routingKey":{"type":"string","description":"A routing key for the binding.\n"},"source":{"type":"string","description":"The source exchange.\n"},"vhost":{"type":"string","description":"The vhost to create the resource in.\n"}},"required":["destination","destinationType","propertiesKey","source","vhost"],"inputProperties":{"arguments":{"type":"object","additionalProperties":{"type":"string"},"description":"Additional key/value arguments for the binding.\n","willReplaceOnChanges":true},"argumentsJson":{"type":"string","willReplaceOnChanges":true},"destination":{"type":"string","description":"The destination queue or exchange.\n","willReplaceOnChanges":true},"destinationType":{"type":"string","description":"The type of destination (queue or exchange).\n","willReplaceOnChanges":true},"routingKey":{"type":"string","description":"A routing key for the binding.\n","willReplaceOnChanges":true},"source":{"type":"string","description":"The source exchange.\n","willReplaceOnChanges":true},"vhost":{"type":"string","description":"The vhost to create the resource in.\n","willReplaceOnChanges":true}},"requiredInputs":["destination","destinationType","source","vhost"],"stateInputs":{"description":"Input properties used for looking up and filtering Binding resources.\n","properties":{"arguments":{"type":"object","additionalProperties":{"type":"string"},"description":"Additional key/value arguments for the binding.\n","willReplaceOnChanges":true},"argumentsJson":{"type":"string","willReplaceOnChanges":true},"destination":{"type":"string","description":"The destination queue or exchange.\n","willReplaceOnChanges":true},"destinationType":{"type":"string","description":"The type of destination (queue or exchange).\n","willReplaceOnChanges":true},"propertiesKey":{"type":"string","description":"A unique key to refer to the binding.\n"},"routingKey":{"type":"string","description":"A routing key for the binding.\n","willReplaceOnChanges":true},"source":{"type":"string","description":"The source exchange.\n","willReplaceOnChanges":true},"vhost":{"type":"string","description":"The vhost to create the resource in.\n","willReplaceOnChanges":true}},"type":"object"}},"rabbitmq:index/exchange:Exchange":{"description":"The `\u003cspan pulumi-lang-nodejs=\"`rabbitmq.Exchange`\" pulumi-lang-dotnet=\"`rabbitmq.Exchange`\" pulumi-lang-go=\"`Exchange`\" pulumi-lang-python=\"`Exchange`\" pulumi-lang-yaml=\"`rabbitmq.Exchange`\" pulumi-lang-java=\"`rabbitmq.Exchange`\"\u003e`rabbitmq.Exchange`\u003c/span\u003e` resource creates and manages an exchange.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as rabbitmq from \"@pulumi/rabbitmq\";\n\nconst test = new rabbitmq.VHost(\"test\", {name: \"test\"});\nconst guest = new rabbitmq.Permissions(\"guest\", {\n    user: \"guest\",\n    vhost: test.name,\n    permissions: {\n        configure: \".*\",\n        write: \".*\",\n        read: \".*\",\n    },\n});\nconst testExchange = new rabbitmq.Exchange(\"test\", {\n    name: \"test\",\n    vhost: guest.vhost,\n    settings: {\n        type: \"fanout\",\n        durable: false,\n        autoDelete: true,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_rabbitmq as rabbitmq\n\ntest = rabbitmq.VHost(\"test\", name=\"test\")\nguest = rabbitmq.Permissions(\"guest\",\n    user=\"guest\",\n    vhost=test.name,\n    permissions={\n        \"configure\": \".*\",\n        \"write\": \".*\",\n        \"read\": \".*\",\n    })\ntest_exchange = rabbitmq.Exchange(\"test\",\n    name=\"test\",\n    vhost=guest.vhost,\n    settings={\n        \"type\": \"fanout\",\n        \"durable\": False,\n        \"auto_delete\": True,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing RabbitMQ = Pulumi.RabbitMQ;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new RabbitMQ.VHost(\"test\", new()\n    {\n        Name = \"test\",\n    });\n\n    var guest = new RabbitMQ.Permissions(\"guest\", new()\n    {\n        User = \"guest\",\n        Vhost = test.Name,\n        PermissionDetails = new RabbitMQ.Inputs.PermissionsPermissionsArgs\n        {\n            Configure = \".*\",\n            Write = \".*\",\n            Read = \".*\",\n        },\n    });\n\n    var testExchange = new RabbitMQ.Exchange(\"test\", new()\n    {\n        Name = \"test\",\n        Vhost = guest.Vhost,\n        Settings = new RabbitMQ.Inputs.ExchangeSettingsArgs\n        {\n            Type = \"fanout\",\n            Durable = false,\n            AutoDelete = true,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-rabbitmq/sdk/v3/go/rabbitmq\"\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, err := rabbitmq.NewVHost(ctx, \"test\", \u0026rabbitmq.VHostArgs{\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\tguest, err := rabbitmq.NewPermissions(ctx, \"guest\", \u0026rabbitmq.PermissionsArgs{\n\t\t\tUser:  pulumi.String(\"guest\"),\n\t\t\tVhost: test.Name,\n\t\t\tPermissions: \u0026rabbitmq.PermissionsPermissionsArgs{\n\t\t\t\tConfigure: pulumi.String(\".*\"),\n\t\t\t\tWrite:     pulumi.String(\".*\"),\n\t\t\t\tRead:      pulumi.String(\".*\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = rabbitmq.NewExchange(ctx, \"test\", \u0026rabbitmq.ExchangeArgs{\n\t\t\tName:  pulumi.String(\"test\"),\n\t\t\tVhost: guest.Vhost,\n\t\t\tSettings: \u0026rabbitmq.ExchangeSettingsArgs{\n\t\t\t\tType:       pulumi.String(\"fanout\"),\n\t\t\t\tDurable:    pulumi.Bool(false),\n\t\t\t\tAutoDelete: pulumi.Bool(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.rabbitmq.VHost;\nimport com.pulumi.rabbitmq.VHostArgs;\nimport com.pulumi.rabbitmq.Permissions;\nimport com.pulumi.rabbitmq.PermissionsArgs;\nimport com.pulumi.rabbitmq.inputs.PermissionsPermissionsArgs;\nimport com.pulumi.rabbitmq.Exchange;\nimport com.pulumi.rabbitmq.ExchangeArgs;\nimport com.pulumi.rabbitmq.inputs.ExchangeSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 VHost(\"test\", VHostArgs.builder()\n            .name(\"test\")\n            .build());\n\n        var guest = new Permissions(\"guest\", PermissionsArgs.builder()\n            .user(\"guest\")\n            .vhost(test.name())\n            .permissions(PermissionsPermissionsArgs.builder()\n                .configure(\".*\")\n                .write(\".*\")\n                .read(\".*\")\n                .build())\n            .build());\n\n        var testExchange = new Exchange(\"testExchange\", ExchangeArgs.builder()\n            .name(\"test\")\n            .vhost(guest.vhost())\n            .settings(ExchangeSettingsArgs.builder()\n                .type(\"fanout\")\n                .durable(false)\n                .autoDelete(true)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: rabbitmq:VHost\n    properties:\n      name: test\n  guest:\n    type: rabbitmq:Permissions\n    properties:\n      user: guest\n      vhost: ${test.name}\n      permissions:\n        configure: .*\n        write: .*\n        read: .*\n  testExchange:\n    type: rabbitmq:Exchange\n    name: test\n    properties:\n      name: test\n      vhost: ${guest.vhost}\n      settings:\n        type: fanout\n        durable: false\n        autoDelete: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nExchanges can be imported using the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e which is composed of  `name@vhost`.\nE.g.\n\n```sh\n$ pulumi import rabbitmq:index/exchange:Exchange test test@vhost\n```\n\n","properties":{"name":{"type":"string","description":"The name of the exchange.\n"},"settings":{"$ref":"#/types/rabbitmq:index/ExchangeSettings:ExchangeSettings","description":"The settings of the exchange. The structure is\ndescribed below.\n"},"vhost":{"type":"string","description":"The vhost to create the resource in.\n"}},"required":["name","settings"],"inputProperties":{"name":{"type":"string","description":"The name of the exchange.\n","willReplaceOnChanges":true},"settings":{"$ref":"#/types/rabbitmq:index/ExchangeSettings:ExchangeSettings","description":"The settings of the exchange. The structure is\ndescribed below.\n","willReplaceOnChanges":true},"vhost":{"type":"string","description":"The vhost to create the resource in.\n","willReplaceOnChanges":true}},"requiredInputs":["settings"],"stateInputs":{"description":"Input properties used for looking up and filtering Exchange resources.\n","properties":{"name":{"type":"string","description":"The name of the exchange.\n","willReplaceOnChanges":true},"settings":{"$ref":"#/types/rabbitmq:index/ExchangeSettings:ExchangeSettings","description":"The settings of the exchange. The structure is\ndescribed below.\n","willReplaceOnChanges":true},"vhost":{"type":"string","description":"The vhost to create the resource in.\n","willReplaceOnChanges":true}},"type":"object"}},"rabbitmq:index/federationUpstream:FederationUpstream":{"description":"The `\u003cspan pulumi-lang-nodejs=\"`rabbitmq.FederationUpstream`\" pulumi-lang-dotnet=\"`rabbitmq.FederationUpstream`\" pulumi-lang-go=\"`FederationUpstream`\" pulumi-lang-python=\"`FederationUpstream`\" pulumi-lang-yaml=\"`rabbitmq.FederationUpstream`\" pulumi-lang-java=\"`rabbitmq.FederationUpstream`\"\u003e`rabbitmq.FederationUpstream`\u003c/span\u003e` resource creates and manages a federation upstream parameter.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as rabbitmq from \"@pulumi/rabbitmq\";\n\nconst test = new rabbitmq.VHost(\"test\", {name: \"test\"});\nconst guest = new rabbitmq.Permissions(\"guest\", {\n    user: \"guest\",\n    vhost: test.name,\n    permissions: {\n        configure: \".*\",\n        write: \".*\",\n        read: \".*\",\n    },\n});\n// downstream exchange\nconst foo = new rabbitmq.Exchange(\"foo\", {\n    name: \"foo\",\n    vhost: guest.vhost,\n    settings: {\n        type: \"topic\",\n        durable: true,\n    },\n});\n// upstream broker\nconst fooFederationUpstream = new rabbitmq.FederationUpstream(\"foo\", {\n    name: \"foo\",\n    vhost: guest.vhost,\n    definition: {\n        uri: \"amqp://guest:guest@upstream-server-name:5672/%2f\",\n        prefetchCount: 1000,\n        reconnectDelay: 5,\n        ackMode: \"on-confirm\",\n        trustUserId: false,\n        maxHops: 1,\n    },\n});\nconst fooPolicy = new rabbitmq.Policy(\"foo\", {\n    name: \"foo\",\n    vhost: guest.vhost,\n    policy: {\n        pattern: pulumi.interpolate`(^${foo.name}$)`,\n        priority: 1,\n        applyTo: \"exchanges\",\n        definition: {\n            \"federation-upstream\": fooFederationUpstream.name,\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_rabbitmq as rabbitmq\n\ntest = rabbitmq.VHost(\"test\", name=\"test\")\nguest = rabbitmq.Permissions(\"guest\",\n    user=\"guest\",\n    vhost=test.name,\n    permissions={\n        \"configure\": \".*\",\n        \"write\": \".*\",\n        \"read\": \".*\",\n    })\n# downstream exchange\nfoo = rabbitmq.Exchange(\"foo\",\n    name=\"foo\",\n    vhost=guest.vhost,\n    settings={\n        \"type\": \"topic\",\n        \"durable\": True,\n    })\n# upstream broker\nfoo_federation_upstream = rabbitmq.FederationUpstream(\"foo\",\n    name=\"foo\",\n    vhost=guest.vhost,\n    definition={\n        \"uri\": \"amqp://guest:guest@upstream-server-name:5672/%2f\",\n        \"prefetch_count\": 1000,\n        \"reconnect_delay\": 5,\n        \"ack_mode\": \"on-confirm\",\n        \"trust_user_id\": False,\n        \"max_hops\": 1,\n    })\nfoo_policy = rabbitmq.Policy(\"foo\",\n    name=\"foo\",\n    vhost=guest.vhost,\n    policy={\n        \"pattern\": foo.name.apply(lambda name: f\"(^{name}$)\"),\n        \"priority\": 1,\n        \"apply_to\": \"exchanges\",\n        \"definition\": {\n            \"federation-upstream\": foo_federation_upstream.name,\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing RabbitMQ = Pulumi.RabbitMQ;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new RabbitMQ.VHost(\"test\", new()\n    {\n        Name = \"test\",\n    });\n\n    var guest = new RabbitMQ.Permissions(\"guest\", new()\n    {\n        User = \"guest\",\n        Vhost = test.Name,\n        PermissionDetails = new RabbitMQ.Inputs.PermissionsPermissionsArgs\n        {\n            Configure = \".*\",\n            Write = \".*\",\n            Read = \".*\",\n        },\n    });\n\n    // downstream exchange\n    var foo = new RabbitMQ.Exchange(\"foo\", new()\n    {\n        Name = \"foo\",\n        Vhost = guest.Vhost,\n        Settings = new RabbitMQ.Inputs.ExchangeSettingsArgs\n        {\n            Type = \"topic\",\n            Durable = true,\n        },\n    });\n\n    // upstream broker\n    var fooFederationUpstream = new RabbitMQ.FederationUpstream(\"foo\", new()\n    {\n        Name = \"foo\",\n        Vhost = guest.Vhost,\n        Definition = new RabbitMQ.Inputs.FederationUpstreamDefinitionArgs\n        {\n            Uri = \"amqp://guest:guest@upstream-server-name:5672/%2f\",\n            PrefetchCount = 1000,\n            ReconnectDelay = 5,\n            AckMode = \"on-confirm\",\n            TrustUserId = false,\n            MaxHops = 1,\n        },\n    });\n\n    var fooPolicy = new RabbitMQ.Policy(\"foo\", new()\n    {\n        Name = \"foo\",\n        Vhost = guest.Vhost,\n        PolicyBlock = new RabbitMQ.Inputs.PolicyPolicyArgs\n        {\n            Pattern = foo.Name.Apply(name =\u003e $\"(^{name}$)\"),\n            Priority = 1,\n            ApplyTo = \"exchanges\",\n            Definition = \n            {\n                { \"federation-upstream\", fooFederationUpstream.Name },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-rabbitmq/sdk/v3/go/rabbitmq\"\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, err := rabbitmq.NewVHost(ctx, \"test\", \u0026rabbitmq.VHostArgs{\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\tguest, err := rabbitmq.NewPermissions(ctx, \"guest\", \u0026rabbitmq.PermissionsArgs{\n\t\t\tUser:  pulumi.String(\"guest\"),\n\t\t\tVhost: test.Name,\n\t\t\tPermissions: \u0026rabbitmq.PermissionsPermissionsArgs{\n\t\t\t\tConfigure: pulumi.String(\".*\"),\n\t\t\t\tWrite:     pulumi.String(\".*\"),\n\t\t\t\tRead:      pulumi.String(\".*\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// downstream exchange\n\t\tfoo, err := rabbitmq.NewExchange(ctx, \"foo\", \u0026rabbitmq.ExchangeArgs{\n\t\t\tName:  pulumi.String(\"foo\"),\n\t\t\tVhost: guest.Vhost,\n\t\t\tSettings: \u0026rabbitmq.ExchangeSettingsArgs{\n\t\t\t\tType:    pulumi.String(\"topic\"),\n\t\t\t\tDurable: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// upstream broker\n\t\tfooFederationUpstream, err := rabbitmq.NewFederationUpstream(ctx, \"foo\", \u0026rabbitmq.FederationUpstreamArgs{\n\t\t\tName:  pulumi.String(\"foo\"),\n\t\t\tVhost: guest.Vhost,\n\t\t\tDefinition: \u0026rabbitmq.FederationUpstreamDefinitionArgs{\n\t\t\t\tUri:            pulumi.String(\"amqp://guest:guest@upstream-server-name:5672/%2f\"),\n\t\t\t\tPrefetchCount:  pulumi.Int(1000),\n\t\t\t\tReconnectDelay: pulumi.Int(5),\n\t\t\t\tAckMode:        pulumi.String(\"on-confirm\"),\n\t\t\t\tTrustUserId:    pulumi.Bool(false),\n\t\t\t\tMaxHops:        pulumi.Int(1),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = rabbitmq.NewPolicy(ctx, \"foo\", \u0026rabbitmq.PolicyArgs{\n\t\t\tName:  pulumi.String(\"foo\"),\n\t\t\tVhost: guest.Vhost,\n\t\t\tPolicy: \u0026rabbitmq.PolicyPolicyArgs{\n\t\t\t\tPattern: foo.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"(^%v$)\", name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\tApplyTo:  pulumi.String(\"exchanges\"),\n\t\t\t\tDefinition: pulumi.StringMap{\n\t\t\t\t\t\"federation-upstream\": fooFederationUpstream.Name,\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.rabbitmq.VHost;\nimport com.pulumi.rabbitmq.VHostArgs;\nimport com.pulumi.rabbitmq.Permissions;\nimport com.pulumi.rabbitmq.PermissionsArgs;\nimport com.pulumi.rabbitmq.inputs.PermissionsPermissionsArgs;\nimport com.pulumi.rabbitmq.Exchange;\nimport com.pulumi.rabbitmq.ExchangeArgs;\nimport com.pulumi.rabbitmq.inputs.ExchangeSettingsArgs;\nimport com.pulumi.rabbitmq.FederationUpstream;\nimport com.pulumi.rabbitmq.FederationUpstreamArgs;\nimport com.pulumi.rabbitmq.inputs.FederationUpstreamDefinitionArgs;\nimport com.pulumi.rabbitmq.Policy;\nimport com.pulumi.rabbitmq.PolicyArgs;\nimport com.pulumi.rabbitmq.inputs.PolicyPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 VHost(\"test\", VHostArgs.builder()\n            .name(\"test\")\n            .build());\n\n        var guest = new Permissions(\"guest\", PermissionsArgs.builder()\n            .user(\"guest\")\n            .vhost(test.name())\n            .permissions(PermissionsPermissionsArgs.builder()\n                .configure(\".*\")\n                .write(\".*\")\n                .read(\".*\")\n                .build())\n            .build());\n\n        // downstream exchange\n        var foo = new Exchange(\"foo\", ExchangeArgs.builder()\n            .name(\"foo\")\n            .vhost(guest.vhost())\n            .settings(ExchangeSettingsArgs.builder()\n                .type(\"topic\")\n                .durable(true)\n                .build())\n            .build());\n\n        // upstream broker\n        var fooFederationUpstream = new FederationUpstream(\"fooFederationUpstream\", FederationUpstreamArgs.builder()\n            .name(\"foo\")\n            .vhost(guest.vhost())\n            .definition(FederationUpstreamDefinitionArgs.builder()\n                .uri(\"amqp://guest:guest@upstream-server-name:5672/%2f\")\n                .prefetchCount(1000)\n                .reconnectDelay(5)\n                .ackMode(\"on-confirm\")\n                .trustUserId(false)\n                .maxHops(1)\n                .build())\n            .build());\n\n        var fooPolicy = new Policy(\"fooPolicy\", PolicyArgs.builder()\n            .name(\"foo\")\n            .vhost(guest.vhost())\n            .policy(PolicyPolicyArgs.builder()\n                .pattern(foo.name().applyValue(_name -\u003e String.format(\"(^%s$)\", _name)))\n                .priority(1)\n                .applyTo(\"exchanges\")\n                .definition(Map.of(\"federation-upstream\", fooFederationUpstream.name()))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: rabbitmq:VHost\n    properties:\n      name: test\n  guest:\n    type: rabbitmq:Permissions\n    properties:\n      user: guest\n      vhost: ${test.name}\n      permissions:\n        configure: .*\n        write: .*\n        read: .*\n  # downstream exchange\n  foo:\n    type: rabbitmq:Exchange\n    properties:\n      name: foo\n      vhost: ${guest.vhost}\n      settings:\n        type: topic\n        durable: 'true'\n  # upstream broker\n  fooFederationUpstream:\n    type: rabbitmq:FederationUpstream\n    name: foo\n    properties:\n      name: foo\n      vhost: ${guest.vhost}\n      definition:\n        uri: amqp://guest:guest@upstream-server-name:5672/%2f\n        prefetchCount: 1000\n        reconnectDelay: 5\n        ackMode: on-confirm\n        trustUserId: false\n        maxHops: 1\n  fooPolicy:\n    type: rabbitmq:Policy\n    name: foo\n    properties:\n      name: foo\n      vhost: ${guest.vhost}\n      policy:\n        pattern: (^${foo.name}$)\n        priority: 1\n        applyTo: exchanges\n        definition:\n          federation-upstream: ${fooFederationUpstream.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nA Federation upstream can be imported using the resource \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e which is composed of `name@vhost`, e.g.\n\n```sh\n$ pulumi import rabbitmq:index/federationUpstream:FederationUpstream foo foo@test\n```\n\n","properties":{"component":{"type":"string","description":"Set to `federation-upstream` by the underlying RabbitMQ provider. You do not set this attribute but will see it in state and plan output.\n"},"definition":{"$ref":"#/types/rabbitmq:index/FederationUpstreamDefinition:FederationUpstreamDefinition","description":"The configuration of the federation upstream. The structure is described below.\n"},"name":{"type":"string","description":"The name of the federation upstream.\n"},"vhost":{"type":"string","description":"The vhost to create the resource in.\n"}},"required":["component","definition","name","vhost"],"inputProperties":{"definition":{"$ref":"#/types/rabbitmq:index/FederationUpstreamDefinition:FederationUpstreamDefinition","description":"The configuration of the federation upstream. The structure is described below.\n"},"name":{"type":"string","description":"The name of the federation upstream.\n","willReplaceOnChanges":true},"vhost":{"type":"string","description":"The vhost to create the resource in.\n","willReplaceOnChanges":true}},"requiredInputs":["definition","vhost"],"stateInputs":{"description":"Input properties used for looking up and filtering FederationUpstream resources.\n","properties":{"component":{"type":"string","description":"Set to `federation-upstream` by the underlying RabbitMQ provider. You do not set this attribute but will see it in state and plan output.\n"},"definition":{"$ref":"#/types/rabbitmq:index/FederationUpstreamDefinition:FederationUpstreamDefinition","description":"The configuration of the federation upstream. The structure is described below.\n"},"name":{"type":"string","description":"The name of the federation upstream.\n","willReplaceOnChanges":true},"vhost":{"type":"string","description":"The vhost to create the resource in.\n","willReplaceOnChanges":true}},"type":"object"}},"rabbitmq:index/operatorPolicy:OperatorPolicy":{"description":"The `\u003cspan pulumi-lang-nodejs=\"`rabbitmq.OperatorPolicy`\" pulumi-lang-dotnet=\"`rabbitmq.OperatorPolicy`\" pulumi-lang-go=\"`OperatorPolicy`\" pulumi-lang-python=\"`OperatorPolicy`\" pulumi-lang-yaml=\"`rabbitmq.OperatorPolicy`\" pulumi-lang-java=\"`rabbitmq.OperatorPolicy`\"\u003e`rabbitmq.OperatorPolicy`\u003c/span\u003e` resource creates and manages operator policies for queues.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as rabbitmq from \"@pulumi/rabbitmq\";\n\nconst test = new rabbitmq.VHost(\"test\", {name: \"test\"});\nconst guest = new rabbitmq.Permissions(\"guest\", {\n    user: \"guest\",\n    vhost: test.name,\n    permissions: {\n        configure: \".*\",\n        write: \".*\",\n        read: \".*\",\n    },\n});\nconst testOperatorPolicy = new rabbitmq.OperatorPolicy(\"test\", {\n    name: \"test\",\n    vhost: guest.vhost,\n    policy: {\n        pattern: \".*\",\n        priority: 0,\n        applyTo: \"queues\",\n        definition: {\n            \"message-ttl\": \"3600000\",\n            expires: \"1800000\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_rabbitmq as rabbitmq\n\ntest = rabbitmq.VHost(\"test\", name=\"test\")\nguest = rabbitmq.Permissions(\"guest\",\n    user=\"guest\",\n    vhost=test.name,\n    permissions={\n        \"configure\": \".*\",\n        \"write\": \".*\",\n        \"read\": \".*\",\n    })\ntest_operator_policy = rabbitmq.OperatorPolicy(\"test\",\n    name=\"test\",\n    vhost=guest.vhost,\n    policy={\n        \"pattern\": \".*\",\n        \"priority\": 0,\n        \"apply_to\": \"queues\",\n        \"definition\": {\n            \"message-ttl\": \"3600000\",\n            \"expires\": \"1800000\",\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing RabbitMQ = Pulumi.RabbitMQ;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new RabbitMQ.VHost(\"test\", new()\n    {\n        Name = \"test\",\n    });\n\n    var guest = new RabbitMQ.Permissions(\"guest\", new()\n    {\n        User = \"guest\",\n        Vhost = test.Name,\n        PermissionDetails = new RabbitMQ.Inputs.PermissionsPermissionsArgs\n        {\n            Configure = \".*\",\n            Write = \".*\",\n            Read = \".*\",\n        },\n    });\n\n    var testOperatorPolicy = new RabbitMQ.OperatorPolicy(\"test\", new()\n    {\n        Name = \"test\",\n        Vhost = guest.Vhost,\n        Policy = new RabbitMQ.Inputs.OperatorPolicyPolicyArgs\n        {\n            Pattern = \".*\",\n            Priority = 0,\n            ApplyTo = \"queues\",\n            Definition = \n            {\n                { \"message-ttl\", \"3600000\" },\n                { \"expires\", \"1800000\" },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-rabbitmq/sdk/v3/go/rabbitmq\"\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, err := rabbitmq.NewVHost(ctx, \"test\", \u0026rabbitmq.VHostArgs{\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\tguest, err := rabbitmq.NewPermissions(ctx, \"guest\", \u0026rabbitmq.PermissionsArgs{\n\t\t\tUser:  pulumi.String(\"guest\"),\n\t\t\tVhost: test.Name,\n\t\t\tPermissions: \u0026rabbitmq.PermissionsPermissionsArgs{\n\t\t\t\tConfigure: pulumi.String(\".*\"),\n\t\t\t\tWrite:     pulumi.String(\".*\"),\n\t\t\t\tRead:      pulumi.String(\".*\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = rabbitmq.NewOperatorPolicy(ctx, \"test\", \u0026rabbitmq.OperatorPolicyArgs{\n\t\t\tName:  pulumi.String(\"test\"),\n\t\t\tVhost: guest.Vhost,\n\t\t\tPolicy: \u0026rabbitmq.OperatorPolicyPolicyArgs{\n\t\t\t\tPattern:  pulumi.String(\".*\"),\n\t\t\t\tPriority: pulumi.Int(0),\n\t\t\t\tApplyTo:  pulumi.String(\"queues\"),\n\t\t\t\tDefinition: pulumi.StringMap{\n\t\t\t\t\t\"message-ttl\": pulumi.String(\"3600000\"),\n\t\t\t\t\t\"expires\":     pulumi.String(\"1800000\"),\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.rabbitmq.VHost;\nimport com.pulumi.rabbitmq.VHostArgs;\nimport com.pulumi.rabbitmq.Permissions;\nimport com.pulumi.rabbitmq.PermissionsArgs;\nimport com.pulumi.rabbitmq.inputs.PermissionsPermissionsArgs;\nimport com.pulumi.rabbitmq.OperatorPolicy;\nimport com.pulumi.rabbitmq.OperatorPolicyArgs;\nimport com.pulumi.rabbitmq.inputs.OperatorPolicyPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 VHost(\"test\", VHostArgs.builder()\n            .name(\"test\")\n            .build());\n\n        var guest = new Permissions(\"guest\", PermissionsArgs.builder()\n            .user(\"guest\")\n            .vhost(test.name())\n            .permissions(PermissionsPermissionsArgs.builder()\n                .configure(\".*\")\n                .write(\".*\")\n                .read(\".*\")\n                .build())\n            .build());\n\n        var testOperatorPolicy = new OperatorPolicy(\"testOperatorPolicy\", OperatorPolicyArgs.builder()\n            .name(\"test\")\n            .vhost(guest.vhost())\n            .policy(OperatorPolicyPolicyArgs.builder()\n                .pattern(\".*\")\n                .priority(0)\n                .applyTo(\"queues\")\n                .definition(Map.ofEntries(\n                    Map.entry(\"message-ttl\", \"3600000\"),\n                    Map.entry(\"expires\", \"1800000\")\n                ))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: rabbitmq:VHost\n    properties:\n      name: test\n  guest:\n    type: rabbitmq:Permissions\n    properties:\n      user: guest\n      vhost: ${test.name}\n      permissions:\n        configure: .*\n        write: .*\n        read: .*\n  testOperatorPolicy:\n    type: rabbitmq:OperatorPolicy\n    name: test\n    properties:\n      name: test\n      vhost: ${guest.vhost}\n      policy:\n        pattern: .*\n        priority: 0\n        applyTo: queues\n        definition:\n          message-ttl: 3.6e+06\n          expires: 1.8e+06\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nOperator policies can be imported using the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e which is composed of `name@vhost`.\nE.g.\n\n```sh\n$ pulumi import rabbitmq:index/operatorPolicy:OperatorPolicy test name@vhost\n```\n\n","properties":{"name":{"type":"string","description":"The name of the operator policy.\n"},"policy":{"$ref":"#/types/rabbitmq:index/OperatorPolicyPolicy:OperatorPolicyPolicy","description":"The settings of the operator policy. The structure is\ndescribed below.\n"},"vhost":{"type":"string","description":"The vhost to create the resource in.\n"}},"required":["name","policy","vhost"],"inputProperties":{"name":{"type":"string","description":"The name of the operator policy.\n","willReplaceOnChanges":true},"policy":{"$ref":"#/types/rabbitmq:index/OperatorPolicyPolicy:OperatorPolicyPolicy","description":"The settings of the operator policy. The structure is\ndescribed below.\n"},"vhost":{"type":"string","description":"The vhost to create the resource in.\n","willReplaceOnChanges":true}},"requiredInputs":["policy","vhost"],"stateInputs":{"description":"Input properties used for looking up and filtering OperatorPolicy resources.\n","properties":{"name":{"type":"string","description":"The name of the operator policy.\n","willReplaceOnChanges":true},"policy":{"$ref":"#/types/rabbitmq:index/OperatorPolicyPolicy:OperatorPolicyPolicy","description":"The settings of the operator policy. The structure is\ndescribed below.\n"},"vhost":{"type":"string","description":"The vhost to create the resource in.\n","willReplaceOnChanges":true}},"type":"object"}},"rabbitmq:index/permissions:Permissions":{"description":"The `\u003cspan pulumi-lang-nodejs=\"`rabbitmq.Permissions`\" pulumi-lang-dotnet=\"`rabbitmq.Permissions`\" pulumi-lang-go=\"`Permissions`\" pulumi-lang-python=\"`Permissions`\" pulumi-lang-yaml=\"`rabbitmq.Permissions`\" pulumi-lang-java=\"`rabbitmq.Permissions`\"\u003e`rabbitmq.Permissions`\u003c/span\u003e` resource creates and manages a user's set of\npermissions.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as rabbitmq from \"@pulumi/rabbitmq\";\n\nconst test = new rabbitmq.VHost(\"test\", {name: \"test\"});\nconst testUser = new rabbitmq.User(\"test\", {\n    name: \"mctest\",\n    password: \"foobar\",\n    tags: [\"administrator\"],\n});\nconst testPermissions = new rabbitmq.Permissions(\"test\", {\n    user: testUser.name,\n    vhost: test.name,\n    permissions: {\n        configure: \".*\",\n        write: \".*\",\n        read: \".*\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_rabbitmq as rabbitmq\n\ntest = rabbitmq.VHost(\"test\", name=\"test\")\ntest_user = rabbitmq.User(\"test\",\n    name=\"mctest\",\n    password=\"foobar\",\n    tags=[\"administrator\"])\ntest_permissions = rabbitmq.Permissions(\"test\",\n    user=test_user.name,\n    vhost=test.name,\n    permissions={\n        \"configure\": \".*\",\n        \"write\": \".*\",\n        \"read\": \".*\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing RabbitMQ = Pulumi.RabbitMQ;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new RabbitMQ.VHost(\"test\", new()\n    {\n        Name = \"test\",\n    });\n\n    var testUser = new RabbitMQ.User(\"test\", new()\n    {\n        Name = \"mctest\",\n        Password = \"foobar\",\n        Tags = new[]\n        {\n            \"administrator\",\n        },\n    });\n\n    var testPermissions = new RabbitMQ.Permissions(\"test\", new()\n    {\n        User = testUser.Name,\n        Vhost = test.Name,\n        PermissionDetails = new RabbitMQ.Inputs.PermissionsPermissionsArgs\n        {\n            Configure = \".*\",\n            Write = \".*\",\n            Read = \".*\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-rabbitmq/sdk/v3/go/rabbitmq\"\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, err := rabbitmq.NewVHost(ctx, \"test\", \u0026rabbitmq.VHostArgs{\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\ttestUser, err := rabbitmq.NewUser(ctx, \"test\", \u0026rabbitmq.UserArgs{\n\t\t\tName:     pulumi.String(\"mctest\"),\n\t\t\tPassword: pulumi.String(\"foobar\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"administrator\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = rabbitmq.NewPermissions(ctx, \"test\", \u0026rabbitmq.PermissionsArgs{\n\t\t\tUser:  testUser.Name,\n\t\t\tVhost: test.Name,\n\t\t\tPermissions: \u0026rabbitmq.PermissionsPermissionsArgs{\n\t\t\t\tConfigure: pulumi.String(\".*\"),\n\t\t\t\tWrite:     pulumi.String(\".*\"),\n\t\t\t\tRead:      pulumi.String(\".*\"),\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.rabbitmq.VHost;\nimport com.pulumi.rabbitmq.VHostArgs;\nimport com.pulumi.rabbitmq.User;\nimport com.pulumi.rabbitmq.UserArgs;\nimport com.pulumi.rabbitmq.Permissions;\nimport com.pulumi.rabbitmq.PermissionsArgs;\nimport com.pulumi.rabbitmq.inputs.PermissionsPermissionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 VHost(\"test\", VHostArgs.builder()\n            .name(\"test\")\n            .build());\n\n        var testUser = new User(\"testUser\", UserArgs.builder()\n            .name(\"mctest\")\n            .password(\"foobar\")\n            .tags(\"administrator\")\n            .build());\n\n        var testPermissions = new Permissions(\"testPermissions\", PermissionsArgs.builder()\n            .user(testUser.name())\n            .vhost(test.name())\n            .permissions(PermissionsPermissionsArgs.builder()\n                .configure(\".*\")\n                .write(\".*\")\n                .read(\".*\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: rabbitmq:VHost\n    properties:\n      name: test\n  testUser:\n    type: rabbitmq:User\n    name: test\n    properties:\n      name: mctest\n      password: foobar\n      tags:\n        - administrator\n  testPermissions:\n    type: rabbitmq:Permissions\n    name: test\n    properties:\n      user: ${testUser.name}\n      vhost: ${test.name}\n      permissions:\n        configure: .*\n        write: .*\n        read: .*\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPermissions can be imported using the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e which is composed of  `user@vhost`.\nE.g.\n\n```sh\n$ pulumi import rabbitmq:index/permissions:Permissions test user@vhost\n```\n\n","properties":{"permissions":{"$ref":"#/types/rabbitmq:index/PermissionsPermissions:PermissionsPermissions","description":"The settings of the permissions. The structure is\ndescribed below.\n","language":{"csharp":{"name":"PermissionDetails"}}},"user":{"type":"string","description":"The user to apply the permissions to.\n"},"vhost":{"type":"string","description":"The vhost to create the resource in.\n"}},"required":["permissions","user"],"inputProperties":{"permissions":{"$ref":"#/types/rabbitmq:index/PermissionsPermissions:PermissionsPermissions","description":"The settings of the permissions. The structure is\ndescribed below.\n","language":{"csharp":{"name":"PermissionDetails"}}},"user":{"type":"string","description":"The user to apply the permissions to.\n","willReplaceOnChanges":true},"vhost":{"type":"string","description":"The vhost to create the resource in.\n","willReplaceOnChanges":true}},"requiredInputs":["permissions","user"],"stateInputs":{"description":"Input properties used for looking up and filtering Permissions resources.\n","properties":{"permissions":{"$ref":"#/types/rabbitmq:index/PermissionsPermissions:PermissionsPermissions","description":"The settings of the permissions. The structure is\ndescribed below.\n","language":{"csharp":{"name":"PermissionDetails"}}},"user":{"type":"string","description":"The user to apply the permissions to.\n","willReplaceOnChanges":true},"vhost":{"type":"string","description":"The vhost to create the resource in.\n","willReplaceOnChanges":true}},"type":"object"}},"rabbitmq:index/policy:Policy":{"description":"The `\u003cspan pulumi-lang-nodejs=\"`rabbitmq.Policy`\" pulumi-lang-dotnet=\"`rabbitmq.Policy`\" pulumi-lang-go=\"`Policy`\" pulumi-lang-python=\"`Policy`\" pulumi-lang-yaml=\"`rabbitmq.Policy`\" pulumi-lang-java=\"`rabbitmq.Policy`\"\u003e`rabbitmq.Policy`\u003c/span\u003e` resource creates and manages policies for exchanges\nand queues.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as rabbitmq from \"@pulumi/rabbitmq\";\n\nconst test = new rabbitmq.VHost(\"test\", {name: \"test\"});\nconst guest = new rabbitmq.Permissions(\"guest\", {\n    user: \"guest\",\n    vhost: test.name,\n    permissions: {\n        configure: \".*\",\n        write: \".*\",\n        read: \".*\",\n    },\n});\nconst testPolicy = new rabbitmq.Policy(\"test\", {\n    name: \"test\",\n    vhost: guest.vhost,\n    policy: {\n        pattern: \".*\",\n        priority: 0,\n        applyTo: \"all\",\n        definition: {\n            \"ha-mode\": \"all\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_rabbitmq as rabbitmq\n\ntest = rabbitmq.VHost(\"test\", name=\"test\")\nguest = rabbitmq.Permissions(\"guest\",\n    user=\"guest\",\n    vhost=test.name,\n    permissions={\n        \"configure\": \".*\",\n        \"write\": \".*\",\n        \"read\": \".*\",\n    })\ntest_policy = rabbitmq.Policy(\"test\",\n    name=\"test\",\n    vhost=guest.vhost,\n    policy={\n        \"pattern\": \".*\",\n        \"priority\": 0,\n        \"apply_to\": \"all\",\n        \"definition\": {\n            \"ha-mode\": \"all\",\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing RabbitMQ = Pulumi.RabbitMQ;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new RabbitMQ.VHost(\"test\", new()\n    {\n        Name = \"test\",\n    });\n\n    var guest = new RabbitMQ.Permissions(\"guest\", new()\n    {\n        User = \"guest\",\n        Vhost = test.Name,\n        PermissionDetails = new RabbitMQ.Inputs.PermissionsPermissionsArgs\n        {\n            Configure = \".*\",\n            Write = \".*\",\n            Read = \".*\",\n        },\n    });\n\n    var testPolicy = new RabbitMQ.Policy(\"test\", new()\n    {\n        Name = \"test\",\n        Vhost = guest.Vhost,\n        PolicyBlock = new RabbitMQ.Inputs.PolicyPolicyArgs\n        {\n            Pattern = \".*\",\n            Priority = 0,\n            ApplyTo = \"all\",\n            Definition = \n            {\n                { \"ha-mode\", \"all\" },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-rabbitmq/sdk/v3/go/rabbitmq\"\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, err := rabbitmq.NewVHost(ctx, \"test\", \u0026rabbitmq.VHostArgs{\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\tguest, err := rabbitmq.NewPermissions(ctx, \"guest\", \u0026rabbitmq.PermissionsArgs{\n\t\t\tUser:  pulumi.String(\"guest\"),\n\t\t\tVhost: test.Name,\n\t\t\tPermissions: \u0026rabbitmq.PermissionsPermissionsArgs{\n\t\t\t\tConfigure: pulumi.String(\".*\"),\n\t\t\t\tWrite:     pulumi.String(\".*\"),\n\t\t\t\tRead:      pulumi.String(\".*\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = rabbitmq.NewPolicy(ctx, \"test\", \u0026rabbitmq.PolicyArgs{\n\t\t\tName:  pulumi.String(\"test\"),\n\t\t\tVhost: guest.Vhost,\n\t\t\tPolicy: \u0026rabbitmq.PolicyPolicyArgs{\n\t\t\t\tPattern:  pulumi.String(\".*\"),\n\t\t\t\tPriority: pulumi.Int(0),\n\t\t\t\tApplyTo:  pulumi.String(\"all\"),\n\t\t\t\tDefinition: pulumi.StringMap{\n\t\t\t\t\t\"ha-mode\": pulumi.String(\"all\"),\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.rabbitmq.VHost;\nimport com.pulumi.rabbitmq.VHostArgs;\nimport com.pulumi.rabbitmq.Permissions;\nimport com.pulumi.rabbitmq.PermissionsArgs;\nimport com.pulumi.rabbitmq.inputs.PermissionsPermissionsArgs;\nimport com.pulumi.rabbitmq.Policy;\nimport com.pulumi.rabbitmq.PolicyArgs;\nimport com.pulumi.rabbitmq.inputs.PolicyPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 VHost(\"test\", VHostArgs.builder()\n            .name(\"test\")\n            .build());\n\n        var guest = new Permissions(\"guest\", PermissionsArgs.builder()\n            .user(\"guest\")\n            .vhost(test.name())\n            .permissions(PermissionsPermissionsArgs.builder()\n                .configure(\".*\")\n                .write(\".*\")\n                .read(\".*\")\n                .build())\n            .build());\n\n        var testPolicy = new Policy(\"testPolicy\", PolicyArgs.builder()\n            .name(\"test\")\n            .vhost(guest.vhost())\n            .policy(PolicyPolicyArgs.builder()\n                .pattern(\".*\")\n                .priority(0)\n                .applyTo(\"all\")\n                .definition(Map.of(\"ha-mode\", \"all\"))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: rabbitmq:VHost\n    properties:\n      name: test\n  guest:\n    type: rabbitmq:Permissions\n    properties:\n      user: guest\n      vhost: ${test.name}\n      permissions:\n        configure: .*\n        write: .*\n        read: .*\n  testPolicy:\n    type: rabbitmq:Policy\n    name: test\n    properties:\n      name: test\n      vhost: ${guest.vhost}\n      policy:\n        pattern: .*\n        priority: 0\n        applyTo: all\n        definition:\n          ha-mode: all\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPolicies can be imported using the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e which is composed of `name@vhost`.\nE.g.\n\n```sh\n$ pulumi import rabbitmq:index/policy:Policy test name@vhost\n```\n\n","properties":{"name":{"type":"string","description":"The name of the policy.\n"},"policy":{"$ref":"#/types/rabbitmq:index/PolicyPolicy:PolicyPolicy","description":"The settings of the policy. The structure is\ndescribed below.\n","language":{"csharp":{"name":"PolicyBlock"}}},"vhost":{"type":"string","description":"The vhost to create the resource in.\n"}},"required":["name","policy","vhost"],"inputProperties":{"name":{"type":"string","description":"The name of the policy.\n","willReplaceOnChanges":true},"policy":{"$ref":"#/types/rabbitmq:index/PolicyPolicy:PolicyPolicy","description":"The settings of the policy. The structure is\ndescribed below.\n","language":{"csharp":{"name":"PolicyBlock"}}},"vhost":{"type":"string","description":"The vhost to create the resource in.\n","willReplaceOnChanges":true}},"requiredInputs":["policy","vhost"],"stateInputs":{"description":"Input properties used for looking up and filtering Policy resources.\n","properties":{"name":{"type":"string","description":"The name of the policy.\n","willReplaceOnChanges":true},"policy":{"$ref":"#/types/rabbitmq:index/PolicyPolicy:PolicyPolicy","description":"The settings of the policy. The structure is\ndescribed below.\n","language":{"csharp":{"name":"PolicyBlock"}}},"vhost":{"type":"string","description":"The vhost to create the resource in.\n","willReplaceOnChanges":true}},"type":"object"}},"rabbitmq:index/queue:Queue":{"description":"The `\u003cspan pulumi-lang-nodejs=\"`rabbitmq.Queue`\" pulumi-lang-dotnet=\"`rabbitmq.Queue`\" pulumi-lang-go=\"`Queue`\" pulumi-lang-python=\"`Queue`\" pulumi-lang-yaml=\"`rabbitmq.Queue`\" pulumi-lang-java=\"`rabbitmq.Queue`\"\u003e`rabbitmq.Queue`\u003c/span\u003e` resource creates and manages a queue.\n\n## Example Usage\n\n### Basic Example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as rabbitmq from \"@pulumi/rabbitmq\";\n\nconst test = new rabbitmq.VHost(\"test\", {name: \"test\"});\nconst guest = new rabbitmq.Permissions(\"guest\", {\n    user: \"guest\",\n    vhost: test.name,\n    permissions: {\n        configure: \".*\",\n        write: \".*\",\n        read: \".*\",\n    },\n});\nconst testQueue = new rabbitmq.Queue(\"test\", {\n    name: \"test\",\n    vhost: guest.vhost,\n    settings: {\n        durable: false,\n        autoDelete: true,\n        arguments: {\n            \"x-queue-type\": \"quorum\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_rabbitmq as rabbitmq\n\ntest = rabbitmq.VHost(\"test\", name=\"test\")\nguest = rabbitmq.Permissions(\"guest\",\n    user=\"guest\",\n    vhost=test.name,\n    permissions={\n        \"configure\": \".*\",\n        \"write\": \".*\",\n        \"read\": \".*\",\n    })\ntest_queue = rabbitmq.Queue(\"test\",\n    name=\"test\",\n    vhost=guest.vhost,\n    settings={\n        \"durable\": False,\n        \"auto_delete\": True,\n        \"arguments\": {\n            \"x-queue-type\": \"quorum\",\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing RabbitMQ = Pulumi.RabbitMQ;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new RabbitMQ.VHost(\"test\", new()\n    {\n        Name = \"test\",\n    });\n\n    var guest = new RabbitMQ.Permissions(\"guest\", new()\n    {\n        User = \"guest\",\n        Vhost = test.Name,\n        PermissionDetails = new RabbitMQ.Inputs.PermissionsPermissionsArgs\n        {\n            Configure = \".*\",\n            Write = \".*\",\n            Read = \".*\",\n        },\n    });\n\n    var testQueue = new RabbitMQ.Queue(\"test\", new()\n    {\n        Name = \"test\",\n        Vhost = guest.Vhost,\n        Settings = new RabbitMQ.Inputs.QueueSettingsArgs\n        {\n            Durable = false,\n            AutoDelete = true,\n            Arguments = \n            {\n                { \"x-queue-type\", \"quorum\" },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-rabbitmq/sdk/v3/go/rabbitmq\"\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, err := rabbitmq.NewVHost(ctx, \"test\", \u0026rabbitmq.VHostArgs{\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\tguest, err := rabbitmq.NewPermissions(ctx, \"guest\", \u0026rabbitmq.PermissionsArgs{\n\t\t\tUser:  pulumi.String(\"guest\"),\n\t\t\tVhost: test.Name,\n\t\t\tPermissions: \u0026rabbitmq.PermissionsPermissionsArgs{\n\t\t\t\tConfigure: pulumi.String(\".*\"),\n\t\t\t\tWrite:     pulumi.String(\".*\"),\n\t\t\t\tRead:      pulumi.String(\".*\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = rabbitmq.NewQueue(ctx, \"test\", \u0026rabbitmq.QueueArgs{\n\t\t\tName:  pulumi.String(\"test\"),\n\t\t\tVhost: guest.Vhost,\n\t\t\tSettings: \u0026rabbitmq.QueueSettingsArgs{\n\t\t\t\tDurable:    pulumi.Bool(false),\n\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\tArguments: pulumi.StringMap{\n\t\t\t\t\t\"x-queue-type\": pulumi.String(\"quorum\"),\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.rabbitmq.VHost;\nimport com.pulumi.rabbitmq.VHostArgs;\nimport com.pulumi.rabbitmq.Permissions;\nimport com.pulumi.rabbitmq.PermissionsArgs;\nimport com.pulumi.rabbitmq.inputs.PermissionsPermissionsArgs;\nimport com.pulumi.rabbitmq.Queue;\nimport com.pulumi.rabbitmq.QueueArgs;\nimport com.pulumi.rabbitmq.inputs.QueueSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 VHost(\"test\", VHostArgs.builder()\n            .name(\"test\")\n            .build());\n\n        var guest = new Permissions(\"guest\", PermissionsArgs.builder()\n            .user(\"guest\")\n            .vhost(test.name())\n            .permissions(PermissionsPermissionsArgs.builder()\n                .configure(\".*\")\n                .write(\".*\")\n                .read(\".*\")\n                .build())\n            .build());\n\n        var testQueue = new Queue(\"testQueue\", QueueArgs.builder()\n            .name(\"test\")\n            .vhost(guest.vhost())\n            .settings(QueueSettingsArgs.builder()\n                .durable(false)\n                .autoDelete(true)\n                .arguments(Map.of(\"x-queue-type\", \"quorum\"))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: rabbitmq:VHost\n    properties:\n      name: test\n  guest:\n    type: rabbitmq:Permissions\n    properties:\n      user: guest\n      vhost: ${test.name}\n      permissions:\n        configure: .*\n        write: .*\n        read: .*\n  testQueue:\n    type: rabbitmq:Queue\n    name: test\n    properties:\n      name: test\n      vhost: ${guest.vhost}\n      settings:\n        durable: false\n        autoDelete: true\n        arguments:\n          x-queue-type: quorum\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Example With JSON Arguments\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as rabbitmq from \"@pulumi/rabbitmq\";\n\nconst config = new pulumi.Config();\nconst arguments = config.get(\"arguments\") || `{\n  \"x-message-ttl\": 5000\n}\n`;\nconst test = new rabbitmq.VHost(\"test\", {name: \"test\"});\nconst guest = new rabbitmq.Permissions(\"guest\", {\n    user: \"guest\",\n    vhost: test.name,\n    permissions: {\n        configure: \".*\",\n        write: \".*\",\n        read: \".*\",\n    },\n});\nconst testQueue = new rabbitmq.Queue(\"test\", {\n    name: \"test\",\n    vhost: guest.vhost,\n    settings: {\n        durable: false,\n        autoDelete: true,\n        argumentsJson: arguments,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_rabbitmq as rabbitmq\n\nconfig = pulumi.Config()\narguments = config.get(\"arguments\")\nif arguments is None:\n    arguments = \"\"\"{\n  \"x-message-ttl\": 5000\n}\n\"\"\"\ntest = rabbitmq.VHost(\"test\", name=\"test\")\nguest = rabbitmq.Permissions(\"guest\",\n    user=\"guest\",\n    vhost=test.name,\n    permissions={\n        \"configure\": \".*\",\n        \"write\": \".*\",\n        \"read\": \".*\",\n    })\ntest_queue = rabbitmq.Queue(\"test\",\n    name=\"test\",\n    vhost=guest.vhost,\n    settings={\n        \"durable\": False,\n        \"auto_delete\": True,\n        \"arguments_json\": arguments,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing RabbitMQ = Pulumi.RabbitMQ;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var config = new Config();\n    var arguments = config.Get(\"arguments\") ?? @\"{\n  \"\"x-message-ttl\"\": 5000\n}\n\";\n    var test = new RabbitMQ.VHost(\"test\", new()\n    {\n        Name = \"test\",\n    });\n\n    var guest = new RabbitMQ.Permissions(\"guest\", new()\n    {\n        User = \"guest\",\n        Vhost = test.Name,\n        PermissionDetails = new RabbitMQ.Inputs.PermissionsPermissionsArgs\n        {\n            Configure = \".*\",\n            Write = \".*\",\n            Read = \".*\",\n        },\n    });\n\n    var testQueue = new RabbitMQ.Queue(\"test\", new()\n    {\n        Name = \"test\",\n        Vhost = guest.Vhost,\n        Settings = new RabbitMQ.Inputs.QueueSettingsArgs\n        {\n            Durable = false,\n            AutoDelete = true,\n            ArgumentsJson = arguments,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-rabbitmq/sdk/v3/go/rabbitmq\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\targuments := \"{\\n  \\\"x-message-ttl\\\": 5000\\n}\\n\"\n\t\tif param := cfg.Get(\"arguments\"); param != \"\" {\n\t\t\targuments = param\n\t\t}\n\t\ttest, err := rabbitmq.NewVHost(ctx, \"test\", \u0026rabbitmq.VHostArgs{\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\tguest, err := rabbitmq.NewPermissions(ctx, \"guest\", \u0026rabbitmq.PermissionsArgs{\n\t\t\tUser:  pulumi.String(\"guest\"),\n\t\t\tVhost: test.Name,\n\t\t\tPermissions: \u0026rabbitmq.PermissionsPermissionsArgs{\n\t\t\t\tConfigure: pulumi.String(\".*\"),\n\t\t\t\tWrite:     pulumi.String(\".*\"),\n\t\t\t\tRead:      pulumi.String(\".*\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = rabbitmq.NewQueue(ctx, \"test\", \u0026rabbitmq.QueueArgs{\n\t\t\tName:  pulumi.String(\"test\"),\n\t\t\tVhost: guest.Vhost,\n\t\t\tSettings: \u0026rabbitmq.QueueSettingsArgs{\n\t\t\t\tDurable:       pulumi.Bool(false),\n\t\t\t\tAutoDelete:    pulumi.Bool(true),\n\t\t\t\tArgumentsJson: pulumi.String(arguments),\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.rabbitmq.VHost;\nimport com.pulumi.rabbitmq.VHostArgs;\nimport com.pulumi.rabbitmq.Permissions;\nimport com.pulumi.rabbitmq.PermissionsArgs;\nimport com.pulumi.rabbitmq.inputs.PermissionsPermissionsArgs;\nimport com.pulumi.rabbitmq.Queue;\nimport com.pulumi.rabbitmq.QueueArgs;\nimport com.pulumi.rabbitmq.inputs.QueueSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 config = ctx.config();\n        final var arguments = config.get(\"arguments\").orElse(\"\"\"\n{\n  \"x-message-ttl\": 5000\n}\n        \"\"\");\n        var test = new VHost(\"test\", VHostArgs.builder()\n            .name(\"test\")\n            .build());\n\n        var guest = new Permissions(\"guest\", PermissionsArgs.builder()\n            .user(\"guest\")\n            .vhost(test.name())\n            .permissions(PermissionsPermissionsArgs.builder()\n                .configure(\".*\")\n                .write(\".*\")\n                .read(\".*\")\n                .build())\n            .build());\n\n        var testQueue = new Queue(\"testQueue\", QueueArgs.builder()\n            .name(\"test\")\n            .vhost(guest.vhost())\n            .settings(QueueSettingsArgs.builder()\n                .durable(false)\n                .autoDelete(true)\n                .argumentsJson(arguments)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nconfiguration:\n  arguments:\n    type: string\n    default: |\n      {\n        \"x-message-ttl\": 5000\n      }\nresources:\n  test:\n    type: rabbitmq:VHost\n    properties:\n      name: test\n  guest:\n    type: rabbitmq:Permissions\n    properties:\n      user: guest\n      vhost: ${test.name}\n      permissions:\n        configure: .*\n        write: .*\n        read: .*\n  testQueue:\n    type: rabbitmq:Queue\n    name: test\n    properties:\n      name: test\n      vhost: ${guest.vhost}\n      settings:\n        durable: false\n        autoDelete: true\n        argumentsJson: ${arguments}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nQueues can be imported using the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e which is composed of `name@vhost`. E.g.\n\n```sh\n$ pulumi import rabbitmq:index/queue:Queue test name@vhost\n```\n\n","properties":{"name":{"type":"string","description":"The name of the queue.\n"},"settings":{"$ref":"#/types/rabbitmq:index/QueueSettings:QueueSettings","description":"The settings of the queue. The structure is\ndescribed below.\n"},"vhost":{"type":"string","description":"The vhost to create the resource in.\n"}},"required":["name","settings"],"inputProperties":{"name":{"type":"string","description":"The name of the queue.\n","willReplaceOnChanges":true},"settings":{"$ref":"#/types/rabbitmq:index/QueueSettings:QueueSettings","description":"The settings of the queue. The structure is\ndescribed below.\n","willReplaceOnChanges":true},"vhost":{"type":"string","description":"The vhost to create the resource in.\n","willReplaceOnChanges":true}},"requiredInputs":["settings"],"stateInputs":{"description":"Input properties used for looking up and filtering Queue resources.\n","properties":{"name":{"type":"string","description":"The name of the queue.\n","willReplaceOnChanges":true},"settings":{"$ref":"#/types/rabbitmq:index/QueueSettings:QueueSettings","description":"The settings of the queue. The structure is\ndescribed below.\n","willReplaceOnChanges":true},"vhost":{"type":"string","description":"The vhost to create the resource in.\n","willReplaceOnChanges":true}},"type":"object"}},"rabbitmq:index/shovel:Shovel":{"description":"The `\u003cspan pulumi-lang-nodejs=\"`rabbitmq.Shovel`\" pulumi-lang-dotnet=\"`rabbitmq.Shovel`\" pulumi-lang-go=\"`Shovel`\" pulumi-lang-python=\"`Shovel`\" pulumi-lang-yaml=\"`rabbitmq.Shovel`\" pulumi-lang-java=\"`rabbitmq.Shovel`\"\u003e`rabbitmq.Shovel`\u003c/span\u003e` resource creates and manages a dynamic shovel.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as rabbitmq from \"@pulumi/rabbitmq\";\n\nconst test = new rabbitmq.VHost(\"test\", {name: \"test\"});\nconst testExchange = new rabbitmq.Exchange(\"test\", {\n    name: \"test_exchange\",\n    vhost: test.name,\n    settings: {\n        type: \"fanout\",\n        durable: false,\n        autoDelete: true,\n    },\n});\nconst testQueue = new rabbitmq.Queue(\"test\", {\n    name: \"test_queue\",\n    vhost: test.name,\n    settings: {\n        durable: false,\n        autoDelete: true,\n    },\n});\nconst shovelTest = new rabbitmq.Shovel(\"shovelTest\", {\n    name: \"shovelTest\",\n    vhost: test.name,\n    info: {\n        sourceUri: \"amqp:///test\",\n        sourceExchange: testExchange.name,\n        sourceExchangeKey: \"test\",\n        destinationUri: \"amqp:///test\",\n        destinationQueue: testQueue.name,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_rabbitmq as rabbitmq\n\ntest = rabbitmq.VHost(\"test\", name=\"test\")\ntest_exchange = rabbitmq.Exchange(\"test\",\n    name=\"test_exchange\",\n    vhost=test.name,\n    settings={\n        \"type\": \"fanout\",\n        \"durable\": False,\n        \"auto_delete\": True,\n    })\ntest_queue = rabbitmq.Queue(\"test\",\n    name=\"test_queue\",\n    vhost=test.name,\n    settings={\n        \"durable\": False,\n        \"auto_delete\": True,\n    })\nshovel_test = rabbitmq.Shovel(\"shovelTest\",\n    name=\"shovelTest\",\n    vhost=test.name,\n    info={\n        \"source_uri\": \"amqp:///test\",\n        \"source_exchange\": test_exchange.name,\n        \"source_exchange_key\": \"test\",\n        \"destination_uri\": \"amqp:///test\",\n        \"destination_queue\": test_queue.name,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing RabbitMQ = Pulumi.RabbitMQ;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new RabbitMQ.VHost(\"test\", new()\n    {\n        Name = \"test\",\n    });\n\n    var testExchange = new RabbitMQ.Exchange(\"test\", new()\n    {\n        Name = \"test_exchange\",\n        Vhost = test.Name,\n        Settings = new RabbitMQ.Inputs.ExchangeSettingsArgs\n        {\n            Type = \"fanout\",\n            Durable = false,\n            AutoDelete = true,\n        },\n    });\n\n    var testQueue = new RabbitMQ.Queue(\"test\", new()\n    {\n        Name = \"test_queue\",\n        Vhost = test.Name,\n        Settings = new RabbitMQ.Inputs.QueueSettingsArgs\n        {\n            Durable = false,\n            AutoDelete = true,\n        },\n    });\n\n    var shovelTest = new RabbitMQ.Shovel(\"shovelTest\", new()\n    {\n        Name = \"shovelTest\",\n        Vhost = test.Name,\n        Info = new RabbitMQ.Inputs.ShovelInfoArgs\n        {\n            SourceUri = \"amqp:///test\",\n            SourceExchange = testExchange.Name,\n            SourceExchangeKey = \"test\",\n            DestinationUri = \"amqp:///test\",\n            DestinationQueue = testQueue.Name,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-rabbitmq/sdk/v3/go/rabbitmq\"\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, err := rabbitmq.NewVHost(ctx, \"test\", \u0026rabbitmq.VHostArgs{\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\ttestExchange, err := rabbitmq.NewExchange(ctx, \"test\", \u0026rabbitmq.ExchangeArgs{\n\t\t\tName:  pulumi.String(\"test_exchange\"),\n\t\t\tVhost: test.Name,\n\t\t\tSettings: \u0026rabbitmq.ExchangeSettingsArgs{\n\t\t\t\tType:       pulumi.String(\"fanout\"),\n\t\t\t\tDurable:    pulumi.Bool(false),\n\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestQueue, err := rabbitmq.NewQueue(ctx, \"test\", \u0026rabbitmq.QueueArgs{\n\t\t\tName:  pulumi.String(\"test_queue\"),\n\t\t\tVhost: test.Name,\n\t\t\tSettings: \u0026rabbitmq.QueueSettingsArgs{\n\t\t\t\tDurable:    pulumi.Bool(false),\n\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = rabbitmq.NewShovel(ctx, \"shovelTest\", \u0026rabbitmq.ShovelArgs{\n\t\t\tName:  pulumi.String(\"shovelTest\"),\n\t\t\tVhost: test.Name,\n\t\t\tInfo: \u0026rabbitmq.ShovelInfoArgs{\n\t\t\t\tSourceUri:         pulumi.String(\"amqp:///test\"),\n\t\t\t\tSourceExchange:    testExchange.Name,\n\t\t\t\tSourceExchangeKey: pulumi.String(\"test\"),\n\t\t\t\tDestinationUri:    pulumi.String(\"amqp:///test\"),\n\t\t\t\tDestinationQueue:  testQueue.Name,\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.rabbitmq.VHost;\nimport com.pulumi.rabbitmq.VHostArgs;\nimport com.pulumi.rabbitmq.Exchange;\nimport com.pulumi.rabbitmq.ExchangeArgs;\nimport com.pulumi.rabbitmq.inputs.ExchangeSettingsArgs;\nimport com.pulumi.rabbitmq.Queue;\nimport com.pulumi.rabbitmq.QueueArgs;\nimport com.pulumi.rabbitmq.inputs.QueueSettingsArgs;\nimport com.pulumi.rabbitmq.Shovel;\nimport com.pulumi.rabbitmq.ShovelArgs;\nimport com.pulumi.rabbitmq.inputs.ShovelInfoArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 VHost(\"test\", VHostArgs.builder()\n            .name(\"test\")\n            .build());\n\n        var testExchange = new Exchange(\"testExchange\", ExchangeArgs.builder()\n            .name(\"test_exchange\")\n            .vhost(test.name())\n            .settings(ExchangeSettingsArgs.builder()\n                .type(\"fanout\")\n                .durable(false)\n                .autoDelete(true)\n                .build())\n            .build());\n\n        var testQueue = new Queue(\"testQueue\", QueueArgs.builder()\n            .name(\"test_queue\")\n            .vhost(test.name())\n            .settings(QueueSettingsArgs.builder()\n                .durable(false)\n                .autoDelete(true)\n                .build())\n            .build());\n\n        var shovelTest = new Shovel(\"shovelTest\", ShovelArgs.builder()\n            .name(\"shovelTest\")\n            .vhost(test.name())\n            .info(ShovelInfoArgs.builder()\n                .sourceUri(\"amqp:///test\")\n                .sourceExchange(testExchange.name())\n                .sourceExchangeKey(\"test\")\n                .destinationUri(\"amqp:///test\")\n                .destinationQueue(testQueue.name())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: rabbitmq:VHost\n    properties:\n      name: test\n  testExchange:\n    type: rabbitmq:Exchange\n    name: test\n    properties:\n      name: test_exchange\n      vhost: ${test.name}\n      settings:\n        type: fanout\n        durable: false\n        autoDelete: true\n  testQueue:\n    type: rabbitmq:Queue\n    name: test\n    properties:\n      name: test_queue\n      vhost: ${test.name}\n      settings:\n        durable: false\n        autoDelete: true\n  shovelTest:\n    type: rabbitmq:Shovel\n    properties:\n      name: shovelTest\n      vhost: ${test.name}\n      info:\n        sourceUri: amqp:///test\n        sourceExchange: ${testExchange.name}\n        sourceExchangeKey: test\n        destinationUri: amqp:///test\n        destinationQueue: ${testQueue.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nShovels can be imported using the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`vhost`\" pulumi-lang-dotnet=\"`Vhost`\" pulumi-lang-go=\"`vhost`\" pulumi-lang-python=\"`vhost`\" pulumi-lang-yaml=\"`vhost`\" pulumi-lang-java=\"`vhost`\"\u003e`vhost`\u003c/span\u003e\nE.g.\n\n```sh\n$ pulumi import rabbitmq:index/shovel:Shovel test shovelTest@test\n```\n\n","properties":{"info":{"$ref":"#/types/rabbitmq:index/ShovelInfo:ShovelInfo","description":"The settings of the dynamic shovel. The structure is\ndescribed below.\n"},"name":{"type":"string","description":"The shovel name.\n"},"vhost":{"type":"string","description":"The vhost to create the resource in.\n"}},"required":["info","name","vhost"],"inputProperties":{"info":{"$ref":"#/types/rabbitmq:index/ShovelInfo:ShovelInfo","description":"The settings of the dynamic shovel. The structure is\ndescribed below.\n"},"name":{"type":"string","description":"The shovel name.\n","willReplaceOnChanges":true},"vhost":{"type":"string","description":"The vhost to create the resource in.\n","willReplaceOnChanges":true}},"requiredInputs":["info","vhost"],"stateInputs":{"description":"Input properties used for looking up and filtering Shovel resources.\n","properties":{"info":{"$ref":"#/types/rabbitmq:index/ShovelInfo:ShovelInfo","description":"The settings of the dynamic shovel. The structure is\ndescribed below.\n"},"name":{"type":"string","description":"The shovel name.\n","willReplaceOnChanges":true},"vhost":{"type":"string","description":"The vhost to create the resource in.\n","willReplaceOnChanges":true}},"type":"object"}},"rabbitmq:index/topicPermissions:TopicPermissions":{"description":"The `\u003cspan pulumi-lang-nodejs=\"`rabbitmq.TopicPermissions`\" pulumi-lang-dotnet=\"`rabbitmq.TopicPermissions`\" pulumi-lang-go=\"`TopicPermissions`\" pulumi-lang-python=\"`TopicPermissions`\" pulumi-lang-yaml=\"`rabbitmq.TopicPermissions`\" pulumi-lang-java=\"`rabbitmq.TopicPermissions`\"\u003e`rabbitmq.TopicPermissions`\u003c/span\u003e` resource creates and manages a user's set of\ntopic permissions.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as rabbitmq from \"@pulumi/rabbitmq\";\n\nconst test = new rabbitmq.VHost(\"test\", {name: \"test\"});\nconst testUser = new rabbitmq.User(\"test\", {\n    name: \"mctest\",\n    password: \"foobar\",\n    tags: [\"administrator\"],\n});\nconst testTopicPermissions = new rabbitmq.TopicPermissions(\"test\", {\n    user: testUser.name,\n    vhost: test.name,\n    permissions: [{\n        exchange: \"amq.topic\",\n        write: \".*\",\n        read: \".*\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_rabbitmq as rabbitmq\n\ntest = rabbitmq.VHost(\"test\", name=\"test\")\ntest_user = rabbitmq.User(\"test\",\n    name=\"mctest\",\n    password=\"foobar\",\n    tags=[\"administrator\"])\ntest_topic_permissions = rabbitmq.TopicPermissions(\"test\",\n    user=test_user.name,\n    vhost=test.name,\n    permissions=[{\n        \"exchange\": \"amq.topic\",\n        \"write\": \".*\",\n        \"read\": \".*\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing RabbitMQ = Pulumi.RabbitMQ;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new RabbitMQ.VHost(\"test\", new()\n    {\n        Name = \"test\",\n    });\n\n    var testUser = new RabbitMQ.User(\"test\", new()\n    {\n        Name = \"mctest\",\n        Password = \"foobar\",\n        Tags = new[]\n        {\n            \"administrator\",\n        },\n    });\n\n    var testTopicPermissions = new RabbitMQ.TopicPermissions(\"test\", new()\n    {\n        User = testUser.Name,\n        Vhost = test.Name,\n        Permissions = new[]\n        {\n            new RabbitMQ.Inputs.TopicPermissionsPermissionArgs\n            {\n                Exchange = \"amq.topic\",\n                Write = \".*\",\n                Read = \".*\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-rabbitmq/sdk/v3/go/rabbitmq\"\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, err := rabbitmq.NewVHost(ctx, \"test\", \u0026rabbitmq.VHostArgs{\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\ttestUser, err := rabbitmq.NewUser(ctx, \"test\", \u0026rabbitmq.UserArgs{\n\t\t\tName:     pulumi.String(\"mctest\"),\n\t\t\tPassword: pulumi.String(\"foobar\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"administrator\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = rabbitmq.NewTopicPermissions(ctx, \"test\", \u0026rabbitmq.TopicPermissionsArgs{\n\t\t\tUser:  testUser.Name,\n\t\t\tVhost: test.Name,\n\t\t\tPermissions: rabbitmq.TopicPermissionsPermissionArray{\n\t\t\t\t\u0026rabbitmq.TopicPermissionsPermissionArgs{\n\t\t\t\t\tExchange: pulumi.String(\"amq.topic\"),\n\t\t\t\t\tWrite:    pulumi.String(\".*\"),\n\t\t\t\t\tRead:     pulumi.String(\".*\"),\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.rabbitmq.VHost;\nimport com.pulumi.rabbitmq.VHostArgs;\nimport com.pulumi.rabbitmq.User;\nimport com.pulumi.rabbitmq.UserArgs;\nimport com.pulumi.rabbitmq.TopicPermissions;\nimport com.pulumi.rabbitmq.TopicPermissionsArgs;\nimport com.pulumi.rabbitmq.inputs.TopicPermissionsPermissionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 VHost(\"test\", VHostArgs.builder()\n            .name(\"test\")\n            .build());\n\n        var testUser = new User(\"testUser\", UserArgs.builder()\n            .name(\"mctest\")\n            .password(\"foobar\")\n            .tags(\"administrator\")\n            .build());\n\n        var testTopicPermissions = new TopicPermissions(\"testTopicPermissions\", TopicPermissionsArgs.builder()\n            .user(testUser.name())\n            .vhost(test.name())\n            .permissions(TopicPermissionsPermissionArgs.builder()\n                .exchange(\"amq.topic\")\n                .write(\".*\")\n                .read(\".*\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: rabbitmq:VHost\n    properties:\n      name: test\n  testUser:\n    type: rabbitmq:User\n    name: test\n    properties:\n      name: mctest\n      password: foobar\n      tags:\n        - administrator\n  testTopicPermissions:\n    type: rabbitmq:TopicPermissions\n    name: test\n    properties:\n      user: ${testUser.name}\n      vhost: ${test.name}\n      permissions:\n        - exchange: amq.topic\n          write: .*\n          read: .*\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPermissions can be imported using the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e which is composed of  `user@vhost`.\nE.g.\n\n```sh\n$ pulumi import rabbitmq:index/topicPermissions:TopicPermissions test user@vhost\n```\n\n","properties":{"permissions":{"type":"array","items":{"$ref":"#/types/rabbitmq:index/TopicPermissionsPermission:TopicPermissionsPermission"},"description":"The settings of the permissions. The structure is\ndescribed below.\n"},"user":{"type":"string","description":"The user to apply the permissions to.\n"},"vhost":{"type":"string","description":"The vhost to create the resource in.\n"}},"required":["permissions","user"],"inputProperties":{"permissions":{"type":"array","items":{"$ref":"#/types/rabbitmq:index/TopicPermissionsPermission:TopicPermissionsPermission"},"description":"The settings of the permissions. The structure is\ndescribed below.\n"},"user":{"type":"string","description":"The user to apply the permissions to.\n","willReplaceOnChanges":true},"vhost":{"type":"string","description":"The vhost to create the resource in.\n","willReplaceOnChanges":true}},"requiredInputs":["permissions","user"],"stateInputs":{"description":"Input properties used for looking up and filtering TopicPermissions resources.\n","properties":{"permissions":{"type":"array","items":{"$ref":"#/types/rabbitmq:index/TopicPermissionsPermission:TopicPermissionsPermission"},"description":"The settings of the permissions. The structure is\ndescribed below.\n"},"user":{"type":"string","description":"The user to apply the permissions to.\n","willReplaceOnChanges":true},"vhost":{"type":"string","description":"The vhost to create the resource in.\n","willReplaceOnChanges":true}},"type":"object"}},"rabbitmq:index/user:User":{"description":"The `\u003cspan pulumi-lang-nodejs=\"`rabbitmq.User`\" pulumi-lang-dotnet=\"`rabbitmq.User`\" pulumi-lang-go=\"`User`\" pulumi-lang-python=\"`User`\" pulumi-lang-yaml=\"`rabbitmq.User`\" pulumi-lang-java=\"`rabbitmq.User`\"\u003e`rabbitmq.User`\u003c/span\u003e` resource creates and manages a user.\n\n\u003e **Note:** All arguments including username and password will be stored in the raw state as plain-text.\n[Read more about sensitive data in state](https://www.terraform.io/docs/state/sensitive-data.html).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as rabbitmq from \"@pulumi/rabbitmq\";\n\nconst test = new rabbitmq.User(\"test\", {\n    name: \"mctest\",\n    password: \"foobar\",\n    tags: [\n        \"administrator\",\n        \"management\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_rabbitmq as rabbitmq\n\ntest = rabbitmq.User(\"test\",\n    name=\"mctest\",\n    password=\"foobar\",\n    tags=[\n        \"administrator\",\n        \"management\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing RabbitMQ = Pulumi.RabbitMQ;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = new RabbitMQ.User(\"test\", new()\n    {\n        Name = \"mctest\",\n        Password = \"foobar\",\n        Tags = new[]\n        {\n            \"administrator\",\n            \"management\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-rabbitmq/sdk/v3/go/rabbitmq\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := rabbitmq.NewUser(ctx, \"test\", \u0026rabbitmq.UserArgs{\n\t\t\tName:     pulumi.String(\"mctest\"),\n\t\t\tPassword: pulumi.String(\"foobar\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"administrator\"),\n\t\t\t\tpulumi.String(\"management\"),\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.rabbitmq.User;\nimport com.pulumi.rabbitmq.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 test = new User(\"test\", UserArgs.builder()\n            .name(\"mctest\")\n            .password(\"foobar\")\n            .tags(            \n                \"administrator\",\n                \"management\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: rabbitmq:User\n    properties:\n      name: mctest\n      password: foobar\n      tags:\n        - administrator\n        - management\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUsers can be imported using the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, e.g.\n\n```sh\n$ pulumi import rabbitmq:index/user:User test mctest\n```\n\n","properties":{"name":{"type":"string","description":"The name of the user.\n"},"password":{"type":"string","description":"The password of the user. The value of this argument\nis plain-text so make sure to secure where this is defined.\n","secret":true},"tags":{"type":"array","items":{"type":"string"},"description":"Which permission model to apply to the user. Valid\noptions are: management, policymaker, monitoring, and administrator.\n"}},"required":["name","password"],"inputProperties":{"name":{"type":"string","description":"The name of the user.\n","willReplaceOnChanges":true},"password":{"type":"string","description":"The password of the user. The value of this argument\nis plain-text so make sure to secure where this is defined.\n","secret":true},"tags":{"type":"array","items":{"type":"string"},"description":"Which permission model to apply to the user. Valid\noptions are: management, policymaker, monitoring, and administrator.\n"}},"requiredInputs":["password"],"stateInputs":{"description":"Input properties used for looking up and filtering User resources.\n","properties":{"name":{"type":"string","description":"The name of the user.\n","willReplaceOnChanges":true},"password":{"type":"string","description":"The password of the user. The value of this argument\nis plain-text so make sure to secure where this is defined.\n","secret":true},"tags":{"type":"array","items":{"type":"string"},"description":"Which permission model to apply to the user. Valid\noptions are: management, policymaker, monitoring, and administrator.\n"}},"type":"object"}},"rabbitmq:index/vHost:VHost":{"description":"The `\u003cspan pulumi-lang-nodejs=\"`rabbitmq.VHost`\" pulumi-lang-dotnet=\"`rabbitmq.VHost`\" pulumi-lang-go=\"`VHost`\" pulumi-lang-python=\"`VHost`\" pulumi-lang-yaml=\"`rabbitmq.VHost`\" pulumi-lang-java=\"`rabbitmq.VHost`\"\u003e`rabbitmq.VHost`\u003c/span\u003e` resource creates and manages a vhost.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as rabbitmq from \"@pulumi/rabbitmq\";\n\nconst myVhost = new rabbitmq.VHost(\"my_vhost\", {\n    name: \"my_vhost\",\n    description: \"My Vhost\",\n    defaultQueueType: \"quorum\",\n    maxConnections: \"200\",\n    maxQueues: \"100\",\n    tracing: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_rabbitmq as rabbitmq\n\nmy_vhost = rabbitmq.VHost(\"my_vhost\",\n    name=\"my_vhost\",\n    description=\"My Vhost\",\n    default_queue_type=\"quorum\",\n    max_connections=\"200\",\n    max_queues=\"100\",\n    tracing=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing RabbitMQ = Pulumi.RabbitMQ;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myVhost = new RabbitMQ.VHost(\"my_vhost\", new()\n    {\n        Name = \"my_vhost\",\n        Description = \"My Vhost\",\n        DefaultQueueType = \"quorum\",\n        MaxConnections = \"200\",\n        MaxQueues = \"100\",\n        Tracing = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-rabbitmq/sdk/v3/go/rabbitmq\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := rabbitmq.NewVHost(ctx, \"my_vhost\", \u0026rabbitmq.VHostArgs{\n\t\t\tName:             pulumi.String(\"my_vhost\"),\n\t\t\tDescription:      pulumi.String(\"My Vhost\"),\n\t\t\tDefaultQueueType: pulumi.String(\"quorum\"),\n\t\t\tMaxConnections:   pulumi.String(\"200\"),\n\t\t\tMaxQueues:        pulumi.String(\"100\"),\n\t\t\tTracing:          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.rabbitmq.VHost;\nimport com.pulumi.rabbitmq.VHostArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myVhost = new VHost(\"myVhost\", VHostArgs.builder()\n            .name(\"my_vhost\")\n            .description(\"My Vhost\")\n            .defaultQueueType(\"quorum\")\n            .maxConnections(\"200\")\n            .maxQueues(\"100\")\n            .tracing(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myVhost:\n    type: rabbitmq:VHost\n    name: my_vhost\n    properties:\n      name: my_vhost\n      description: My Vhost\n      defaultQueueType: quorum\n      maxConnections: '200'\n      maxQueues: 100\n      tracing: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVhosts can be imported using the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, e.g.\n\n```sh\n$ pulumi import rabbitmq:index/vHost:VHost my_vhost my_vhost\n```\n\n","properties":{"defaultQueueType":{"type":"string","description":"default queue type for new queues\n"},"description":{"type":"string","description":"A friendly description.\n"},"maxConnections":{"type":"string","description":"Maximum number of concurrent client connections to the vhost\n"},"maxQueues":{"type":"string","description":"Maximum number of queues that can be created on the vhost\n"},"name":{"type":"string","description":"The name of the vhost.\n"},"tracing":{"type":"boolean"}},"required":["name"],"inputProperties":{"defaultQueueType":{"type":"string","description":"default queue type for new queues\n"},"description":{"type":"string","description":"A friendly description.\n"},"maxConnections":{"type":"string","description":"Maximum number of concurrent client connections to the vhost\n"},"maxQueues":{"type":"string","description":"Maximum number of queues that can be created on the vhost\n"},"name":{"type":"string","description":"The name of the vhost.\n","willReplaceOnChanges":true},"tracing":{"type":"boolean"}},"stateInputs":{"description":"Input properties used for looking up and filtering VHost resources.\n","properties":{"defaultQueueType":{"type":"string","description":"default queue type for new queues\n"},"description":{"type":"string","description":"A friendly description.\n"},"maxConnections":{"type":"string","description":"Maximum number of concurrent client connections to the vhost\n"},"maxQueues":{"type":"string","description":"Maximum number of queues that can be created on the vhost\n"},"name":{"type":"string","description":"The name of the vhost.\n","willReplaceOnChanges":true},"tracing":{"type":"boolean"}},"type":"object"}}},"functions":{"pulumi:providers:rabbitmq/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:rabbitmq/terraformConfig","required":["__self__"]},"outputs":{"properties":{"result":{"additionalProperties":{"$ref":"pulumi.json#/Any"},"type":"object"}},"required":["result"],"type":"object"}},"rabbitmq:index/getDefaultUser:getDefaultUser":{"inputs":{"description":"A collection of arguments for invoking getDefaultUser.\n","properties":{"username":{"type":"string"}},"type":"object"},"outputs":{"description":"A collection of values returned by getDefaultUser.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"username":{"type":"string"}},"required":["id"],"type":"object"}},"rabbitmq:index/getExchange:getExchange":{"inputs":{"description":"A collection of arguments for invoking getExchange.\n","properties":{"name":{"type":"string"},"vhost":{"type":"string"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getExchange.\n","properties":{"id":{"type":"string"},"name":{"type":"string"},"settings":{"items":{"$ref":"#/types/rabbitmq:index/getExchangeSetting:getExchangeSetting"},"type":"array"},"vhost":{"type":"string"}},"required":["id","name","settings"],"type":"object"}},"rabbitmq:index/getUser:getUser":{"inputs":{"description":"A collection of arguments for invoking getUser.\n","properties":{"name":{"type":"string"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getUser.\n","properties":{"id":{"type":"string"},"name":{"type":"string"},"tags":{"items":{"type":"string"},"type":"array"}},"required":["id","name","tags"],"type":"object"}},"rabbitmq:index/getVHost:getVHost":{"inputs":{"description":"A collection of arguments for invoking getVHost.\n","properties":{"name":{"type":"string"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getVHost.\n","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"type":"object"}}}}