{"name":"juju","version":"1.4.0-rc1","description":"A Pulumi provider dynamically bridged from juju.","attribution":"This Pulumi package is based on the [`juju` Terraform Provider](https://github.com/juju/terraform-provider-juju).","repository":"https://github.com/juju/terraform-provider-juju","publisher":"juju","meta":{"moduleFormat":"(.*)(?:/[^/]*)"},"language":{"csharp":{"compatibility":"tfbridge20","liftSingleValueMethodReturns":true,"respectSchemaVersion":true},"go":{"generateExtraInputTypes":true,"importBasePath":"github.com/pulumi/pulumi-terraform-provider/sdks/go/juju/juju","liftSingleValueMethodReturns":true,"respectSchemaVersion":true,"rootPackageName":"juju"},"java":{"basePackage":"","buildFiles":"","gradleNexusPublishPluginVersion":"","gradleTest":""},"nodejs":{"compatibility":"tfbridge20","disableUnionOutputTypes":true,"liftSingleValueMethodReturns":true,"packageDescription":"A Pulumi provider dynamically bridged from juju.","readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/juju/terraform-provider-juju)\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 please consult the source [`terraform-provider-juju` repo](https://github.com/juju/terraform-provider-juju/issues).","respectSchemaVersion":true},"python":{"compatibility":"tfbridge20","pyproject":{"enabled":true},"readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/juju/terraform-provider-juju)\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 please consult the source [`terraform-provider-juju` repo](https://github.com/juju/terraform-provider-juju/issues).","respectSchemaVersion":true}},"config":{"variables":{"caCertificate":{"type":"string","description":"If the controller was deployed with a self-signed certificate: This is the certificate to use for identification. This can also be set by the `JUJU_CA_CERT` environment variable"},"clientId":{"type":"string","description":"If using JAAS: This is the client ID (OAuth2.0, created by the external identity provider) to be used. This can also be set by the `JUJU_CLIENT_ID` environment variable"},"clientSecret":{"type":"string","description":"If using JAAS: This is the client secret (OAuth2.0, created by the external identity provider) to be used. This can also be set by the `JUJU_CLIENT_SECRET` environment variable","secret":true},"controllerAddresses":{"type":"string","description":"This is the controller addresses to connect to, defaults to localhost:17070, multiple addresses can be provided in this format: \u003chost\u003e:\u003cport\u003e,\u003chost\u003e:\u003cport\u003e,.... This can also be set by the `JUJU_CONTROLLER_ADDRESSES` environment variable."},"controllerMode":{"type":"boolean","description":"If set to true, the provider will only allow managing \u003cspan pulumi-lang-nodejs=\"`juju.Controller`\" pulumi-lang-dotnet=\"`juju.Controller`\" pulumi-lang-go=\"`Controller`\" pulumi-lang-python=\"`Controller`\" pulumi-lang-yaml=\"`juju.Controller`\" pulumi-lang-java=\"`juju.Controller`\"\u003e`juju.Controller`\u003c/span\u003e resources."},"offeringControllers":{"type":"object","additionalProperties":{"$ref":"#/types/juju:config%2FofferingControllers:offeringControllers"},"description":"Additional controller details for cross-model integrations. The map key is the controller name."},"password":{"type":"string","description":"This is the password of the username to be used. This can also be set by the `JUJU_PASSWORD` environment variable","secret":true},"skipFailedDeletion":{"type":"boolean","description":"Whether to issue a warning instead of an error and continue if a resource deletion fails. This can also be set by the `JUJU_SKIP_FAILED_DELETION` environment variable. Defaults to false."},"username":{"type":"string","description":"This is the username registered with the controller to be used. This can also be set by the `JUJU_USERNAME` environment variable"}}},"types":{"juju:config/offeringControllers:offeringControllers":{"properties":{"caCertificate":{"type":"string","description":"CA certificate for the controller if using a self-signed certificate.\n"},"clientId":{"type":"string","description":"The client ID (OAuth2.0, created by the external identity provider) to be used.\n"},"clientSecret":{"type":"string","description":"The client secret (OAuth2.0, created by the external identity provider) to be used.\n","secret":true},"controllerAddresses":{"type":"string","description":"Controller addresses to connect to. Multiple addresses can be provided in this format: \u003chost\u003e:\u003cport\u003e,\u003chost\u003e:\u003cport\u003e,....\n"},"password":{"type":"string","description":"Password for the controller username.\n","secret":true},"username":{"type":"string","description":"Username registered with the controller.\n"}},"type":"object","required":["controllerAddresses"],"language":{"nodejs":{"requiredInputs":[]}}},"juju:index/ApplicationCharm:ApplicationCharm":{"properties":{"base":{"type":"string"},"channel":{"type":"string","description":"The channel to use when deploying a charm. Specified as \\\u003ctrack\u003e/\\\u003crisk\u003e/\\\u003cbranch\u003e.\n"},"name":{"type":"string"},"revision":{"type":"number","description":"The revision of the charm to deploy. During the update phase, the charm revision should be update before config update, to avoid issues with config parameters parsing.\n"}},"type":"object","required":["name"],"language":{"nodejs":{"requiredOutputs":["base","channel","name","revision"]}}},"juju:index/ApplicationEndpointBinding:ApplicationEndpointBinding":{"properties":{"endpoint":{"type":"string","description":"Name of the endpoint to bind to a space. Keep null (or undefined) to define default binding.\n"},"space":{"type":"string","description":"Name of the space to bind the endpoint to.\n"}},"type":"object","required":["space"]},"juju:index/ApplicationExpose:ApplicationExpose":{"properties":{"cidrs":{"type":"string","description":"A comma-delimited list of CIDRs that should be able to access the application ports once exposed.\n"},"endpoints":{"type":"string","description":"Expose only the ports that charms have opened for this comma-delimited list of endpoints\n"},"spaces":{"type":"string","description":"A comma-delimited list of spaces that should be able to access the application ports once exposed.\n"}},"type":"object"},"juju:index/ApplicationRegistryCredentials:ApplicationRegistryCredentials":{"properties":{"password":{"type":"string","description":"The password for authenticating to the registry.\n","secret":true},"username":{"type":"string","description":"The username for authenticating to the registry.\n"}},"type":"object","required":["password","username"]},"juju:index/ApplicationStorage:ApplicationStorage":{"properties":{"count":{"type":"number","description":"The number of volumes.\n"},"label":{"type":"string","description":"The specific storage option defined in the charm.\n"},"pool":{"type":"string","description":"Name of the storage pool.\n"},"size":{"type":"string","description":"The size of each volume.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["count","label","pool","size"]}}},"juju:index/CloudRegion:CloudRegion":{"properties":{"endpoint":{"type":"string","description":"Region-specific endpoint.\n"},"identityEndpoint":{"type":"string","description":"Region-specific identity endpoint.\n"},"name":{"type":"string","description":"Name of the region.\n"},"storageEndpoint":{"type":"string","description":"Region-specific storage endpoint.\n"}},"type":"object","required":["name"]},"juju:index/ControllerCloud:ControllerCloud":{"properties":{"authTypes":{"type":"array","items":{"type":"string"},"description":"The authentication type(s) supported by the cloud.\n"},"caCertificates":{"type":"array","items":{"type":"string"},"description":"CA certificates for the cloud.\n"},"config":{"type":"object","additionalProperties":{"type":"string"},"description":"Configuration options for the cloud.\n"},"endpoint":{"type":"string","description":"The API endpoint for the cloud.\n"},"hostCloudRegion":{"type":"string","description":"The host cloud region for the cloud.\n"},"name":{"type":"string","description":"The name of the cloud\n"},"region":{"$ref":"#/types/juju:index%2FControllerCloudRegion:ControllerCloudRegion","description":"The cloud region where the controller will operate.\n"},"type":{"type":"string","description":"The type of the cloud .\n"}},"type":"object","required":["authTypes","name","type"]},"juju:index/ControllerCloudCredential:ControllerCloudCredential":{"properties":{"attributes":{"type":"object","additionalProperties":{"type":"string"},"description":"Authentication attributes (key-value pairs specific to the auth type).\n"},"authType":{"type":"string","description":"The authentication type (e.g., 'userpass', 'oauth2', 'access-key').\n"},"name":{"type":"string","description":"The name of the credential.\n"}},"type":"object","required":["attributes","authType","name"]},"juju:index/ControllerCloudRegion:ControllerCloudRegion":{"properties":{"endpoint":{"type":"string","description":"The API endpoint for the region.\n"},"identityEndpoint":{"type":"string","description":"The identity endpoint for the region.\n"},"name":{"type":"string","description":"The name of the region.\n"},"storageEndpoint":{"type":"string","description":"The storage endpoint for the region.\n"}},"type":"object","required":["name"]},"juju:index/ControllerDestroyFlags:ControllerDestroyFlags":{"properties":{"destroyAllModels":{"type":"boolean","description":"Destroy all models in the controller.\n"},"destroyStorage":{"type":"boolean","description":"Destroy all storage instances managed by the controller.\n"},"force":{"type":"boolean","description":"Force destroy models ignoring any errors.\n"},"modelTimeout":{"type":"number","description":"Timeout for each step of force model destruction.\n"},"releaseStorage":{"type":"boolean","description":"Release all storage instances from management of the controller, without destroying them.\n"}},"type":"object"},"juju:index/ControllerStoragePool:ControllerStoragePool":{"properties":{"attributes":{"type":"object","additionalProperties":{"type":"string"},"description":"Additional storage pool attributes.\n"},"name":{"type":"string","description":"The name of the storage pool.\n"},"type":{"type":"string","description":"The storage pool type\n"}},"type":"object","required":["name","type"]},"juju:index/CredentialCloud:CredentialCloud":{"properties":{"name":{"type":"string","description":"The name of the cloud\n"}},"type":"object","required":["name"]},"juju:index/IntegrationApplication:IntegrationApplication":{"properties":{"endpoint":{"type":"string","description":"The endpoint name. This attribute may not be used at the same time as the offer_url.\n"},"name":{"type":"string","description":"The name of the application. This attribute may not be used at the same time as the offer_url.\n"},"offerUrl":{"type":"string","description":"The URL of a remote application. This attribute may not be used at the same time as name and endpoint.\n"},"offeringController":{"type":"string","description":"The name of the offering controller where the remote application is hosted. This is required when using\u003cspan pulumi-lang-nodejs=\" offerUrl \" pulumi-lang-dotnet=\" OfferUrl \" pulumi-lang-go=\" offerUrl \" pulumi-lang-python=\" offer_url \" pulumi-lang-yaml=\" offerUrl \" pulumi-lang-java=\" offerUrl \"\u003e offer_url \u003c/span\u003eto consume an offer from a different controller.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["endpoint","name"]}}},"juju:index/MachineTimeouts:MachineTimeouts":{"properties":{"create":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"}},"type":"object"},"juju:index/ModelCloud:ModelCloud":{"properties":{"name":{"type":"string","description":"The name of the cloud\n"},"region":{"type":"string","description":"The region of the cloud\n"}},"type":"object","required":["name"],"language":{"nodejs":{"requiredOutputs":["name","region"]}}},"juju:index/ProviderOfferingControllers:ProviderOfferingControllers":{"properties":{"caCertificate":{"type":"string","description":"CA certificate for the controller if using a self-signed certificate.\n"},"clientId":{"type":"string","description":"The client ID (OAuth2.0, created by the external identity provider) to be used.\n"},"clientSecret":{"type":"string","description":"The client secret (OAuth2.0, created by the external identity provider) to be used.\n","secret":true},"controllerAddresses":{"type":"string","description":"Controller addresses to connect to. Multiple addresses can be provided in this format: \u003chost\u003e:\u003cport\u003e,\u003chost\u003e:\u003cport\u003e,....\n"},"password":{"type":"string","description":"Password for the controller username.\n","secret":true},"username":{"type":"string","description":"Username registered with the controller.\n"}},"type":"object","required":["controllerAddresses"],"language":{"nodejs":{"requiredOutputs":[]}}}},"provider":{"description":"The provider type for the juju 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":{"caCertificate":{"type":"string","description":"If the controller was deployed with a self-signed certificate: This is the certificate to use for identification. This can also be set by the `JUJU_CA_CERT` environment variable"},"clientId":{"type":"string","description":"If using JAAS: This is the client ID (OAuth2.0, created by the external identity provider) to be used. This can also be set by the `JUJU_CLIENT_ID` environment variable"},"clientSecret":{"type":"string","description":"If using JAAS: This is the client secret (OAuth2.0, created by the external identity provider) to be used. This can also be set by the `JUJU_CLIENT_SECRET` environment variable","secret":true},"controllerAddresses":{"type":"string","description":"This is the controller addresses to connect to, defaults to localhost:17070, multiple addresses can be provided in this format: \u003chost\u003e:\u003cport\u003e,\u003chost\u003e:\u003cport\u003e,.... This can also be set by the `JUJU_CONTROLLER_ADDRESSES` environment variable."},"password":{"type":"string","description":"This is the password of the username to be used. This can also be set by the `JUJU_PASSWORD` environment variable","secret":true},"username":{"type":"string","description":"This is the username registered with the controller to be used. This can also be set by the `JUJU_USERNAME` environment variable"}},"type":"object","inputProperties":{"caCertificate":{"type":"string","description":"If the controller was deployed with a self-signed certificate: This is the certificate to use for identification. This can also be set by the `JUJU_CA_CERT` environment variable"},"clientId":{"type":"string","description":"If using JAAS: This is the client ID (OAuth2.0, created by the external identity provider) to be used. This can also be set by the `JUJU_CLIENT_ID` environment variable"},"clientSecret":{"type":"string","description":"If using JAAS: This is the client secret (OAuth2.0, created by the external identity provider) to be used. This can also be set by the `JUJU_CLIENT_SECRET` environment variable","secret":true},"controllerAddresses":{"type":"string","description":"This is the controller addresses to connect to, defaults to localhost:17070, multiple addresses can be provided in this format: \u003chost\u003e:\u003cport\u003e,\u003chost\u003e:\u003cport\u003e,.... This can also be set by the `JUJU_CONTROLLER_ADDRESSES` environment variable."},"controllerMode":{"type":"boolean","description":"If set to true, the provider will only allow managing \u003cspan pulumi-lang-nodejs=\"`juju.Controller`\" pulumi-lang-dotnet=\"`juju.Controller`\" pulumi-lang-go=\"`Controller`\" pulumi-lang-python=\"`Controller`\" pulumi-lang-yaml=\"`juju.Controller`\" pulumi-lang-java=\"`juju.Controller`\"\u003e`juju.Controller`\u003c/span\u003e resources."},"offeringControllers":{"type":"object","additionalProperties":{"$ref":"#/types/juju:index%2FProviderOfferingControllers:ProviderOfferingControllers"},"description":"Additional controller details for cross-model integrations. The map key is the controller name."},"password":{"type":"string","description":"This is the password of the username to be used. This can also be set by the `JUJU_PASSWORD` environment variable","secret":true},"skipFailedDeletion":{"type":"boolean","description":"Whether to issue a warning instead of an error and continue if a resource deletion fails. This can also be set by the `JUJU_SKIP_FAILED_DELETION` environment variable. Defaults to false."},"username":{"type":"string","description":"This is the username registered with the controller to be used. This can also be set by the `JUJU_USERNAME` environment variable"}},"methods":{"terraformConfig":"pulumi:providers:juju/terraformConfig"}},"resources":{"juju:index/accessModel:AccessModel":{"description":"A resource that represent a Juju Access Model.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as juju from \"@pulumi/juju\";\n\nconst _this = new juju.AccessModel(\"this\", {\n    modelUuid: dev.uuid,\n    access: \"write\",\n    users: [\n        devJujuUser.name,\n        qa.name,\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_juju as juju\n\nthis = juju.AccessModel(\"this\",\n    model_uuid=dev[\"uuid\"],\n    access=\"write\",\n    users=[\n        dev_juju_user[\"name\"],\n        qa[\"name\"],\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Juju = Pulumi.Juju;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var @this = new Juju.AccessModel(\"this\", new()\n    {\n        ModelUuid = dev.Uuid,\n        Access = \"write\",\n        Users = new[]\n        {\n            devJujuUser.Name,\n            qa.Name,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/juju/juju\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := juju.NewAccessModel(ctx, \"this\", \u0026juju.AccessModelArgs{\n\t\t\tModelUuid: pulumi.Any(dev.Uuid),\n\t\t\tAccess:    pulumi.String(\"write\"),\n\t\t\tUsers: pulumi.StringArray{\n\t\t\t\tdevJujuUser.Name,\n\t\t\t\tqa.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.juju.AccessModel;\nimport com.pulumi.juju.AccessModelArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var this_ = new AccessModel(\"this\", AccessModelArgs.builder()\n            .modelUuid(dev.uuid())\n            .access(\"write\")\n            .users(            \n                devJujuUser.name(),\n                qa.name())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  this:\n    type: juju:AccessModel\n    properties:\n      modelUuid: ${dev.uuid}\n      access: write\n      users:\n        - ${devJujuUser.name}\n        - ${qa.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nAccess Models can be imported using the model name,\n\naccess and comma separated list of users\n\n```sh\n$ pulumi import juju:index/accessModel:AccessModel development development:read:user-one,user-two\n```\n\n","properties":{"access":{"type":"string","description":"Type of access to the model\n"},"modelUuid":{"type":"string","description":"The uuid of the model for access management\n"},"users":{"type":"array","items":{"type":"string"},"description":"Set of users to grant access to\n"}},"type":"object","required":["access","modelUuid","users"],"inputProperties":{"access":{"type":"string","description":"Type of access to the model\n"},"modelUuid":{"type":"string","description":"The uuid of the model for access management\n"},"users":{"type":"array","items":{"type":"string"},"description":"Set of users to grant access to\n"}},"requiredInputs":["access","modelUuid","users"],"stateInputs":{"description":"Input properties used for looking up and filtering AccessModel resources.\n","properties":{"access":{"type":"string","description":"Type of access to the model\n"},"modelUuid":{"type":"string","description":"The uuid of the model for access management\n"},"users":{"type":"array","items":{"type":"string"},"description":"Set of users to grant access to\n"}},"type":"object"}},"juju:index/accessOffer:AccessOffer":{"description":"A resource that represent a Juju Access Offer. Warning: Do not repeat users across different access levels.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as juju from \"@pulumi/juju\";\n\nconst _this = new juju.AccessOffer(\"this\", {\n    offerUrl: myApplicationOffer.url,\n    consumes: [dev.name],\n});\n```\n```python\nimport pulumi\nimport pulumi_juju as juju\n\nthis = juju.AccessOffer(\"this\",\n    offer_url=my_application_offer[\"url\"],\n    consumes=[dev[\"name\"]])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Juju = Pulumi.Juju;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var @this = new Juju.AccessOffer(\"this\", new()\n    {\n        OfferUrl = myApplicationOffer.Url,\n        Consumes = new[]\n        {\n            dev.Name,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/juju/juju\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := juju.NewAccessOffer(ctx, \"this\", \u0026juju.AccessOfferArgs{\n\t\t\tOfferUrl: pulumi.Any(myApplicationOffer.Url),\n\t\t\tConsumes: pulumi.StringArray{\n\t\t\t\tdev.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.juju.AccessOffer;\nimport com.pulumi.juju.AccessOfferArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var this_ = new AccessOffer(\"this\", AccessOfferArgs.builder()\n            .offerUrl(myApplicationOffer.url())\n            .consumes(dev.name())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  this:\n    type: juju:AccessOffer\n    properties:\n      offerUrl: ${myApplicationOffer.url}\n      consumes:\n        - ${dev.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nAccess Offers can be imported by using the Offer URL as in the juju show-offers output.\n\nExample:\n\n$juju show-offer mysql\n\nStore            URL             Access  Description                                    Endpoint  Interface  Role\n\nmycontroller     admin/db.mysql  admin   MariaDB Server is one of the most ...          mysql     mysql      provider\n\n```sh\n$ pulumi import juju:index/accessOffer:AccessOffer db admin/db.mysql\n```\n\n","properties":{"admins":{"type":"array","items":{"type":"string"},"description":"List of users to grant admin access. \"admin\" user is not allowed.\n"},"consumes":{"type":"array","items":{"type":"string"},"description":"List of users to grant consume access. \"admin\" user is not allowed.\n"},"offerUrl":{"type":"string","description":"The url of the offer for access management. If this is changed the resource will be deleted and a new resource will be created.\n"},"reads":{"type":"array","items":{"type":"string"},"description":"List of users to grant read access. \"admin\" user is not allowed.\n"}},"type":"object","required":["offerUrl"],"inputProperties":{"admins":{"type":"array","items":{"type":"string"},"description":"List of users to grant admin access. \"admin\" user is not allowed.\n"},"consumes":{"type":"array","items":{"type":"string"},"description":"List of users to grant consume access. \"admin\" user is not allowed.\n"},"offerUrl":{"type":"string","description":"The url of the offer for access management. If this is changed the resource will be deleted and a new resource will be created.\n"},"reads":{"type":"array","items":{"type":"string"},"description":"List of users to grant read access. \"admin\" user is not allowed.\n"}},"requiredInputs":["offerUrl"],"stateInputs":{"description":"Input properties used for looking up and filtering AccessOffer resources.\n","properties":{"admins":{"type":"array","items":{"type":"string"},"description":"List of users to grant admin access. \"admin\" user is not allowed.\n"},"consumes":{"type":"array","items":{"type":"string"},"description":"List of users to grant consume access. \"admin\" user is not allowed.\n"},"offerUrl":{"type":"string","description":"The url of the offer for access management. If this is changed the resource will be deleted and a new resource will be created.\n"},"reads":{"type":"array","items":{"type":"string"},"description":"List of users to grant read access. \"admin\" user is not allowed.\n"}},"type":"object"}},"juju:index/accessSecret:AccessSecret":{"description":"A resource that represents a Juju secret access.\n","properties":{"applications":{"type":"array","items":{"type":"string"},"description":"The list of applications to which the secret is granted.\n"},"modelUuid":{"type":"string","description":"The UUID of the model in which the secret belongs.\n"},"secretId":{"type":"string","description":"The ID of the secret. E.g. coj8mulh8b41e8nv6p90\n"}},"type":"object","required":["applications","modelUuid","secretId"],"inputProperties":{"applications":{"type":"array","items":{"type":"string"},"description":"The list of applications to which the secret is granted.\n"},"modelUuid":{"type":"string","description":"The UUID of the model in which the secret belongs.\n"},"secretId":{"type":"string","description":"The ID of the secret. E.g. coj8mulh8b41e8nv6p90\n"}},"requiredInputs":["applications","modelUuid","secretId"],"stateInputs":{"description":"Input properties used for looking up and filtering AccessSecret resources.\n","properties":{"applications":{"type":"array","items":{"type":"string"},"description":"The list of applications to which the secret is granted.\n"},"modelUuid":{"type":"string","description":"The UUID of the model in which the secret belongs.\n"},"secretId":{"type":"string","description":"The ID of the secret. E.g. coj8mulh8b41e8nv6p90\n"}},"type":"object"}},"juju:index/application:Application":{"description":"A resource that represents a single Juju application deployment from a charm. Deployment of bundles is not supported.\n\n## Import\n\nApplications can be imported using the format: `model_uuid:application_name`, for example:\n\n```sh\n$ pulumi import juju:index/application:Application wordpress abe22490-a845-4a4d-ba52-7ec80a60aff5:wordpress\n```\n\n","properties":{"charms":{"type":"array","items":{"$ref":"#/types/juju:index%2FApplicationCharm:ApplicationCharm"},"description":"The charm installed from Charmhub."},"config":{"type":"object","additionalProperties":{"type":"string"},"description":"Application specific configuration. Must evaluate to a string, integer or boolean."},"constraints":{"type":"string"},"endpointBindings":{"type":"array","items":{"$ref":"#/types/juju:index%2FApplicationEndpointBinding:ApplicationEndpointBinding"},"description":"Configure endpoint bindings"},"exposes":{"type":"array","items":{"$ref":"#/types/juju:index%2FApplicationExpose:ApplicationExpose"},"description":"Makes an application publicly available over the network"},"machines":{"type":"array","items":{"type":"string"},"description":"Specify the target machines for the application's units. The number of machines in the set indicates the unit count for the application. Removing a machine from the set will remove the application's unit residing on it. \u003cspan pulumi-lang-nodejs=\"`machines`\" pulumi-lang-dotnet=\"`Machines`\" pulumi-lang-go=\"`machines`\" pulumi-lang-python=\"`machines`\" pulumi-lang-yaml=\"`machines`\" pulumi-lang-java=\"`machines`\"\u003e`machines`\u003c/span\u003e is mutually exclusive with \u003cspan pulumi-lang-nodejs=\"`units`\" pulumi-lang-dotnet=\"`Units`\" pulumi-lang-go=\"`units`\" pulumi-lang-python=\"`units`\" pulumi-lang-yaml=\"`units`\" pulumi-lang-java=\"`units`\"\u003e`units`\u003c/span\u003e."},"modelType":{"type":"string","description":"The type of the model where the application is deployed. It is a computed field and is needed to determine if the application should be replaced or updated in case of base updates."},"modelUuid":{"type":"string"},"name":{"type":"string"},"registryCredentials":{"type":"object","additionalProperties":{"$ref":"#/types/juju:index%2FApplicationRegistryCredentials:ApplicationRegistryCredentials"},"description":"OCI image registry credentials for OCI images specified in the charm resources. The map key is the registry URL.\n\n\tIf the charm resource requires authentication, supply a username and password that will be passed to the Juju API and added to the Kubernetes cluster.\n\n\tThe registry credentials will only be used if the URL of the registry is a partial match for the OCI image URL specified in the charm resources.\n\tAn OCI image URL is considered a match for a registry URL if the URL without the OCI image tag matches the registry URL. For example, \n\ta charm OCI resource specified as \"registry.example.com:5000/path/image:tag\" will match a registry entry with key \"registry.example.com:5000/path\" \n\tbut not \"registry.example.com:5000\" nor \"registry.example.com\"."},"resources":{"type":"object","additionalProperties":{"type":"string"},"description":"Charm resources. Must evaluate to a string. A resource could be a resource revision number from CharmHub or a custom OCI image resource.\nSpecify a resource other than the default for a charm. Note that not all charms have resources.\n\nNotes:\n* A resource can be specified by a revision number or by URL to a OCI image repository. Resources of type 'file' can only be specified by revision number. Resources of type 'oci-image' can be specified by revision number or URL.\n* A resource can be added or changed at any time. If the charm has resources and None is specified in the plan, Juju will use the resource defined in the charm's specified channel.\n* If a charm is refreshed, by changing the charm revision or channel and if the resource is specified by a revision in the plan, Juju will use the resource defined in the plan.\n* Resources specified by URL to an OCI image repository will never be refreshed (upgraded) by juju during a charm refresh unless explicitly changed in the plan."},"storageDirectives":{"type":"object","additionalProperties":{"type":"string"},"description":"Storage directives (constraints) for the juju application. The map key is the label of the storage defined by the charm, the map value is the storage directive in the form [\u003cpool\u003e,][\u003ccount\u003e,][\u003csize\u003e]  where at least one constraint must be specified. See https://documentation.ubuntu.com/juju/3.6/reference/storage/ for more details. If a pool is not specified, the model's default pool will be used. Changing an existing key/value pair will cause the application to be replaced. Adding a new key/value pair will add storage to the application on upgrade."},"storages":{"type":"array","items":{"$ref":"#/types/juju:index%2FApplicationStorage:ApplicationStorage"},"description":"Storage used by the application."},"trust":{"type":"boolean","description":"Set the trust for the application."},"units":{"type":"number","description":"The number of application units to deploy for the charm."}},"type":"object","required":["constraints","machines","modelType","modelUuid","name","storages","trust","units"],"inputProperties":{"charms":{"type":"array","items":{"$ref":"#/types/juju:index%2FApplicationCharm:ApplicationCharm"},"description":"The charm installed from Charmhub."},"config":{"type":"object","additionalProperties":{"type":"string"},"description":"Application specific configuration. Must evaluate to a string, integer or boolean."},"constraints":{"type":"string"},"endpointBindings":{"type":"array","items":{"$ref":"#/types/juju:index%2FApplicationEndpointBinding:ApplicationEndpointBinding"},"description":"Configure endpoint bindings"},"exposes":{"type":"array","items":{"$ref":"#/types/juju:index%2FApplicationExpose:ApplicationExpose"},"description":"Makes an application publicly available over the network"},"machines":{"type":"array","items":{"type":"string"},"description":"Specify the target machines for the application's units. The number of machines in the set indicates the unit count for the application. Removing a machine from the set will remove the application's unit residing on it. \u003cspan pulumi-lang-nodejs=\"`machines`\" pulumi-lang-dotnet=\"`Machines`\" pulumi-lang-go=\"`machines`\" pulumi-lang-python=\"`machines`\" pulumi-lang-yaml=\"`machines`\" pulumi-lang-java=\"`machines`\"\u003e`machines`\u003c/span\u003e is mutually exclusive with \u003cspan pulumi-lang-nodejs=\"`units`\" pulumi-lang-dotnet=\"`Units`\" pulumi-lang-go=\"`units`\" pulumi-lang-python=\"`units`\" pulumi-lang-yaml=\"`units`\" pulumi-lang-java=\"`units`\"\u003e`units`\u003c/span\u003e."},"modelUuid":{"type":"string"},"name":{"type":"string"},"registryCredentials":{"type":"object","additionalProperties":{"$ref":"#/types/juju:index%2FApplicationRegistryCredentials:ApplicationRegistryCredentials"},"description":"OCI image registry credentials for OCI images specified in the charm resources. The map key is the registry URL.\n\n\tIf the charm resource requires authentication, supply a username and password that will be passed to the Juju API and added to the Kubernetes cluster.\n\n\tThe registry credentials will only be used if the URL of the registry is a partial match for the OCI image URL specified in the charm resources.\n\tAn OCI image URL is considered a match for a registry URL if the URL without the OCI image tag matches the registry URL. For example, \n\ta charm OCI resource specified as \"registry.example.com:5000/path/image:tag\" will match a registry entry with key \"registry.example.com:5000/path\" \n\tbut not \"registry.example.com:5000\" nor \"registry.example.com\"."},"resources":{"type":"object","additionalProperties":{"type":"string"},"description":"Charm resources. Must evaluate to a string. A resource could be a resource revision number from CharmHub or a custom OCI image resource.\nSpecify a resource other than the default for a charm. Note that not all charms have resources.\n\nNotes:\n* A resource can be specified by a revision number or by URL to a OCI image repository. Resources of type 'file' can only be specified by revision number. Resources of type 'oci-image' can be specified by revision number or URL.\n* A resource can be added or changed at any time. If the charm has resources and None is specified in the plan, Juju will use the resource defined in the charm's specified channel.\n* If a charm is refreshed, by changing the charm revision or channel and if the resource is specified by a revision in the plan, Juju will use the resource defined in the plan.\n* Resources specified by URL to an OCI image repository will never be refreshed (upgraded) by juju during a charm refresh unless explicitly changed in the plan."},"storageDirectives":{"type":"object","additionalProperties":{"type":"string"},"description":"Storage directives (constraints) for the juju application. The map key is the label of the storage defined by the charm, the map value is the storage directive in the form [\u003cpool\u003e,][\u003ccount\u003e,][\u003csize\u003e]  where at least one constraint must be specified. See https://documentation.ubuntu.com/juju/3.6/reference/storage/ for more details. If a pool is not specified, the model's default pool will be used. Changing an existing key/value pair will cause the application to be replaced. Adding a new key/value pair will add storage to the application on upgrade."},"trust":{"type":"boolean","description":"Set the trust for the application."},"units":{"type":"number","description":"The number of application units to deploy for the charm."}},"requiredInputs":["modelUuid"],"stateInputs":{"description":"Input properties used for looking up and filtering Application resources.\n","properties":{"charms":{"type":"array","items":{"$ref":"#/types/juju:index%2FApplicationCharm:ApplicationCharm"},"description":"The charm installed from Charmhub."},"config":{"type":"object","additionalProperties":{"type":"string"},"description":"Application specific configuration. Must evaluate to a string, integer or boolean."},"constraints":{"type":"string"},"endpointBindings":{"type":"array","items":{"$ref":"#/types/juju:index%2FApplicationEndpointBinding:ApplicationEndpointBinding"},"description":"Configure endpoint bindings"},"exposes":{"type":"array","items":{"$ref":"#/types/juju:index%2FApplicationExpose:ApplicationExpose"},"description":"Makes an application publicly available over the network"},"machines":{"type":"array","items":{"type":"string"},"description":"Specify the target machines for the application's units. The number of machines in the set indicates the unit count for the application. Removing a machine from the set will remove the application's unit residing on it. \u003cspan pulumi-lang-nodejs=\"`machines`\" pulumi-lang-dotnet=\"`Machines`\" pulumi-lang-go=\"`machines`\" pulumi-lang-python=\"`machines`\" pulumi-lang-yaml=\"`machines`\" pulumi-lang-java=\"`machines`\"\u003e`machines`\u003c/span\u003e is mutually exclusive with \u003cspan pulumi-lang-nodejs=\"`units`\" pulumi-lang-dotnet=\"`Units`\" pulumi-lang-go=\"`units`\" pulumi-lang-python=\"`units`\" pulumi-lang-yaml=\"`units`\" pulumi-lang-java=\"`units`\"\u003e`units`\u003c/span\u003e."},"modelType":{"type":"string","description":"The type of the model where the application is deployed. It is a computed field and is needed to determine if the application should be replaced or updated in case of base updates."},"modelUuid":{"type":"string"},"name":{"type":"string"},"registryCredentials":{"type":"object","additionalProperties":{"$ref":"#/types/juju:index%2FApplicationRegistryCredentials:ApplicationRegistryCredentials"},"description":"OCI image registry credentials for OCI images specified in the charm resources. The map key is the registry URL.\n\n\tIf the charm resource requires authentication, supply a username and password that will be passed to the Juju API and added to the Kubernetes cluster.\n\n\tThe registry credentials will only be used if the URL of the registry is a partial match for the OCI image URL specified in the charm resources.\n\tAn OCI image URL is considered a match for a registry URL if the URL without the OCI image tag matches the registry URL. For example, \n\ta charm OCI resource specified as \"registry.example.com:5000/path/image:tag\" will match a registry entry with key \"registry.example.com:5000/path\" \n\tbut not \"registry.example.com:5000\" nor \"registry.example.com\"."},"resources":{"type":"object","additionalProperties":{"type":"string"},"description":"Charm resources. Must evaluate to a string. A resource could be a resource revision number from CharmHub or a custom OCI image resource.\nSpecify a resource other than the default for a charm. Note that not all charms have resources.\n\nNotes:\n* A resource can be specified by a revision number or by URL to a OCI image repository. Resources of type 'file' can only be specified by revision number. Resources of type 'oci-image' can be specified by revision number or URL.\n* A resource can be added or changed at any time. If the charm has resources and None is specified in the plan, Juju will use the resource defined in the charm's specified channel.\n* If a charm is refreshed, by changing the charm revision or channel and if the resource is specified by a revision in the plan, Juju will use the resource defined in the plan.\n* Resources specified by URL to an OCI image repository will never be refreshed (upgraded) by juju during a charm refresh unless explicitly changed in the plan."},"storageDirectives":{"type":"object","additionalProperties":{"type":"string"},"description":"Storage directives (constraints) for the juju application. The map key is the label of the storage defined by the charm, the map value is the storage directive in the form [\u003cpool\u003e,][\u003ccount\u003e,][\u003csize\u003e]  where at least one constraint must be specified. See https://documentation.ubuntu.com/juju/3.6/reference/storage/ for more details. If a pool is not specified, the model's default pool will be used. Changing an existing key/value pair will cause the application to be replaced. Adding a new key/value pair will add storage to the application on upgrade."},"storages":{"type":"array","items":{"$ref":"#/types/juju:index%2FApplicationStorage:ApplicationStorage"},"description":"Storage used by the application."},"trust":{"type":"boolean","description":"Set the trust for the application."},"units":{"type":"number","description":"The number of application units to deploy for the charm."}},"type":"object"}},"juju:index/cloud:Cloud":{"description":"A resource that represents a Juju Cloud for an existing controller.\n\n","properties":{"authTypes":{"type":"array","items":{"type":"string"},"description":"List of supported authentication types by the cloud.\n"},"caCertificates":{"type":"array","items":{"type":"string"},"description":"List of PEM-encoded X509 certificates for the cloud.\n","secret":true},"endpoint":{"type":"string","description":"Optional global endpoint for the cloud.\n"},"identityEndpoint":{"type":"string","description":"Optional global identity endpoint for the cloud.\n"},"name":{"type":"string","description":"The name of the cloud in Juju.\n"},"regions":{"type":"array","items":{"$ref":"#/types/juju:index%2FCloudRegion:CloudRegion"},"description":"List of regions for the cloud. The first region in the list is the default region for the cloud.\n"},"storageEndpoint":{"type":"string","description":"Optional global storage endpoint for the cloud.\n"},"type":{"type":"string","description":"The type of the cloud.\n"}},"type":"object","required":["authTypes","name","regions","type"],"inputProperties":{"authTypes":{"type":"array","items":{"type":"string"},"description":"List of supported authentication types by the cloud.\n"},"caCertificates":{"type":"array","items":{"type":"string"},"description":"List of PEM-encoded X509 certificates for the cloud.\n","secret":true},"endpoint":{"type":"string","description":"Optional global endpoint for the cloud.\n"},"identityEndpoint":{"type":"string","description":"Optional global identity endpoint for the cloud.\n"},"name":{"type":"string","description":"The name of the cloud in Juju.\n"},"regions":{"type":"array","items":{"$ref":"#/types/juju:index%2FCloudRegion:CloudRegion"},"description":"List of regions for the cloud. The first region in the list is the default region for the cloud.\n"},"storageEndpoint":{"type":"string","description":"Optional global storage endpoint for the cloud.\n"},"type":{"type":"string","description":"The type of the cloud.\n"}},"requiredInputs":["authTypes","type"],"stateInputs":{"description":"Input properties used for looking up and filtering Cloud resources.\n","properties":{"authTypes":{"type":"array","items":{"type":"string"},"description":"List of supported authentication types by the cloud.\n"},"caCertificates":{"type":"array","items":{"type":"string"},"description":"List of PEM-encoded X509 certificates for the cloud.\n","secret":true},"endpoint":{"type":"string","description":"Optional global endpoint for the cloud.\n"},"identityEndpoint":{"type":"string","description":"Optional global identity endpoint for the cloud.\n"},"name":{"type":"string","description":"The name of the cloud in Juju.\n"},"regions":{"type":"array","items":{"$ref":"#/types/juju:index%2FCloudRegion:CloudRegion"},"description":"List of regions for the cloud. The first region in the list is the default region for the cloud.\n"},"storageEndpoint":{"type":"string","description":"Optional global storage endpoint for the cloud.\n"},"type":{"type":"string","description":"The type of the cloud.\n"}},"type":"object"}},"juju:index/controller:Controller":{"description":"A resource that represents a Juju Controller.\n\n","properties":{"agentVersion":{"type":"string","description":"Specifies a controller version to bootstrap. If not specified, the latest stable agent version will be used.\n"},"apiAddresses":{"type":"array","items":{"type":"string"},"description":"API addresses of the controller.\n"},"bootstrapBase":{"type":"string","description":"The base for the bootstrap machine.\n"},"bootstrapConfig":{"type":"object","additionalProperties":{"type":"string"},"description":"Configuration options that apply during the bootstrap process.\n"},"bootstrapConstraints":{"type":"object","additionalProperties":{"type":"string"},"description":"Constraints for the bootstrap machine.\n"},"caCert":{"type":"string","description":"CA certificate for the controller.\n"},"cloud":{"$ref":"#/types/juju:index%2FControllerCloud:ControllerCloud","description":"The cloud where the controller will operate.\n"},"cloudCredential":{"$ref":"#/types/juju:index%2FControllerCloudCredential:ControllerCloudCredential","description":"Cloud credentials to use for bootstrapping the controller.\n","secret":true},"controllerConfig":{"type":"object","additionalProperties":{"type":"string"},"description":"Configuration options for the bootstrapped controller. Note that removing a key from this map will not unset it in the controller, instead it will be left unchanged on the controller.\n"},"controllerModelConfig":{"type":"object","additionalProperties":{"type":"string"},"description":"Configuration options to be set for the controller model.\n"},"controllerUuid":{"type":"string","description":"The UUID of the controller.\n"},"destroyFlags":{"$ref":"#/types/juju:index%2FControllerDestroyFlags:ControllerDestroyFlags","description":"Additional flags for destroying the controller. Changing any of these values will require applying before they can be taken into account during destroy.\n"},"jujuBinary":{"type":"string","description":"The path to the juju CLI binary. If you have installed Juju as a snap, use the path `/snap/juju/current/bin/juju` to avoid snap confinement issues.\n"},"modelConstraints":{"type":"object","additionalProperties":{"type":"string"},"description":"Constraints for all workload machines in models.\n"},"modelDefault":{"type":"object","additionalProperties":{"type":"string"},"description":"Configuration options to be set for all models.\n"},"name":{"type":"string"},"password":{"type":"string","description":"Admin password for the controller.\n","secret":true},"storagePool":{"$ref":"#/types/juju:index%2FControllerStoragePool:ControllerStoragePool","description":"Options for the initial storage pool\n"},"username":{"type":"string","description":"Admin username for the controller.\n"}},"type":"object","required":["agentVersion","apiAddresses","caCert","cloud","cloudCredential","controllerUuid","jujuBinary","name","password","username"],"inputProperties":{"agentVersion":{"type":"string","description":"Specifies a controller version to bootstrap. If not specified, the latest stable agent version will be used.\n"},"bootstrapBase":{"type":"string","description":"The base for the bootstrap machine.\n"},"bootstrapConfig":{"type":"object","additionalProperties":{"type":"string"},"description":"Configuration options that apply during the bootstrap process.\n"},"bootstrapConstraints":{"type":"object","additionalProperties":{"type":"string"},"description":"Constraints for the bootstrap machine.\n"},"cloud":{"$ref":"#/types/juju:index%2FControllerCloud:ControllerCloud","description":"The cloud where the controller will operate.\n"},"cloudCredential":{"$ref":"#/types/juju:index%2FControllerCloudCredential:ControllerCloudCredential","description":"Cloud credentials to use for bootstrapping the controller.\n","secret":true},"controllerConfig":{"type":"object","additionalProperties":{"type":"string"},"description":"Configuration options for the bootstrapped controller. Note that removing a key from this map will not unset it in the controller, instead it will be left unchanged on the controller.\n"},"controllerModelConfig":{"type":"object","additionalProperties":{"type":"string"},"description":"Configuration options to be set for the controller model.\n"},"destroyFlags":{"$ref":"#/types/juju:index%2FControllerDestroyFlags:ControllerDestroyFlags","description":"Additional flags for destroying the controller. Changing any of these values will require applying before they can be taken into account during destroy.\n"},"jujuBinary":{"type":"string","description":"The path to the juju CLI binary. If you have installed Juju as a snap, use the path `/snap/juju/current/bin/juju` to avoid snap confinement issues.\n"},"modelConstraints":{"type":"object","additionalProperties":{"type":"string"},"description":"Constraints for all workload machines in models.\n"},"modelDefault":{"type":"object","additionalProperties":{"type":"string"},"description":"Configuration options to be set for all models.\n"},"name":{"type":"string"},"storagePool":{"$ref":"#/types/juju:index%2FControllerStoragePool:ControllerStoragePool","description":"Options for the initial storage pool\n"}},"requiredInputs":["cloud","cloudCredential","jujuBinary"],"stateInputs":{"description":"Input properties used for looking up and filtering Controller resources.\n","properties":{"agentVersion":{"type":"string","description":"Specifies a controller version to bootstrap. If not specified, the latest stable agent version will be used.\n"},"apiAddresses":{"type":"array","items":{"type":"string"},"description":"API addresses of the controller.\n"},"bootstrapBase":{"type":"string","description":"The base for the bootstrap machine.\n"},"bootstrapConfig":{"type":"object","additionalProperties":{"type":"string"},"description":"Configuration options that apply during the bootstrap process.\n"},"bootstrapConstraints":{"type":"object","additionalProperties":{"type":"string"},"description":"Constraints for the bootstrap machine.\n"},"caCert":{"type":"string","description":"CA certificate for the controller.\n"},"cloud":{"$ref":"#/types/juju:index%2FControllerCloud:ControllerCloud","description":"The cloud where the controller will operate.\n"},"cloudCredential":{"$ref":"#/types/juju:index%2FControllerCloudCredential:ControllerCloudCredential","description":"Cloud credentials to use for bootstrapping the controller.\n","secret":true},"controllerConfig":{"type":"object","additionalProperties":{"type":"string"},"description":"Configuration options for the bootstrapped controller. Note that removing a key from this map will not unset it in the controller, instead it will be left unchanged on the controller.\n"},"controllerModelConfig":{"type":"object","additionalProperties":{"type":"string"},"description":"Configuration options to be set for the controller model.\n"},"controllerUuid":{"type":"string","description":"The UUID of the controller.\n"},"destroyFlags":{"$ref":"#/types/juju:index%2FControllerDestroyFlags:ControllerDestroyFlags","description":"Additional flags for destroying the controller. Changing any of these values will require applying before they can be taken into account during destroy.\n"},"jujuBinary":{"type":"string","description":"The path to the juju CLI binary. If you have installed Juju as a snap, use the path `/snap/juju/current/bin/juju` to avoid snap confinement issues.\n"},"modelConstraints":{"type":"object","additionalProperties":{"type":"string"},"description":"Constraints for all workload machines in models.\n"},"modelDefault":{"type":"object","additionalProperties":{"type":"string"},"description":"Configuration options to be set for all models.\n"},"name":{"type":"string"},"password":{"type":"string","description":"Admin password for the controller.\n","secret":true},"storagePool":{"$ref":"#/types/juju:index%2FControllerStoragePool:ControllerStoragePool","description":"Options for the initial storage pool\n"},"username":{"type":"string","description":"Admin username for the controller.\n"}},"type":"object"}},"juju:index/credential:Credential":{"description":"A resource that represent a credential for a cloud.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as juju from \"@pulumi/juju\";\n\nconst _this = new juju.Credential(\"this\", {\n    name: \"creddev\",\n    clouds: [{\n        name: \"localhost\",\n    }],\n    authType: \"certificate\",\n    attributes: {\n        \"client-cert\": \"/srv/cert.crt\",\n        \"client-key\": \"/srv/cert.key\",\n        \"trust-password\": \"S0m3P@$$w0rd\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_juju as juju\n\nthis = juju.Credential(\"this\",\n    name=\"creddev\",\n    clouds=[{\n        \"name\": \"localhost\",\n    }],\n    auth_type=\"certificate\",\n    attributes={\n        \"client-cert\": \"/srv/cert.crt\",\n        \"client-key\": \"/srv/cert.key\",\n        \"trust-password\": \"S0m3P@$$w0rd\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Juju = Pulumi.Juju;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var @this = new Juju.Credential(\"this\", new()\n    {\n        Name = \"creddev\",\n        Clouds = new[]\n        {\n            new Juju.Inputs.CredentialCloudArgs\n            {\n                Name = \"localhost\",\n            },\n        },\n        AuthType = \"certificate\",\n        Attributes = \n        {\n            { \"client-cert\", \"/srv/cert.crt\" },\n            { \"client-key\", \"/srv/cert.key\" },\n            { \"trust-password\", \"S0m3P@$$w0rd\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/juju/juju\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := juju.NewCredential(ctx, \"this\", \u0026juju.CredentialArgs{\n\t\t\tName: pulumi.String(\"creddev\"),\n\t\t\tClouds: juju.CredentialCloudArray{\n\t\t\t\t\u0026juju.CredentialCloudArgs{\n\t\t\t\t\tName: pulumi.String(\"localhost\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAuthType: pulumi.String(\"certificate\"),\n\t\t\tAttributes: pulumi.StringMap{\n\t\t\t\t\"client-cert\":    pulumi.String(\"/srv/cert.crt\"),\n\t\t\t\t\"client-key\":     pulumi.String(\"/srv/cert.key\"),\n\t\t\t\t\"trust-password\": pulumi.String(\"S0m3P@$$w0rd\"),\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.juju.Credential;\nimport com.pulumi.juju.CredentialArgs;\nimport com.pulumi.juju.inputs.CredentialCloudArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var this_ = new Credential(\"this\", CredentialArgs.builder()\n            .name(\"creddev\")\n            .clouds(CredentialCloudArgs.builder()\n                .name(\"localhost\")\n                .build())\n            .authType(\"certificate\")\n            .attributes(Map.ofEntries(\n                Map.entry(\"client-cert\", \"/srv/cert.crt\"),\n                Map.entry(\"client-key\", \"/srv/cert.key\"),\n                Map.entry(\"trust-password\", \"S0m3P@$$w0rd\")\n            ))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  this:\n    type: juju:Credential\n    properties:\n      name: creddev\n      clouds:\n        - name: localhost\n      authType: certificate\n      attributes:\n        client-cert: /srv/cert.crt\n        client-key: /srv/cert.key\n        trust-password: S0m3P@$$w0rd\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nCredentials can be imported by using the following pattern: \n\ncredentialname:cloudname:false:true\n\nWhere false means that is not a client credential\n\nand true means that is a Controller credential\n\n```sh\n$ pulumi import juju:index/credential:Credential credential creddev:localhost:false:true\n```\n\n","properties":{"attributes":{"type":"object","additionalProperties":{"type":"string"},"description":"Credential attributes accordingly to the cloud\n","secret":true},"authType":{"type":"string","description":"Credential authorization type.\n"},"clientCredential":{"type":"boolean","description":"Add credentials to the client.\n"},"clouds":{"type":"array","items":{"$ref":"#/types/juju:index%2FCredentialCloud:CredentialCloud"},"description":"Juju Cloud where the credentials will be used to access.\n"},"controllerCredential":{"type":"boolean","description":"Add credentials to the controller.\n"},"name":{"type":"string"}},"type":"object","required":["authType","clientCredential","controllerCredential","name"],"inputProperties":{"attributes":{"type":"object","additionalProperties":{"type":"string"},"description":"Credential attributes accordingly to the cloud\n","secret":true},"authType":{"type":"string","description":"Credential authorization type.\n"},"clientCredential":{"type":"boolean","description":"Add credentials to the client.\n"},"clouds":{"type":"array","items":{"$ref":"#/types/juju:index%2FCredentialCloud:CredentialCloud"},"description":"Juju Cloud where the credentials will be used to access.\n"},"controllerCredential":{"type":"boolean","description":"Add credentials to the controller.\n"},"name":{"type":"string"}},"requiredInputs":["authType"],"stateInputs":{"description":"Input properties used for looking up and filtering Credential resources.\n","properties":{"attributes":{"type":"object","additionalProperties":{"type":"string"},"description":"Credential attributes accordingly to the cloud\n","secret":true},"authType":{"type":"string","description":"Credential authorization type.\n"},"clientCredential":{"type":"boolean","description":"Add credentials to the client.\n"},"clouds":{"type":"array","items":{"$ref":"#/types/juju:index%2FCredentialCloud:CredentialCloud"},"description":"Juju Cloud where the credentials will be used to access.\n"},"controllerCredential":{"type":"boolean","description":"Add credentials to the controller.\n"},"name":{"type":"string"}},"type":"object"}},"juju:index/integration:Integration":{"description":"A resource that represents a Juju Integration.\n\n","properties":{"applications":{"type":"array","items":{"$ref":"#/types/juju:index%2FIntegrationApplication:IntegrationApplication"},"description":"The two applications to integrate.\n"},"modelUuid":{"type":"string","description":"The UUID of the model to operate in.\n"},"via":{"type":"string","description":"A comma separated list of CIDRs for outbound traffic.\n"}},"type":"object","required":["modelUuid"],"inputProperties":{"applications":{"type":"array","items":{"$ref":"#/types/juju:index%2FIntegrationApplication:IntegrationApplication"},"description":"The two applications to integrate.\n"},"modelUuid":{"type":"string","description":"The UUID of the model to operate in.\n"},"via":{"type":"string","description":"A comma separated list of CIDRs for outbound traffic.\n"}},"requiredInputs":["modelUuid"],"stateInputs":{"description":"Input properties used for looking up and filtering Integration resources.\n","properties":{"applications":{"type":"array","items":{"$ref":"#/types/juju:index%2FIntegrationApplication:IntegrationApplication"},"description":"The two applications to integrate.\n"},"modelUuid":{"type":"string","description":"The UUID of the model to operate in.\n"},"via":{"type":"string","description":"A comma separated list of CIDRs for outbound traffic.\n"}},"type":"object"}},"juju:index/jaasAccessCloud:JaasAccessCloud":{"description":"A resource that represents access to a cloud when using JAAS.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as juju from \"@pulumi/juju\";\n\nconst development = new juju.JaasAccessCloud(\"development\", {\n    cloudName: \"aws\",\n    access: \"can_addmodel\",\n    users: [\"foo@domain.com\"],\n    groups: [developmentJujuJaasGroup.uuid],\n    serviceAccounts: [\n        \"Client-ID-1\",\n        \"Client-ID-2\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_juju as juju\n\ndevelopment = juju.JaasAccessCloud(\"development\",\n    cloud_name=\"aws\",\n    access=\"can_addmodel\",\n    users=[\"foo@domain.com\"],\n    groups=[development_juju_jaas_group[\"uuid\"]],\n    service_accounts=[\n        \"Client-ID-1\",\n        \"Client-ID-2\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Juju = Pulumi.Juju;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var development = new Juju.JaasAccessCloud(\"development\", new()\n    {\n        CloudName = \"aws\",\n        Access = \"can_addmodel\",\n        Users = new[]\n        {\n            \"foo@domain.com\",\n        },\n        Groups = new[]\n        {\n            developmentJujuJaasGroup.Uuid,\n        },\n        ServiceAccounts = new[]\n        {\n            \"Client-ID-1\",\n            \"Client-ID-2\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/juju/juju\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := juju.NewJaasAccessCloud(ctx, \"development\", \u0026juju.JaasAccessCloudArgs{\n\t\t\tCloudName: pulumi.String(\"aws\"),\n\t\t\tAccess:    pulumi.String(\"can_addmodel\"),\n\t\t\tUsers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo@domain.com\"),\n\t\t\t},\n\t\t\tGroups: pulumi.StringArray{\n\t\t\t\tdevelopmentJujuJaasGroup.Uuid,\n\t\t\t},\n\t\t\tServiceAccounts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Client-ID-1\"),\n\t\t\t\tpulumi.String(\"Client-ID-2\"),\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.juju.JaasAccessCloud;\nimport com.pulumi.juju.JaasAccessCloudArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var development = new JaasAccessCloud(\"development\", JaasAccessCloudArgs.builder()\n            .cloudName(\"aws\")\n            .access(\"can_addmodel\")\n            .users(\"foo@domain.com\")\n            .groups(developmentJujuJaasGroup.uuid())\n            .serviceAccounts(            \n                \"Client-ID-1\",\n                \"Client-ID-2\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  development:\n    type: juju:JaasAccessCloud\n    properties:\n      cloudName: aws\n      access: can_addmodel\n      users:\n        - foo@domain.com\n      groups:\n        - ${developmentJujuJaasGroup.uuid}\n      serviceAccounts:\n        - Client-ID-1\n        - Client-ID-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nJAAS cloud access can be imported using the cloud name and access level\n\n```sh\n$ pulumi import juju:index/jaasAccessCloud:JaasAccessCloud development aws:can_addmodel\n```\n\n","properties":{"access":{"type":"string"},"cloudName":{"type":"string","description":"The name of the cloud for access management. If this is changed the resource will be deleted and a new resource will be created.\n"},"groups":{"type":"array","items":{"type":"string"},"description":"List of groups to grant access. A valid group ID is the group's UUID.\n"},"roles":{"type":"array","items":{"type":"string"},"description":"List of roles UUIDs to grant access.\n"},"serviceAccounts":{"type":"array","items":{"type":"string"},"description":"List of service accounts to grant access. A valid service account is the service account's name.\n"},"users":{"type":"array","items":{"type":"string"},"description":"List of users to grant access. A valid user is the user's name or email.\n"}},"type":"object","required":["access","cloudName"],"inputProperties":{"access":{"type":"string"},"cloudName":{"type":"string","description":"The name of the cloud for access management. If this is changed the resource will be deleted and a new resource will be created.\n"},"groups":{"type":"array","items":{"type":"string"},"description":"List of groups to grant access. A valid group ID is the group's UUID.\n"},"roles":{"type":"array","items":{"type":"string"},"description":"List of roles UUIDs to grant access.\n"},"serviceAccounts":{"type":"array","items":{"type":"string"},"description":"List of service accounts to grant access. A valid service account is the service account's name.\n"},"users":{"type":"array","items":{"type":"string"},"description":"List of users to grant access. A valid user is the user's name or email.\n"}},"requiredInputs":["access","cloudName"],"stateInputs":{"description":"Input properties used for looking up and filtering JaasAccessCloud resources.\n","properties":{"access":{"type":"string"},"cloudName":{"type":"string","description":"The name of the cloud for access management. If this is changed the resource will be deleted and a new resource will be created.\n"},"groups":{"type":"array","items":{"type":"string"},"description":"List of groups to grant access. A valid group ID is the group's UUID.\n"},"roles":{"type":"array","items":{"type":"string"},"description":"List of roles UUIDs to grant access.\n"},"serviceAccounts":{"type":"array","items":{"type":"string"},"description":"List of service accounts to grant access. A valid service account is the service account's name.\n"},"users":{"type":"array","items":{"type":"string"},"description":"List of users to grant access. A valid user is the user's name or email.\n"}},"type":"object"}},"juju:index/jaasAccessController:JaasAccessController":{"description":"A resource that represents direct access the JAAS controller.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as juju from \"@pulumi/juju\";\n\nconst development = new juju.JaasAccessController(\"development\", {\n    access: \"administrator\",\n    users: [\"foo@domain.com\"],\n    groups: [developmentJujuJaasGroup.uuid],\n    serviceAccounts: [\n        \"Client-ID-1\",\n        \"Client-ID-2\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_juju as juju\n\ndevelopment = juju.JaasAccessController(\"development\",\n    access=\"administrator\",\n    users=[\"foo@domain.com\"],\n    groups=[development_juju_jaas_group[\"uuid\"]],\n    service_accounts=[\n        \"Client-ID-1\",\n        \"Client-ID-2\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Juju = Pulumi.Juju;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var development = new Juju.JaasAccessController(\"development\", new()\n    {\n        Access = \"administrator\",\n        Users = new[]\n        {\n            \"foo@domain.com\",\n        },\n        Groups = new[]\n        {\n            developmentJujuJaasGroup.Uuid,\n        },\n        ServiceAccounts = new[]\n        {\n            \"Client-ID-1\",\n            \"Client-ID-2\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/juju/juju\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := juju.NewJaasAccessController(ctx, \"development\", \u0026juju.JaasAccessControllerArgs{\n\t\t\tAccess: pulumi.String(\"administrator\"),\n\t\t\tUsers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo@domain.com\"),\n\t\t\t},\n\t\t\tGroups: pulumi.StringArray{\n\t\t\t\tdevelopmentJujuJaasGroup.Uuid,\n\t\t\t},\n\t\t\tServiceAccounts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Client-ID-1\"),\n\t\t\t\tpulumi.String(\"Client-ID-2\"),\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.juju.JaasAccessController;\nimport com.pulumi.juju.JaasAccessControllerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var development = new JaasAccessController(\"development\", JaasAccessControllerArgs.builder()\n            .access(\"administrator\")\n            .users(\"foo@domain.com\")\n            .groups(developmentJujuJaasGroup.uuid())\n            .serviceAccounts(            \n                \"Client-ID-1\",\n                \"Client-ID-2\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  development:\n    type: juju:JaasAccessController\n    properties:\n      access: administrator\n      users:\n        - foo@domain.com\n      groups:\n        - ${developmentJujuJaasGroup.uuid}\n      serviceAccounts:\n        - Client-ID-1\n        - Client-ID-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nJAAS controller access can be imported using the fixed JAAS controller name and access level\n\nI.e. in this case jimm is the only valid controller name.\n\n```sh\n$ pulumi import juju:index/jaasAccessController:JaasAccessController development jimm:administrator\n```\n\n","properties":{"access":{"type":"string"},"groups":{"type":"array","items":{"type":"string"},"description":"List of groups to grant access. A valid group ID is the group's UUID.\n"},"roles":{"type":"array","items":{"type":"string"},"description":"List of roles UUIDs to grant access.\n"},"serviceAccounts":{"type":"array","items":{"type":"string"},"description":"List of service accounts to grant access. A valid service account is the service account's name.\n"},"users":{"type":"array","items":{"type":"string"},"description":"List of users to grant access. A valid user is the user's name or email.\n"}},"type":"object","required":["access"],"inputProperties":{"access":{"type":"string"},"groups":{"type":"array","items":{"type":"string"},"description":"List of groups to grant access. A valid group ID is the group's UUID.\n"},"roles":{"type":"array","items":{"type":"string"},"description":"List of roles UUIDs to grant access.\n"},"serviceAccounts":{"type":"array","items":{"type":"string"},"description":"List of service accounts to grant access. A valid service account is the service account's name.\n"},"users":{"type":"array","items":{"type":"string"},"description":"List of users to grant access. A valid user is the user's name or email.\n"}},"requiredInputs":["access"],"stateInputs":{"description":"Input properties used for looking up and filtering JaasAccessController resources.\n","properties":{"access":{"type":"string"},"groups":{"type":"array","items":{"type":"string"},"description":"List of groups to grant access. A valid group ID is the group's UUID.\n"},"roles":{"type":"array","items":{"type":"string"},"description":"List of roles UUIDs to grant access.\n"},"serviceAccounts":{"type":"array","items":{"type":"string"},"description":"List of service accounts to grant access. A valid service account is the service account's name.\n"},"users":{"type":"array","items":{"type":"string"},"description":"List of users to grant access. A valid user is the user's name or email.\n"}},"type":"object"}},"juju:index/jaasAccessGroup:JaasAccessGroup":{"description":"A resource that represents access to a group when using JAAS.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as juju from \"@pulumi/juju\";\n\nconst development = new juju.JaasAccessGroup(\"development\", {\n    groupId: target_group.uuid,\n    access: \"member\",\n    users: [\"foo@domain.com\"],\n    groups: [developmentJujuJaasGroup.uuid],\n    serviceAccounts: [\n        \"Client-ID-1\",\n        \"Client-ID-2\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_juju as juju\n\ndevelopment = juju.JaasAccessGroup(\"development\",\n    group_id=target_group[\"uuid\"],\n    access=\"member\",\n    users=[\"foo@domain.com\"],\n    groups=[development_juju_jaas_group[\"uuid\"]],\n    service_accounts=[\n        \"Client-ID-1\",\n        \"Client-ID-2\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Juju = Pulumi.Juju;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var development = new Juju.JaasAccessGroup(\"development\", new()\n    {\n        GroupId = target_group.Uuid,\n        Access = \"member\",\n        Users = new[]\n        {\n            \"foo@domain.com\",\n        },\n        Groups = new[]\n        {\n            developmentJujuJaasGroup.Uuid,\n        },\n        ServiceAccounts = new[]\n        {\n            \"Client-ID-1\",\n            \"Client-ID-2\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/juju/juju\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := juju.NewJaasAccessGroup(ctx, \"development\", \u0026juju.JaasAccessGroupArgs{\n\t\t\tGroupId: pulumi.Any(target_group.Uuid),\n\t\t\tAccess:  pulumi.String(\"member\"),\n\t\t\tUsers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo@domain.com\"),\n\t\t\t},\n\t\t\tGroups: pulumi.StringArray{\n\t\t\t\tdevelopmentJujuJaasGroup.Uuid,\n\t\t\t},\n\t\t\tServiceAccounts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Client-ID-1\"),\n\t\t\t\tpulumi.String(\"Client-ID-2\"),\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.juju.JaasAccessGroup;\nimport com.pulumi.juju.JaasAccessGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var development = new JaasAccessGroup(\"development\", JaasAccessGroupArgs.builder()\n            .groupId(target_group.uuid())\n            .access(\"member\")\n            .users(\"foo@domain.com\")\n            .groups(developmentJujuJaasGroup.uuid())\n            .serviceAccounts(            \n                \"Client-ID-1\",\n                \"Client-ID-2\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  development:\n    type: juju:JaasAccessGroup\n    properties:\n      groupId: ${[\"target-group\"].uuid}\n      access: member\n      users:\n        - foo@domain.com\n      groups:\n        - ${developmentJujuJaasGroup.uuid}\n      serviceAccounts:\n        - Client-ID-1\n        - Client-ID-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nJAAS group access can be imported using the group UUID and access level\n\n```sh\n$ pulumi import juju:index/jaasAccessGroup:JaasAccessGroup development UUID:member\n```\n\n","properties":{"access":{"type":"string"},"groupId":{"type":"string","description":"The ID of the group for access management. If this is changed the resource will be deleted and a new resource will be created.\n"},"groups":{"type":"array","items":{"type":"string"},"description":"List of groups to grant access. A valid group ID is the group's UUID.\n"},"serviceAccounts":{"type":"array","items":{"type":"string"},"description":"List of service accounts to grant access. A valid service account is the service account's name.\n"},"users":{"type":"array","items":{"type":"string"},"description":"List of users to grant access. A valid user is the user's name or email.\n"}},"type":"object","required":["access","groupId"],"inputProperties":{"access":{"type":"string"},"groupId":{"type":"string","description":"The ID of the group for access management. If this is changed the resource will be deleted and a new resource will be created.\n"},"groups":{"type":"array","items":{"type":"string"},"description":"List of groups to grant access. A valid group ID is the group's UUID.\n"},"serviceAccounts":{"type":"array","items":{"type":"string"},"description":"List of service accounts to grant access. A valid service account is the service account's name.\n"},"users":{"type":"array","items":{"type":"string"},"description":"List of users to grant access. A valid user is the user's name or email.\n"}},"requiredInputs":["access","groupId"],"stateInputs":{"description":"Input properties used for looking up and filtering JaasAccessGroup resources.\n","properties":{"access":{"type":"string"},"groupId":{"type":"string","description":"The ID of the group for access management. If this is changed the resource will be deleted and a new resource will be created.\n"},"groups":{"type":"array","items":{"type":"string"},"description":"List of groups to grant access. A valid group ID is the group's UUID.\n"},"serviceAccounts":{"type":"array","items":{"type":"string"},"description":"List of service accounts to grant access. A valid service account is the service account's name.\n"},"users":{"type":"array","items":{"type":"string"},"description":"List of users to grant access. A valid user is the user's name or email.\n"}},"type":"object"}},"juju:index/jaasAccessModel:JaasAccessModel":{"description":"A resource that represent access to a model when using JAAS.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as juju from \"@pulumi/juju\";\n\nconst development = new juju.JaasAccessModel(\"development\", {\n    modelUuid: developmentJujuModel.uuid,\n    access: \"administrator\",\n    users: [\"foo@domain.com\"],\n    groups: [developmentJujuJaasGroup.uuid],\n    serviceAccounts: [\n        \"Client-ID-1\",\n        \"Client-ID-2\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_juju as juju\n\ndevelopment = juju.JaasAccessModel(\"development\",\n    model_uuid=development_juju_model[\"uuid\"],\n    access=\"administrator\",\n    users=[\"foo@domain.com\"],\n    groups=[development_juju_jaas_group[\"uuid\"]],\n    service_accounts=[\n        \"Client-ID-1\",\n        \"Client-ID-2\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Juju = Pulumi.Juju;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var development = new Juju.JaasAccessModel(\"development\", new()\n    {\n        ModelUuid = developmentJujuModel.Uuid,\n        Access = \"administrator\",\n        Users = new[]\n        {\n            \"foo@domain.com\",\n        },\n        Groups = new[]\n        {\n            developmentJujuJaasGroup.Uuid,\n        },\n        ServiceAccounts = new[]\n        {\n            \"Client-ID-1\",\n            \"Client-ID-2\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/juju/juju\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := juju.NewJaasAccessModel(ctx, \"development\", \u0026juju.JaasAccessModelArgs{\n\t\t\tModelUuid: pulumi.Any(developmentJujuModel.Uuid),\n\t\t\tAccess:    pulumi.String(\"administrator\"),\n\t\t\tUsers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo@domain.com\"),\n\t\t\t},\n\t\t\tGroups: pulumi.StringArray{\n\t\t\t\tdevelopmentJujuJaasGroup.Uuid,\n\t\t\t},\n\t\t\tServiceAccounts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Client-ID-1\"),\n\t\t\t\tpulumi.String(\"Client-ID-2\"),\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.juju.JaasAccessModel;\nimport com.pulumi.juju.JaasAccessModelArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var development = new JaasAccessModel(\"development\", JaasAccessModelArgs.builder()\n            .modelUuid(developmentJujuModel.uuid())\n            .access(\"administrator\")\n            .users(\"foo@domain.com\")\n            .groups(developmentJujuJaasGroup.uuid())\n            .serviceAccounts(            \n                \"Client-ID-1\",\n                \"Client-ID-2\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  development:\n    type: juju:JaasAccessModel\n    properties:\n      modelUuid: ${developmentJujuModel.uuid}\n      access: administrator\n      users:\n        - foo@domain.com\n      groups:\n        - ${developmentJujuJaasGroup.uuid}\n      serviceAccounts:\n        - Client-ID-1\n        - Client-ID-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nJAAS model access can be imported using the model name and access level\n\n```sh\n$ pulumi import juju:index/jaasAccessModel:JaasAccessModel development development:can_addmodel\n```\n\n","properties":{"access":{"type":"string"},"groups":{"type":"array","items":{"type":"string"},"description":"List of groups to grant access. A valid group ID is the group's UUID.\n"},"modelUuid":{"type":"string","description":"The uuid of the model for access management. If this is changed the resource will be deleted and a new resource will be created.\n"},"roles":{"type":"array","items":{"type":"string"},"description":"List of roles UUIDs to grant access.\n"},"serviceAccounts":{"type":"array","items":{"type":"string"},"description":"List of service accounts to grant access. A valid service account is the service account's name.\n"},"users":{"type":"array","items":{"type":"string"},"description":"List of users to grant access. A valid user is the user's name or email.\n"}},"type":"object","required":["access","modelUuid"],"inputProperties":{"access":{"type":"string"},"groups":{"type":"array","items":{"type":"string"},"description":"List of groups to grant access. A valid group ID is the group's UUID.\n"},"modelUuid":{"type":"string","description":"The uuid of the model for access management. If this is changed the resource will be deleted and a new resource will be created.\n"},"roles":{"type":"array","items":{"type":"string"},"description":"List of roles UUIDs to grant access.\n"},"serviceAccounts":{"type":"array","items":{"type":"string"},"description":"List of service accounts to grant access. A valid service account is the service account's name.\n"},"users":{"type":"array","items":{"type":"string"},"description":"List of users to grant access. A valid user is the user's name or email.\n"}},"requiredInputs":["access","modelUuid"],"stateInputs":{"description":"Input properties used for looking up and filtering JaasAccessModel resources.\n","properties":{"access":{"type":"string"},"groups":{"type":"array","items":{"type":"string"},"description":"List of groups to grant access. A valid group ID is the group's UUID.\n"},"modelUuid":{"type":"string","description":"The uuid of the model for access management. If this is changed the resource will be deleted and a new resource will be created.\n"},"roles":{"type":"array","items":{"type":"string"},"description":"List of roles UUIDs to grant access.\n"},"serviceAccounts":{"type":"array","items":{"type":"string"},"description":"List of service accounts to grant access. A valid service account is the service account's name.\n"},"users":{"type":"array","items":{"type":"string"},"description":"List of users to grant access. A valid user is the user's name or email.\n"}},"type":"object"}},"juju:index/jaasAccessOffer:JaasAccessOffer":{"description":"A resource that represent access to an offer when using JAAS.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as juju from \"@pulumi/juju\";\n\nconst development = new juju.JaasAccessOffer(\"development\", {\n    offerUrl: myoffer.url,\n    access: \"consumer\",\n    users: [\"foo@domain.com\"],\n    groups: [developmentJujuJaasGroup.uuid],\n    serviceAccounts: [\n        \"Client-ID-1\",\n        \"Client-ID-2\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_juju as juju\n\ndevelopment = juju.JaasAccessOffer(\"development\",\n    offer_url=myoffer[\"url\"],\n    access=\"consumer\",\n    users=[\"foo@domain.com\"],\n    groups=[development_juju_jaas_group[\"uuid\"]],\n    service_accounts=[\n        \"Client-ID-1\",\n        \"Client-ID-2\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Juju = Pulumi.Juju;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var development = new Juju.JaasAccessOffer(\"development\", new()\n    {\n        OfferUrl = myoffer.Url,\n        Access = \"consumer\",\n        Users = new[]\n        {\n            \"foo@domain.com\",\n        },\n        Groups = new[]\n        {\n            developmentJujuJaasGroup.Uuid,\n        },\n        ServiceAccounts = new[]\n        {\n            \"Client-ID-1\",\n            \"Client-ID-2\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/juju/juju\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := juju.NewJaasAccessOffer(ctx, \"development\", \u0026juju.JaasAccessOfferArgs{\n\t\t\tOfferUrl: pulumi.Any(myoffer.Url),\n\t\t\tAccess:   pulumi.String(\"consumer\"),\n\t\t\tUsers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo@domain.com\"),\n\t\t\t},\n\t\t\tGroups: pulumi.StringArray{\n\t\t\t\tdevelopmentJujuJaasGroup.Uuid,\n\t\t\t},\n\t\t\tServiceAccounts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Client-ID-1\"),\n\t\t\t\tpulumi.String(\"Client-ID-2\"),\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.juju.JaasAccessOffer;\nimport com.pulumi.juju.JaasAccessOfferArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var development = new JaasAccessOffer(\"development\", JaasAccessOfferArgs.builder()\n            .offerUrl(myoffer.url())\n            .access(\"consumer\")\n            .users(\"foo@domain.com\")\n            .groups(developmentJujuJaasGroup.uuid())\n            .serviceAccounts(            \n                \"Client-ID-1\",\n                \"Client-ID-2\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  development:\n    type: juju:JaasAccessOffer\n    properties:\n      offerUrl: ${myoffer.url}\n      access: consumer\n      users:\n        - foo@domain.com\n      groups:\n        - ${developmentJujuJaasGroup.uuid}\n      serviceAccounts:\n        - Client-ID-1\n        - Client-ID-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nJAAS offer access can be imported by using the URL as in the juju show-offers output and the access level.\n\nExample:\n\n$ juju show-offer mysql\n\nStore            URL             Access  Description                                    Endpoint  Interface  Role\n\nmycontroller     admin/db.mysql  admin   MariaDB Server is one of the most ...          mysql     mysql      provider\n\n```sh\n$ pulumi import juju:index/jaasAccessOffer:JaasAccessOffer db admin/db.mysql:consumer\n```\n\n","properties":{"access":{"type":"string"},"groups":{"type":"array","items":{"type":"string"},"description":"List of groups to grant access. A valid group ID is the group's UUID.\n"},"offerUrl":{"type":"string","description":"The url of the offer for access management. If this is changed the resource will be deleted and a new resource will be created.\n"},"roles":{"type":"array","items":{"type":"string"},"description":"List of roles UUIDs to grant access.\n"},"serviceAccounts":{"type":"array","items":{"type":"string"},"description":"List of service accounts to grant access. A valid service account is the service account's name.\n"},"users":{"type":"array","items":{"type":"string"},"description":"List of users to grant access. A valid user is the user's name or email.\n"}},"type":"object","required":["access","offerUrl"],"inputProperties":{"access":{"type":"string"},"groups":{"type":"array","items":{"type":"string"},"description":"List of groups to grant access. A valid group ID is the group's UUID.\n"},"offerUrl":{"type":"string","description":"The url of the offer for access management. If this is changed the resource will be deleted and a new resource will be created.\n"},"roles":{"type":"array","items":{"type":"string"},"description":"List of roles UUIDs to grant access.\n"},"serviceAccounts":{"type":"array","items":{"type":"string"},"description":"List of service accounts to grant access. A valid service account is the service account's name.\n"},"users":{"type":"array","items":{"type":"string"},"description":"List of users to grant access. A valid user is the user's name or email.\n"}},"requiredInputs":["access","offerUrl"],"stateInputs":{"description":"Input properties used for looking up and filtering JaasAccessOffer resources.\n","properties":{"access":{"type":"string"},"groups":{"type":"array","items":{"type":"string"},"description":"List of groups to grant access. A valid group ID is the group's UUID.\n"},"offerUrl":{"type":"string","description":"The url of the offer for access management. If this is changed the resource will be deleted and a new resource will be created.\n"},"roles":{"type":"array","items":{"type":"string"},"description":"List of roles UUIDs to grant access.\n"},"serviceAccounts":{"type":"array","items":{"type":"string"},"description":"List of service accounts to grant access. A valid service account is the service account's name.\n"},"users":{"type":"array","items":{"type":"string"},"description":"List of users to grant access. A valid user is the user's name or email.\n"}},"type":"object"}},"juju:index/jaasAccessRole:JaasAccessRole":{"description":"A resource that represents access to a role when using JAAS.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n  development:\n    type: juju:JaasAccessRole\n    properties:\n      roleId: ${[\"target-role\"].uuid}\n      access: assignee\n      users:\n        - foo@domain.com\n      roles:\n        - ${developmentJujuJaasRole.uuid}\n      serviceAccounts:\n        - Client-ID-1\n        - Client-ID-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nJAAS role access can be imported using the role UUID and access level\n\n```sh\n$ pulumi import juju:index/jaasAccessRole:JaasAccessRole development UUID:assignee\n```\n\n","properties":{"access":{"type":"string"},"groups":{"type":"array","items":{"type":"string"},"description":"List of groups to grant access. A valid group ID is the group's UUID.\n"},"roleId":{"type":"string","description":"The UUID of the role for access management. If this is changed the resource will be deleted and a new resource will be created.\n"},"serviceAccounts":{"type":"array","items":{"type":"string"},"description":"List of service accounts to grant access. A valid service account is the service account's name.\n"},"users":{"type":"array","items":{"type":"string"},"description":"List of users to grant access. A valid user is the user's name or email.\n"}},"type":"object","required":["access","roleId"],"inputProperties":{"access":{"type":"string"},"groups":{"type":"array","items":{"type":"string"},"description":"List of groups to grant access. A valid group ID is the group's UUID.\n"},"roleId":{"type":"string","description":"The UUID of the role for access management. If this is changed the resource will be deleted and a new resource will be created.\n"},"serviceAccounts":{"type":"array","items":{"type":"string"},"description":"List of service accounts to grant access. A valid service account is the service account's name.\n"},"users":{"type":"array","items":{"type":"string"},"description":"List of users to grant access. A valid user is the user's name or email.\n"}},"requiredInputs":["access","roleId"],"stateInputs":{"description":"Input properties used for looking up and filtering JaasAccessRole resources.\n","properties":{"access":{"type":"string"},"groups":{"type":"array","items":{"type":"string"},"description":"List of groups to grant access. A valid group ID is the group's UUID.\n"},"roleId":{"type":"string","description":"The UUID of the role for access management. If this is changed the resource will be deleted and a new resource will be created.\n"},"serviceAccounts":{"type":"array","items":{"type":"string"},"description":"List of service accounts to grant access. A valid service account is the service account's name.\n"},"users":{"type":"array","items":{"type":"string"},"description":"List of users to grant access. A valid user is the user's name or email.\n"}},"type":"object"}},"juju:index/jaasController:JaasController":{"description":"A resource that represents a controller registered in JAAS (JIMM).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as juju from \"@pulumi/juju\";\n\nconst _this = new juju.Controller(\"this\", {name: \"my-controller\"});\nconst jaas = new juju.JaasController(\"jaas\", {\n    name: _this.name,\n    uuid: _this.controllerUuid,\n    apiAddresses: _this.apiAddresses,\n    caCertificate: _this.caCert,\n    username: _this.username,\n    password: _this.password,\n    tlsHostname: \"juju-apiserver\",\n});\n```\n```python\nimport pulumi\nimport pulumi_juju as juju\n\nthis = juju.Controller(\"this\", name=\"my-controller\")\njaas = juju.JaasController(\"jaas\",\n    name=this.name,\n    uuid=this.controller_uuid,\n    api_addresses=this.api_addresses,\n    ca_certificate=this.ca_cert,\n    username=this.username,\n    password=this.password,\n    tls_hostname=\"juju-apiserver\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Juju = Pulumi.Juju;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var @this = new Juju.Controller(\"this\", new()\n    {\n        Name = \"my-controller\",\n    });\n\n    var jaas = new Juju.JaasController(\"jaas\", new()\n    {\n        Name = @this.Name,\n        Uuid = @this.ControllerUuid,\n        ApiAddresses = @this.ApiAddresses,\n        CaCertificate = @this.CaCert,\n        Username = @this.Username,\n        Password = @this.Password,\n        TlsHostname = \"juju-apiserver\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/juju/juju\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tthis, err := juju.NewController(ctx, \"this\", \u0026juju.ControllerArgs{\n\t\t\tName: pulumi.String(\"my-controller\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = juju.NewJaasController(ctx, \"jaas\", \u0026juju.JaasControllerArgs{\n\t\t\tName:          this.Name,\n\t\t\tUuid:          this.ControllerUuid,\n\t\t\tApiAddresses:  this.ApiAddresses,\n\t\t\tCaCertificate: this.CaCert,\n\t\t\tUsername:      this.Username,\n\t\t\tPassword:      this.Password,\n\t\t\tTlsHostname:   pulumi.String(\"juju-apiserver\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.juju.Controller;\nimport com.pulumi.juju.ControllerArgs;\nimport com.pulumi.juju.JaasController;\nimport com.pulumi.juju.JaasControllerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var this_ = new Controller(\"this\", ControllerArgs.builder()\n            .name(\"my-controller\")\n            .build());\n\n        var jaas = new JaasController(\"jaas\", JaasControllerArgs.builder()\n            .name(this_.name())\n            .uuid(this_.controllerUuid())\n            .apiAddresses(this_.apiAddresses())\n            .caCertificate(this_.caCert())\n            .username(this_.username())\n            .password(this_.password())\n            .tlsHostname(\"juju-apiserver\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  this:\n    type: juju:Controller\n    properties:\n      name: my-controller\n  jaas:\n    type: juju:JaasController\n    properties:\n      name: ${this.name}\n      uuid: ${this.controllerUuid}\n      apiAddresses: ${this.apiAddresses}\n      caCertificate: ${this.caCert}\n      username: ${this.username}\n      password: ${this.password}\n      tlsHostname: juju-apiserver\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"apiAddresses":{"type":"array","items":{"type":"string"},"description":"API addresses of the controller. If the controller is HA, only 1 address needs to be provided but multiple addresses are also accepted.\n"},"caCertificate":{"type":"string","description":"CA certificate for the controller.\n"},"force":{"type":"boolean","description":"Force removal when deleting (only required when the controller is still available).\n"},"name":{"type":"string","description":"Name of the controller to register.\n"},"password":{"type":"string","description":"Password that JIMM should use to connect to the controller.\n","secret":true},"publicAddress":{"type":"string","description":"Public address of the controller (typically host:port) to be used instead of providing api_addresses.\n"},"status":{"type":"string","description":"Status of the controller (available/deprecated/unavailable).\n"},"tlsHostname":{"type":"string","description":"Hostname used for TLS verification. When connecting directly to a controller, you may need to specify a TLS hostname for SNI purposes that matches the controller's self-signed certificate.\n"},"username":{"type":"string","description":"Username that JIMM should use to connect to the controller.\n","secret":true},"uuid":{"type":"string","description":"UUID of the controller.\n"}},"type":"object","required":["name","password","publicAddress","status","username","uuid"],"inputProperties":{"apiAddresses":{"type":"array","items":{"type":"string"},"description":"API addresses of the controller. If the controller is HA, only 1 address needs to be provided but multiple addresses are also accepted.\n"},"caCertificate":{"type":"string","description":"CA certificate for the controller.\n"},"force":{"type":"boolean","description":"Force removal when deleting (only required when the controller is still available).\n"},"name":{"type":"string","description":"Name of the controller to register.\n"},"password":{"type":"string","description":"Password that JIMM should use to connect to the controller.\n","secret":true},"publicAddress":{"type":"string","description":"Public address of the controller (typically host:port) to be used instead of providing api_addresses.\n"},"tlsHostname":{"type":"string","description":"Hostname used for TLS verification. When connecting directly to a controller, you may need to specify a TLS hostname for SNI purposes that matches the controller's self-signed certificate.\n"},"username":{"type":"string","description":"Username that JIMM should use to connect to the controller.\n","secret":true},"uuid":{"type":"string","description":"UUID of the controller.\n"}},"requiredInputs":["password","username","uuid"],"stateInputs":{"description":"Input properties used for looking up and filtering JaasController resources.\n","properties":{"apiAddresses":{"type":"array","items":{"type":"string"},"description":"API addresses of the controller. If the controller is HA, only 1 address needs to be provided but multiple addresses are also accepted.\n"},"caCertificate":{"type":"string","description":"CA certificate for the controller.\n"},"force":{"type":"boolean","description":"Force removal when deleting (only required when the controller is still available).\n"},"name":{"type":"string","description":"Name of the controller to register.\n"},"password":{"type":"string","description":"Password that JIMM should use to connect to the controller.\n","secret":true},"publicAddress":{"type":"string","description":"Public address of the controller (typically host:port) to be used instead of providing api_addresses.\n"},"status":{"type":"string","description":"Status of the controller (available/deprecated/unavailable).\n"},"tlsHostname":{"type":"string","description":"Hostname used for TLS verification. When connecting directly to a controller, you may need to specify a TLS hostname for SNI purposes that matches the controller's self-signed certificate.\n"},"username":{"type":"string","description":"Username that JIMM should use to connect to the controller.\n","secret":true},"uuid":{"type":"string","description":"UUID of the controller.\n"}},"type":"object"}},"juju:index/jaasGroup:JaasGroup":{"description":"A resource that represents a group in JAAS\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as juju from \"@pulumi/juju\";\n\nconst development = new juju.JaasGroup(\"development\", {name: \"devops-team\"});\n```\n```python\nimport pulumi\nimport pulumi_juju as juju\n\ndevelopment = juju.JaasGroup(\"development\", name=\"devops-team\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Juju = Pulumi.Juju;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var development = new Juju.JaasGroup(\"development\", new()\n    {\n        Name = \"devops-team\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/juju/juju\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := juju.NewJaasGroup(ctx, \"development\", \u0026juju.JaasGroupArgs{\n\t\t\tName: pulumi.String(\"devops-team\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.juju.JaasGroup;\nimport com.pulumi.juju.JaasGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var development = new JaasGroup(\"development\", JaasGroupArgs.builder()\n            .name(\"devops-team\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  development:\n    type: juju:JaasGroup\n    properties:\n      name: devops-team\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"name":{"type":"string","description":"Name of the group\n"},"uuid":{"type":"string","description":"UUID of the group\n"}},"type":"object","required":["name","uuid"],"inputProperties":{"name":{"type":"string","description":"Name of the group\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering JaasGroup resources.\n","properties":{"name":{"type":"string","description":"Name of the group\n"},"uuid":{"type":"string","description":"UUID of the group\n"}},"type":"object"}},"juju:index/jaasRole:JaasRole":{"description":"A resource that represents a role in JAAS\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as juju from \"@pulumi/juju\";\n\nconst development = new juju.JaasRole(\"development\", {name: \"devops-team\"});\n```\n```python\nimport pulumi\nimport pulumi_juju as juju\n\ndevelopment = juju.JaasRole(\"development\", name=\"devops-team\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Juju = Pulumi.Juju;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var development = new Juju.JaasRole(\"development\", new()\n    {\n        Name = \"devops-team\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/juju/juju\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := juju.NewJaasRole(ctx, \"development\", \u0026juju.JaasRoleArgs{\n\t\t\tName: pulumi.String(\"devops-team\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.juju.JaasRole;\nimport com.pulumi.juju.JaasRoleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var development = new JaasRole(\"development\", JaasRoleArgs.builder()\n            .name(\"devops-team\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  development:\n    type: juju:JaasRole\n    properties:\n      name: devops-team\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"name":{"type":"string","description":"Name of the role\n"},"uuid":{"type":"string","description":"UUID of the role\n"}},"type":"object","required":["name","uuid"],"inputProperties":{"name":{"type":"string","description":"Name of the role\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering JaasRole resources.\n","properties":{"name":{"type":"string","description":"Name of the role\n"},"uuid":{"type":"string","description":"UUID of the role\n"}},"type":"object"}},"juju:index/kubernetesCloud:KubernetesCloud":{"description":"A resource that represent a Juju Cloud for existing controller.\n\n","properties":{"credential":{"type":"string","description":"The name of the credential created for this cloud."},"kubernetesConfig":{"type":"string","description":"The kubernetes config file path for the cloud. Cloud credentials will be added to the Juju controller for you.\n","secret":true},"name":{"type":"string"},"parentCloudName":{"type":"string"},"parentCloudRegion":{"type":"string"},"skipServiceAccountCreation":{"type":"boolean"},"storageClassName":{"type":"string","description":"Specify the Kubernetes storage class name for workload and operator storage.\n"}},"type":"object","required":["credential","name"],"inputProperties":{"kubernetesConfig":{"type":"string","description":"The kubernetes config file path for the cloud. Cloud credentials will be added to the Juju controller for you.\n","secret":true},"name":{"type":"string"},"parentCloudName":{"type":"string"},"parentCloudRegion":{"type":"string"},"skipServiceAccountCreation":{"type":"boolean"},"storageClassName":{"type":"string","description":"Specify the Kubernetes storage class name for workload and operator storage.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering KubernetesCloud resources.\n","properties":{"credential":{"type":"string","description":"The name of the credential created for this cloud."},"kubernetesConfig":{"type":"string","description":"The kubernetes config file path for the cloud. Cloud credentials will be added to the Juju controller for you.\n","secret":true},"name":{"type":"string"},"parentCloudName":{"type":"string"},"parentCloudRegion":{"type":"string"},"skipServiceAccountCreation":{"type":"boolean"},"storageClassName":{"type":"string","description":"Specify the Kubernetes storage class name for workload and operator storage.\n"}},"type":"object"}},"juju:index/machine:Machine":{"description":"A resource that represents a Juju machine deployment. Refer to the juju add-machine CLI command for more information and limitations.\n\n## Import\n\nMachines can be imported using the format: `model_uuid:machine_id:machine_name`.\n\nThe value of machine_id is the Juju Machine ID. machine_name is an optional \n\nname you can define in Terraform for the machine. It is not used in Juju.\n\nHere is an example to import a machine from a model with machine ID 1 and a \n\nname \"machine_one\":\n\n```sh\n$ pulumi import juju:index/machine:Machine machine_one 4ffb2226-6ced-458b-8b38-5143ca190f75:1:machine_one\n```\n\n","properties":{"annotations":{"type":"object","additionalProperties":{"type":"string"},"description":"Annotations are key/value pairs that can be used to store additional information about the machine. May not contain dots (.) in keys.\n"},"base":{"type":"string"},"constraints":{"type":"string"},"disks":{"type":"string"},"hostname":{"type":"string","description":"The machine's hostname. This is set only if 'wait*for*hostname' is true.\n"},"machineId":{"type":"string","description":"The id of the machine Juju creates.\n"},"modelUuid":{"type":"string"},"name":{"type":"string"},"placement":{"type":"string"},"privateKeyFile":{"type":"string","description":"The file path to read the private key from.\n"},"publicKeyFile":{"type":"string","description":"The file path to read the public key from.\n"},"sshAddress":{"type":"string"},"timeouts":{"$ref":"#/types/juju:index%2FMachineTimeouts:MachineTimeouts"},"waitForHostname":{"type":"boolean","description":"If true, waits for the machine's hostname to be set during creation. A side effect is that this also waits for the machine to reach 'active' state in Juju.\n"}},"type":"object","required":["base","hostname","machineId","modelUuid","name"],"inputProperties":{"annotations":{"type":"object","additionalProperties":{"type":"string"},"description":"Annotations are key/value pairs that can be used to store additional information about the machine. May not contain dots (.) in keys.\n"},"base":{"type":"string"},"constraints":{"type":"string"},"disks":{"type":"string"},"modelUuid":{"type":"string"},"name":{"type":"string"},"placement":{"type":"string"},"privateKeyFile":{"type":"string","description":"The file path to read the private key from.\n"},"publicKeyFile":{"type":"string","description":"The file path to read the public key from.\n"},"sshAddress":{"type":"string"},"timeouts":{"$ref":"#/types/juju:index%2FMachineTimeouts:MachineTimeouts"},"waitForHostname":{"type":"boolean","description":"If true, waits for the machine's hostname to be set during creation. A side effect is that this also waits for the machine to reach 'active' state in Juju.\n"}},"requiredInputs":["modelUuid"],"stateInputs":{"description":"Input properties used for looking up and filtering Machine resources.\n","properties":{"annotations":{"type":"object","additionalProperties":{"type":"string"},"description":"Annotations are key/value pairs that can be used to store additional information about the machine. May not contain dots (.) in keys.\n"},"base":{"type":"string"},"constraints":{"type":"string"},"disks":{"type":"string"},"hostname":{"type":"string","description":"The machine's hostname. This is set only if 'wait*for*hostname' is true.\n"},"machineId":{"type":"string","description":"The id of the machine Juju creates.\n"},"modelUuid":{"type":"string"},"name":{"type":"string"},"placement":{"type":"string"},"privateKeyFile":{"type":"string","description":"The file path to read the private key from.\n"},"publicKeyFile":{"type":"string","description":"The file path to read the public key from.\n"},"sshAddress":{"type":"string"},"timeouts":{"$ref":"#/types/juju:index%2FMachineTimeouts:MachineTimeouts"},"waitForHostname":{"type":"boolean","description":"If true, waits for the machine's hostname to be set during creation. A side effect is that this also waits for the machine to reach 'active' state in Juju.\n"}},"type":"object"}},"juju:index/model:Model":{"description":"A resource that represent a Juju Model.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as juju from \"@pulumi/juju\";\n\nconst _this = new juju.Model(\"this\", {\n    name: \"development\",\n    clouds: [{\n        name: \"aws\",\n        region: \"eu-west-1\",\n    }],\n    config: {\n        \"logging-config\": \"\u003croot\u003e=INFO\",\n        development: \"true\",\n        \"no-proxy\": \"jujucharms.com\",\n        \"update-status-hook-interval\": \"5m\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_juju as juju\n\nthis = juju.Model(\"this\",\n    name=\"development\",\n    clouds=[{\n        \"name\": \"aws\",\n        \"region\": \"eu-west-1\",\n    }],\n    config={\n        \"logging-config\": \"\u003croot\u003e=INFO\",\n        \"development\": \"true\",\n        \"no-proxy\": \"jujucharms.com\",\n        \"update-status-hook-interval\": \"5m\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Juju = Pulumi.Juju;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var @this = new Juju.Model(\"this\", new()\n    {\n        Name = \"development\",\n        Clouds = new[]\n        {\n            new Juju.Inputs.ModelCloudArgs\n            {\n                Name = \"aws\",\n                Region = \"eu-west-1\",\n            },\n        },\n        Config = \n        {\n            { \"logging-config\", \"\u003croot\u003e=INFO\" },\n            { \"development\", \"true\" },\n            { \"no-proxy\", \"jujucharms.com\" },\n            { \"update-status-hook-interval\", \"5m\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/juju/juju\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := juju.NewModel(ctx, \"this\", \u0026juju.ModelArgs{\n\t\t\tName: pulumi.String(\"development\"),\n\t\t\tClouds: juju.ModelCloudArray{\n\t\t\t\t\u0026juju.ModelCloudArgs{\n\t\t\t\t\tName:   pulumi.String(\"aws\"),\n\t\t\t\t\tRegion: pulumi.String(\"eu-west-1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tConfig: pulumi.StringMap{\n\t\t\t\t\"logging-config\":              pulumi.String(\"\u003croot\u003e=INFO\"),\n\t\t\t\t\"development\":                 pulumi.String(\"true\"),\n\t\t\t\t\"no-proxy\":                    pulumi.String(\"jujucharms.com\"),\n\t\t\t\t\"update-status-hook-interval\": pulumi.String(\"5m\"),\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.juju.Model;\nimport com.pulumi.juju.ModelArgs;\nimport com.pulumi.juju.inputs.ModelCloudArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var this_ = new Model(\"this\", ModelArgs.builder()\n            .name(\"development\")\n            .clouds(ModelCloudArgs.builder()\n                .name(\"aws\")\n                .region(\"eu-west-1\")\n                .build())\n            .config(Map.ofEntries(\n                Map.entry(\"logging-config\", \"\u003croot\u003e=INFO\"),\n                Map.entry(\"development\", \"true\"),\n                Map.entry(\"no-proxy\", \"jujucharms.com\"),\n                Map.entry(\"update-status-hook-interval\", \"5m\")\n            ))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  this:\n    type: juju:Model\n    properties:\n      name: development\n      clouds:\n        - name: aws\n          region: eu-west-1\n      config:\n        logging-config: \u003croot\u003e=INFO\n        development: true\n        no-proxy: jujucharms.com\n        update-status-hook-interval: 5m\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Limitations of Import\n\nAny entries of the `config` attribute specified in the Terraform configuration are ignored. You can add entries to the `config` map and manage them using Terraform after import.\n\nOnce imported you must add the desired model configuration and run a pulumi up. This will report no changes but Terraform will be tracking the specified model configuration.\n\nThe limitation is intentional. It exists as, without it, Terraform would import all model configuration including defaults. It may not be desirable to manage defaults using Terraform.\n\n","properties":{"annotations":{"type":"object","additionalProperties":{"type":"string"},"description":"Annotations for the model\n"},"clouds":{"type":"array","items":{"$ref":"#/types/juju:index%2FModelCloud:ModelCloud"}},"config":{"type":"object","additionalProperties":{"type":"string"},"description":"Override default model configuration\n"},"constraints":{"type":"string","description":"Constraints imposed to this model\n"},"credential":{"type":"string","description":"Credential used to add the model\n"},"name":{"type":"string"},"targetController":{"type":"string","description":"Only useful with JAAS - the backing controller where the model will be created. If not set, a random controller the user has access to supporting the desired cloud will be used.\n"},"type":{"type":"string","description":"Type of the model. Set by the Juju's API server\n"},"uuid":{"type":"string","description":"The uuid of the model\n"}},"type":"object","required":["credential","name","type","uuid"],"inputProperties":{"annotations":{"type":"object","additionalProperties":{"type":"string"},"description":"Annotations for the model\n"},"clouds":{"type":"array","items":{"$ref":"#/types/juju:index%2FModelCloud:ModelCloud"}},"config":{"type":"object","additionalProperties":{"type":"string"},"description":"Override default model configuration\n"},"constraints":{"type":"string","description":"Constraints imposed to this model\n"},"credential":{"type":"string","description":"Credential used to add the model\n"},"name":{"type":"string"},"targetController":{"type":"string","description":"Only useful with JAAS - the backing controller where the model will be created. If not set, a random controller the user has access to supporting the desired cloud will be used.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering Model resources.\n","properties":{"annotations":{"type":"object","additionalProperties":{"type":"string"},"description":"Annotations for the model\n"},"clouds":{"type":"array","items":{"$ref":"#/types/juju:index%2FModelCloud:ModelCloud"}},"config":{"type":"object","additionalProperties":{"type":"string"},"description":"Override default model configuration\n"},"constraints":{"type":"string","description":"Constraints imposed to this model\n"},"credential":{"type":"string","description":"Credential used to add the model\n"},"name":{"type":"string"},"targetController":{"type":"string","description":"Only useful with JAAS - the backing controller where the model will be created. If not set, a random controller the user has access to supporting the desired cloud will be used.\n"},"type":{"type":"string","description":"Type of the model. Set by the Juju's API server\n"},"uuid":{"type":"string","description":"The uuid of the model\n"}},"type":"object"}},"juju:index/offer:Offer":{"description":"A resource that represent a Juju Offer.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as juju from \"@pulumi/juju\";\n\nconst myoffer = new juju.Offer(\"myoffer\", {\n    modelUuid: development.uuid,\n    applicationName: percona_cluster.name,\n    endpoints: [\"server\"],\n});\n// an offer can then be used in an cross model integration as below:\nconst myintegration = new juju.Integration(\"myintegration\", {\n    modelUuid: development_destination.name,\n    applications: [\n        {\n            name: wordpress.name,\n            endpoint: \"db\",\n        },\n        {\n            offerUrl: myoffer.url,\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_juju as juju\n\nmyoffer = juju.Offer(\"myoffer\",\n    model_uuid=development[\"uuid\"],\n    application_name=percona_cluster[\"name\"],\n    endpoints=[\"server\"])\n# an offer can then be used in an cross model integration as below:\nmyintegration = juju.Integration(\"myintegration\",\n    model_uuid=development_destination[\"name\"],\n    applications=[\n        {\n            \"name\": wordpress[\"name\"],\n            \"endpoint\": \"db\",\n        },\n        {\n            \"offer_url\": myoffer.url,\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Juju = Pulumi.Juju;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myoffer = new Juju.Offer(\"myoffer\", new()\n    {\n        ModelUuid = development.Uuid,\n        ApplicationName = percona_cluster.Name,\n        Endpoints = new[]\n        {\n            \"server\",\n        },\n    });\n\n    // an offer can then be used in an cross model integration as below:\n    var myintegration = new Juju.Integration(\"myintegration\", new()\n    {\n        ModelUuid = development_destination.Name,\n        Applications = new[]\n        {\n            new Juju.Inputs.IntegrationApplicationArgs\n            {\n                Name = wordpress.Name,\n                Endpoint = \"db\",\n            },\n            new Juju.Inputs.IntegrationApplicationArgs\n            {\n                OfferUrl = myoffer.Url,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/juju/juju\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyoffer, err := juju.NewOffer(ctx, \"myoffer\", \u0026juju.OfferArgs{\n\t\t\tModelUuid:       pulumi.Any(development.Uuid),\n\t\t\tApplicationName: pulumi.Any(percona_cluster.Name),\n\t\t\tEndpoints: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"server\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// an offer can then be used in an cross model integration as below:\n\t\t_, err = juju.NewIntegration(ctx, \"myintegration\", \u0026juju.IntegrationArgs{\n\t\t\tModelUuid: pulumi.Any(development_destination.Name),\n\t\t\tApplications: juju.IntegrationApplicationArray{\n\t\t\t\t\u0026juju.IntegrationApplicationArgs{\n\t\t\t\t\tName:     pulumi.Any(wordpress.Name),\n\t\t\t\t\tEndpoint: pulumi.String(\"db\"),\n\t\t\t\t},\n\t\t\t\t\u0026juju.IntegrationApplicationArgs{\n\t\t\t\t\tOfferUrl: myoffer.Url,\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.juju.Offer;\nimport com.pulumi.juju.OfferArgs;\nimport com.pulumi.juju.Integration;\nimport com.pulumi.juju.IntegrationArgs;\nimport com.pulumi.juju.inputs.IntegrationApplicationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myoffer = new Offer(\"myoffer\", OfferArgs.builder()\n            .modelUuid(development.uuid())\n            .applicationName(percona_cluster.name())\n            .endpoints(\"server\")\n            .build());\n\n        // an offer can then be used in an cross model integration as below:\n        var myintegration = new Integration(\"myintegration\", IntegrationArgs.builder()\n            .modelUuid(development_destination.name())\n            .applications(            \n                IntegrationApplicationArgs.builder()\n                    .name(wordpress.name())\n                    .endpoint(\"db\")\n                    .build(),\n                IntegrationApplicationArgs.builder()\n                    .offerUrl(myoffer.url())\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myoffer:\n    type: juju:Offer\n    properties:\n      modelUuid: ${development.uuid}\n      applicationName: ${[\"percona-cluster\"].name}\n      endpoints:\n        - server\n  # an offer can then be used in an cross model integration as below:\n  myintegration:\n    type: juju:Integration\n    properties:\n      modelUuid: ${[\"development-destination\"].name}\n      applications:\n        - name: ${wordpress.name}\n          endpoint: db\n        - offerUrl: ${myoffer.url}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nOffers can be imported by using the URL as in the juju show-offers output.\n\nExample:\n\n$juju show-offer mysql\n\nStore            URL             Access  Description                                    Endpoint  Interface  Role\n\nmycontroller     admin/db.mysql  admin   MariaDB Server is one of the most ...          mysql     mysql      provider\n\n```sh\n$ pulumi import juju:index/offer:Offer db admin/db.mysql\n```\n\n","properties":{"applicationName":{"type":"string"},"endpoints":{"type":"array","items":{"type":"string"}},"modelUuid":{"type":"string"},"name":{"type":"string"},"url":{"type":"string","description":"The offer URL.\n"}},"type":"object","required":["applicationName","endpoints","modelUuid","name","url"],"inputProperties":{"applicationName":{"type":"string"},"endpoints":{"type":"array","items":{"type":"string"}},"modelUuid":{"type":"string"},"name":{"type":"string"}},"requiredInputs":["applicationName","endpoints","modelUuid"],"stateInputs":{"description":"Input properties used for looking up and filtering Offer resources.\n","properties":{"applicationName":{"type":"string"},"endpoints":{"type":"array","items":{"type":"string"}},"modelUuid":{"type":"string"},"name":{"type":"string"},"url":{"type":"string","description":"The offer URL.\n"}},"type":"object"}},"juju:index/secret:Secret":{"description":"A resource that represents a Juju secret.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as juju from \"@pulumi/juju\";\n\nconst my_secret = new juju.Secret(\"my-secret\", {\n    modelUuid: development.uuid,\n    name: \"my_secret_name\",\n    value: {\n        key1: \"value1\",\n        key2: \"value2\",\n    },\n    info: \"This is the secret\",\n});\nconst my_application = new juju.Application(\"my-application\", {config: {\n    secret: my_secret.secretId,\n}});\n```\n```python\nimport pulumi\nimport pulumi_juju as juju\n\nmy_secret = juju.Secret(\"my-secret\",\n    model_uuid=development[\"uuid\"],\n    name=\"my_secret_name\",\n    value={\n        \"key1\": \"value1\",\n        \"key2\": \"value2\",\n    },\n    info=\"This is the secret\")\nmy_application = juju.Application(\"my-application\", config={\n    \"secret\": my_secret.secret_id,\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Juju = Pulumi.Juju;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var my_secret = new Juju.Secret(\"my-secret\", new()\n    {\n        ModelUuid = development.Uuid,\n        Name = \"my_secret_name\",\n        Value = \n        {\n            { \"key1\", \"value1\" },\n            { \"key2\", \"value2\" },\n        },\n        Info = \"This is the secret\",\n    });\n\n    var my_application = new Juju.Application(\"my-application\", new()\n    {\n        Config = \n        {\n            { \"secret\", my_secret.SecretId },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/juju/juju\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmy_secret, err := juju.NewSecret(ctx, \"my-secret\", \u0026juju.SecretArgs{\n\t\t\tModelUuid: pulumi.Any(development.Uuid),\n\t\t\tName:      pulumi.String(\"my_secret_name\"),\n\t\t\tValue: pulumi.StringMap{\n\t\t\t\t\"key1\": pulumi.String(\"value1\"),\n\t\t\t\t\"key2\": pulumi.String(\"value2\"),\n\t\t\t},\n\t\t\tInfo: pulumi.String(\"This is the secret\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = juju.NewApplication(ctx, \"my-application\", \u0026juju.ApplicationArgs{\n\t\t\tConfig: pulumi.StringMap{\n\t\t\t\t\"secret\": my_secret.SecretId,\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.juju.Secret;\nimport com.pulumi.juju.SecretArgs;\nimport com.pulumi.juju.Application;\nimport com.pulumi.juju.ApplicationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var my_secret = new Secret(\"my-secret\", SecretArgs.builder()\n            .modelUuid(development.uuid())\n            .name(\"my_secret_name\")\n            .value(Map.ofEntries(\n                Map.entry(\"key1\", \"value1\"),\n                Map.entry(\"key2\", \"value2\")\n            ))\n            .info(\"This is the secret\")\n            .build());\n\n        var my_application = new Application(\"my-application\", ApplicationArgs.builder()\n            .config(Map.of(\"secret\", my_secret.secretId()))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  my-secret:\n    type: juju:Secret\n    properties:\n      modelUuid: ${development.uuid}\n      name: my_secret_name\n      value:\n        key1: value1\n        key2: value2\n      info: This is the secret\n  my-application:\n    type: juju:Application\n    properties:\n      config:\n        secret: ${[\"my-secret\"].secretId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nSecrets can be imported by using the model and secret names.\n\n```sh\n$ pulumi import juju:index/secret:Secret secret-name testmodel:secret-name\n```\n\n","properties":{"info":{"type":"string","description":"The description of the secret.\n"},"modelUuid":{"type":"string"},"name":{"type":"string","description":"The name of the secret.\n"},"secretId":{"type":"string","description":"The ID of the secret. E.g. coj8mulh8b41e8nv6p90\n"},"secretUri":{"type":"string","description":"The URI of the secret. E.g. secret:coj8mulh8b41e8nv6p90\n"},"value":{"type":"object","additionalProperties":{"type":"string"},"description":"The value map of the secret. There can be more than one key-value pair.\n","secret":true}},"type":"object","required":["modelUuid","name","secretId","secretUri","value"],"inputProperties":{"info":{"type":"string","description":"The description of the secret.\n"},"modelUuid":{"type":"string"},"name":{"type":"string","description":"The name of the secret.\n"},"value":{"type":"object","additionalProperties":{"type":"string"},"description":"The value map of the secret. There can be more than one key-value pair.\n","secret":true}},"requiredInputs":["modelUuid","value"],"stateInputs":{"description":"Input properties used for looking up and filtering Secret resources.\n","properties":{"info":{"type":"string","description":"The description of the secret.\n"},"modelUuid":{"type":"string"},"name":{"type":"string","description":"The name of the secret.\n"},"secretId":{"type":"string","description":"The ID of the secret. E.g. coj8mulh8b41e8nv6p90\n"},"secretUri":{"type":"string","description":"The URI of the secret. E.g. secret:coj8mulh8b41e8nv6p90\n"},"value":{"type":"object","additionalProperties":{"type":"string"},"description":"The value map of the secret. There can be more than one key-value pair.\n","secret":true}},"type":"object"}},"juju:index/sshKey:SshKey":{"description":"Resource representing an SSH key.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as juju from \"@pulumi/juju\";\n\nconst mykey = new juju.SshKey(\"mykey\", {\n    modelUuid: development.uuid,\n    payload: \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1I8QDP79MaHEIAlfh933zqcE8LyUt9doytF3YySBUDWippk8MAaKAJJtNb+Qsi+Kx/RsSY02VxMy9xRTp9d/Vr+U5BctKqhqf3ZkJdTIcy+z4hYpFS8A4bECJFHOnKIekIHD9glHkqzS5Vm6E4g/KMNkKylHKlDXOafhNZAiJ1ynxaZIuedrceFJNC47HnocQEtusPKpR09HGXXYhKMEubgF5tsTO4ks6pplMPvbdjxYcVOg4Wv0N/LJ4ffAucG9edMcKOTnKqZycqqZPE6KsTpSZMJi2Kl3mBrJE7JbR1YMlNwG6NlUIdIqVoTLZgLsTEkHqWi6OExykbVTqFuoWJJY3BmRAcP9H3FdLYbqcajfWshwvPM2AmYb8V3zBvzEKL1rpvG26fd3kGhk3Vu07qAUhHLMi3P0McEky4cLiEWgI7UyHFLI2yMRZgz23UUtxhRSkvCJagRlVG/s4yoylzBQJir8G3qmb36WjBXxpqAGHfLxw05EQI1JGV3ReYOs= user@somewhere\",\n});\n```\n```python\nimport pulumi\nimport pulumi_juju as juju\n\nmykey = juju.SshKey(\"mykey\",\n    model_uuid=development[\"uuid\"],\n    payload=\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1I8QDP79MaHEIAlfh933zqcE8LyUt9doytF3YySBUDWippk8MAaKAJJtNb+Qsi+Kx/RsSY02VxMy9xRTp9d/Vr+U5BctKqhqf3ZkJdTIcy+z4hYpFS8A4bECJFHOnKIekIHD9glHkqzS5Vm6E4g/KMNkKylHKlDXOafhNZAiJ1ynxaZIuedrceFJNC47HnocQEtusPKpR09HGXXYhKMEubgF5tsTO4ks6pplMPvbdjxYcVOg4Wv0N/LJ4ffAucG9edMcKOTnKqZycqqZPE6KsTpSZMJi2Kl3mBrJE7JbR1YMlNwG6NlUIdIqVoTLZgLsTEkHqWi6OExykbVTqFuoWJJY3BmRAcP9H3FdLYbqcajfWshwvPM2AmYb8V3zBvzEKL1rpvG26fd3kGhk3Vu07qAUhHLMi3P0McEky4cLiEWgI7UyHFLI2yMRZgz23UUtxhRSkvCJagRlVG/s4yoylzBQJir8G3qmb36WjBXxpqAGHfLxw05EQI1JGV3ReYOs= user@somewhere\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Juju = Pulumi.Juju;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var mykey = new Juju.SshKey(\"mykey\", new()\n    {\n        ModelUuid = development.Uuid,\n        Payload = \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1I8QDP79MaHEIAlfh933zqcE8LyUt9doytF3YySBUDWippk8MAaKAJJtNb+Qsi+Kx/RsSY02VxMy9xRTp9d/Vr+U5BctKqhqf3ZkJdTIcy+z4hYpFS8A4bECJFHOnKIekIHD9glHkqzS5Vm6E4g/KMNkKylHKlDXOafhNZAiJ1ynxaZIuedrceFJNC47HnocQEtusPKpR09HGXXYhKMEubgF5tsTO4ks6pplMPvbdjxYcVOg4Wv0N/LJ4ffAucG9edMcKOTnKqZycqqZPE6KsTpSZMJi2Kl3mBrJE7JbR1YMlNwG6NlUIdIqVoTLZgLsTEkHqWi6OExykbVTqFuoWJJY3BmRAcP9H3FdLYbqcajfWshwvPM2AmYb8V3zBvzEKL1rpvG26fd3kGhk3Vu07qAUhHLMi3P0McEky4cLiEWgI7UyHFLI2yMRZgz23UUtxhRSkvCJagRlVG/s4yoylzBQJir8G3qmb36WjBXxpqAGHfLxw05EQI1JGV3ReYOs= user@somewhere\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/juju/juju\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := juju.NewSshKey(ctx, \"mykey\", \u0026juju.SshKeyArgs{\n\t\t\tModelUuid: pulumi.Any(development.Uuid),\n\t\t\tPayload:   pulumi.String(\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1I8QDP79MaHEIAlfh933zqcE8LyUt9doytF3YySBUDWippk8MAaKAJJtNb+Qsi+Kx/RsSY02VxMy9xRTp9d/Vr+U5BctKqhqf3ZkJdTIcy+z4hYpFS8A4bECJFHOnKIekIHD9glHkqzS5Vm6E4g/KMNkKylHKlDXOafhNZAiJ1ynxaZIuedrceFJNC47HnocQEtusPKpR09HGXXYhKMEubgF5tsTO4ks6pplMPvbdjxYcVOg4Wv0N/LJ4ffAucG9edMcKOTnKqZycqqZPE6KsTpSZMJi2Kl3mBrJE7JbR1YMlNwG6NlUIdIqVoTLZgLsTEkHqWi6OExykbVTqFuoWJJY3BmRAcP9H3FdLYbqcajfWshwvPM2AmYb8V3zBvzEKL1rpvG26fd3kGhk3Vu07qAUhHLMi3P0McEky4cLiEWgI7UyHFLI2yMRZgz23UUtxhRSkvCJagRlVG/s4yoylzBQJir8G3qmb36WjBXxpqAGHfLxw05EQI1JGV3ReYOs= user@somewhere\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.juju.SshKey;\nimport com.pulumi.juju.SshKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var mykey = new SshKey(\"mykey\", SshKeyArgs.builder()\n            .modelUuid(development.uuid())\n            .payload(\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1I8QDP79MaHEIAlfh933zqcE8LyUt9doytF3YySBUDWippk8MAaKAJJtNb+Qsi+Kx/RsSY02VxMy9xRTp9d/Vr+U5BctKqhqf3ZkJdTIcy+z4hYpFS8A4bECJFHOnKIekIHD9glHkqzS5Vm6E4g/KMNkKylHKlDXOafhNZAiJ1ynxaZIuedrceFJNC47HnocQEtusPKpR09HGXXYhKMEubgF5tsTO4ks6pplMPvbdjxYcVOg4Wv0N/LJ4ffAucG9edMcKOTnKqZycqqZPE6KsTpSZMJi2Kl3mBrJE7JbR1YMlNwG6NlUIdIqVoTLZgLsTEkHqWi6OExykbVTqFuoWJJY3BmRAcP9H3FdLYbqcajfWshwvPM2AmYb8V3zBvzEKL1rpvG26fd3kGhk3Vu07qAUhHLMi3P0McEky4cLiEWgI7UyHFLI2yMRZgz23UUtxhRSkvCJagRlVG/s4yoylzBQJir8G3qmb36WjBXxpqAGHfLxw05EQI1JGV3ReYOs= user@somewhere\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  mykey:\n    type: juju:SshKey\n    properties:\n      modelUuid: ${development.uuid}\n      payload: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1I8QDP79MaHEIAlfh933zqcE8LyUt9doytF3YySBUDWippk8MAaKAJJtNb+Qsi+Kx/RsSY02VxMy9xRTp9d/Vr+U5BctKqhqf3ZkJdTIcy+z4hYpFS8A4bECJFHOnKIekIHD9glHkqzS5Vm6E4g/KMNkKylHKlDXOafhNZAiJ1ynxaZIuedrceFJNC47HnocQEtusPKpR09HGXXYhKMEubgF5tsTO4ks6pplMPvbdjxYcVOg4Wv0N/LJ4ffAucG9edMcKOTnKqZycqqZPE6KsTpSZMJi2Kl3mBrJE7JbR1YMlNwG6NlUIdIqVoTLZgLsTEkHqWi6OExykbVTqFuoWJJY3BmRAcP9H3FdLYbqcajfWshwvPM2AmYb8V3zBvzEKL1rpvG26fd3kGhk3Vu07qAUhHLMi3P0McEky4cLiEWgI7UyHFLI2yMRZgz23UUtxhRSkvCJagRlVG/s4yoylzBQJir8G3qmb36WjBXxpqAGHfLxw05EQI1JGV3ReYOs= user@somewhere\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nKeys can be imported with the UUID of the model and the username of the key\n\n```sh\n$ pulumi import juju:index/sshKey:SshKey dev-user ssh_key:1d10a751-02c1-43d5-b46b-d84fe04d6fde:dev-user\n```\n\n","properties":{"modelUuid":{"type":"string","description":"The UUID of the model to operate in.\n"},"payload":{"type":"string","description":"SSH key payload.\n"}},"type":"object","required":["modelUuid","payload"],"inputProperties":{"modelUuid":{"type":"string","description":"The UUID of the model to operate in.\n"},"payload":{"type":"string","description":"SSH key payload.\n"}},"requiredInputs":["modelUuid","payload"],"stateInputs":{"description":"Input properties used for looking up and filtering SshKey resources.\n","properties":{"modelUuid":{"type":"string","description":"The UUID of the model to operate in.\n"},"payload":{"type":"string","description":"SSH key payload.\n"}},"type":"object"}},"juju:index/storagePool:StoragePool":{"description":"A resource that represents a Juju storage pool.\n\t\t\nTo learn more about storage pools, please visit: https://documentation.ubuntu.com/juju/3.6/reference/storage/#storage-pool\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as juju from \"@pulumi/juju\";\n\nconst mypool = new juju.StoragePool(\"mypool\", {\n    name: \"mypool\",\n    modelUuid: development.uuid,\n    storageProvider: \"tmpfs\",\n    attributes: {\n        a: \"b\",\n        c: \"d\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_juju as juju\n\nmypool = juju.StoragePool(\"mypool\",\n    name=\"mypool\",\n    model_uuid=development[\"uuid\"],\n    storage_provider=\"tmpfs\",\n    attributes={\n        \"a\": \"b\",\n        \"c\": \"d\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Juju = Pulumi.Juju;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var mypool = new Juju.StoragePool(\"mypool\", new()\n    {\n        Name = \"mypool\",\n        ModelUuid = development.Uuid,\n        StorageProvider = \"tmpfs\",\n        Attributes = \n        {\n            { \"a\", \"b\" },\n            { \"c\", \"d\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/juju/juju\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := juju.NewStoragePool(ctx, \"mypool\", \u0026juju.StoragePoolArgs{\n\t\t\tName:            pulumi.String(\"mypool\"),\n\t\t\tModelUuid:       pulumi.Any(development.Uuid),\n\t\t\tStorageProvider: pulumi.String(\"tmpfs\"),\n\t\t\tAttributes: pulumi.StringMap{\n\t\t\t\t\"a\": pulumi.String(\"b\"),\n\t\t\t\t\"c\": pulumi.String(\"d\"),\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.juju.StoragePool;\nimport com.pulumi.juju.StoragePoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var mypool = new StoragePool(\"mypool\", StoragePoolArgs.builder()\n            .name(\"mypool\")\n            .modelUuid(development.uuid())\n            .storageProvider(\"tmpfs\")\n            .attributes(Map.ofEntries(\n                Map.entry(\"a\", \"b\"),\n                Map.entry(\"c\", \"d\")\n            ))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  mypool:\n    type: juju:StoragePool\n    properties:\n      name: mypool\n      modelUuid: ${development.uuid}\n      storageProvider: tmpfs\n      attributes:\n        a: b\n        c: d\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nStorage pools can be imported with the UUID of the model and the name of the pool.\n\n```sh\n$ pulumi import juju:index/storagePool:StoragePool my_pool 1d10a751-02c1-43d5-b46b-d84fe04d6fde:my_pool\n```\n\n","properties":{"attributes":{"type":"object","additionalProperties":{"type":"string"},"description":"Attributes for the storage pool.\n"},"modelUuid":{"type":"string","description":"The UUID of the model where the storage pool will be created.\n"},"name":{"type":"string","description":"The name of the storage pool.\n"},"storageProvider":{"type":"string","description":"The storage provider type (e.g., 'rootfs', 'tmpfs', 'loop', or a cloud specific provider).\n"}},"type":"object","required":["modelUuid","name","storageProvider"],"inputProperties":{"attributes":{"type":"object","additionalProperties":{"type":"string"},"description":"Attributes for the storage pool.\n"},"modelUuid":{"type":"string","description":"The UUID of the model where the storage pool will be created.\n"},"name":{"type":"string","description":"The name of the storage pool.\n"},"storageProvider":{"type":"string","description":"The storage provider type (e.g., 'rootfs', 'tmpfs', 'loop', or a cloud specific provider).\n"}},"requiredInputs":["modelUuid","storageProvider"],"stateInputs":{"description":"Input properties used for looking up and filtering StoragePool resources.\n","properties":{"attributes":{"type":"object","additionalProperties":{"type":"string"},"description":"Attributes for the storage pool.\n"},"modelUuid":{"type":"string","description":"The UUID of the model where the storage pool will be created.\n"},"name":{"type":"string","description":"The name of the storage pool.\n"},"storageProvider":{"type":"string","description":"The storage provider type (e.g., 'rootfs', 'tmpfs', 'loop', or a cloud specific provider).\n"}},"type":"object"}},"juju:index/user:User":{"description":"A resource that represents a Juju User.\n","properties":{"displayName":{"type":"string","description":"The display name to be assigned to the user (optional).\n"},"name":{"type":"string"},"password":{"type":"string","description":"The password to be assigned to the user.\n","secret":true}},"type":"object","required":["name","password"],"inputProperties":{"displayName":{"type":"string","description":"The display name to be assigned to the user (optional).\n"},"name":{"type":"string"},"password":{"type":"string","description":"The password to be assigned to the user.\n","secret":true}},"requiredInputs":["password"],"stateInputs":{"description":"Input properties used for looking up and filtering User resources.\n","properties":{"displayName":{"type":"string","description":"The display name to be assigned to the user (optional).\n"},"name":{"type":"string"},"password":{"type":"string","description":"The password to be assigned to the user.\n","secret":true}},"type":"object"}}},"functions":{"juju:index/getApplication:getApplication":{"description":"A data source that represents a single Juju application deployment from a charm.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as juju from \"@pulumi/juju\";\n\nconst _this = juju.getApplication({\n    name: thisJujuApplication.name,\n    modelUuid: model.uuid,\n});\n```\n```python\nimport pulumi\nimport pulumi_juju as juju\n\nthis = juju.get_application(name=this_juju_application[\"name\"],\n    model_uuid=model[\"uuid\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Juju = Pulumi.Juju;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var @this = Juju.GetApplication.Invoke(new()\n    {\n        Name = thisJujuApplication.Name,\n        ModelUuid = model.Uuid,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/juju/juju\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := juju.LookupApplication(ctx, \u0026juju.LookupApplicationArgs{\n\t\t\tName:      thisJujuApplication.Name,\n\t\t\tModelUuid: model.Uuid,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.juju.JujuFunctions;\nimport com.pulumi.juju.inputs.GetApplicationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 this = JujuFunctions.getApplication(GetApplicationArgs.builder()\n            .name(thisJujuApplication.name())\n            .modelUuid(model.uuid())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  this:\n    fn::invoke:\n      function: juju:getApplication\n      arguments:\n        name: ${thisJujuApplication.name}\n        modelUuid: ${model.uuid}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getApplication.\n","properties":{"modelUuid":{"type":"string","description":"The uuid of the model where the application is deployed.\n"},"name":{"type":"string","description":"Name of the application.\n"}},"type":"object","required":["modelUuid","name"]},"outputs":{"description":"A collection of values returned by getApplication.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"modelUuid":{"description":"The uuid of the model where the application is deployed.\n","type":"string"},"name":{"description":"Name of the application.\n","type":"string"}},"required":["id","modelUuid","name"],"type":"object"}},"juju:index/getCharm:getCharm":{"description":"A data source that fetches charm metadata from CharmHub, including the resolved revision, the names and interfaces of all integrations the charm provides or requires.\n","inputs":{"description":"A collection of arguments for invoking getCharm.\n","properties":{"architecture":{"type":"string","description":"The architecture of the charm, e.g. \"amd64\". Defaults to \"amd64\" when not set.\n"},"base":{"type":"string","description":"The OS base for the charm in the form os@channel, e.g. \"ubuntu@22.04\".\n"},"channel":{"type":"string","description":"The channel to resolve, e.g. \"3/stable\". Required when revision is set.\n"},"charm":{"type":"string","description":"The name of the charm to look up.\n"},"revision":{"type":"number","description":"The revision of the charm to fetch.\n"},"storeUrl":{"type":"string","description":"Base URL of the charm store. Defaults to https://charmhub.io/.\n"}},"type":"object","required":["charm"]},"outputs":{"description":"A collection of values returned by getCharm.\n","properties":{"architecture":{"description":"The architecture of the charm, e.g. \"amd64\". Defaults to \"amd64\" when not set.\n","type":"string"},"base":{"description":"The OS base for the charm in the form os@channel, e.g. \"ubuntu@22.04\".\n","type":"string"},"channel":{"description":"The channel to resolve, e.g. \"3/stable\". Required when revision is set.\n","type":"string"},"charm":{"description":"The name of the charm to look up.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"provides":{"additionalProperties":{"type":"string"},"description":"Integrations provided by the charm. Key is the endpoint name, value is the interface name.\n","type":"object"},"requires":{"additionalProperties":{"type":"string"},"description":"Integrations required by the charm. Key is the endpoint name, value is the interface name.\n","type":"object"},"resources":{"additionalProperties":{"type":"string"},"description":"OCI/file resources for the charm. Key is the resource name, value is the revision number.\n","type":"object"},"revision":{"description":"The revision of the charm to fetch.\n","type":"number"},"storeUrl":{"description":"Base URL of the charm store. Defaults to https://charmhub.io/.\n","type":"string"}},"required":["base","channel","charm","id","provides","requires","resources","revision"],"type":"object"}},"juju:index/getJaasGroup:getJaasGroup":{"description":"A data source representing a Juju JAAS Group.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as juju from \"@pulumi/juju\";\n\nconst test = juju.getJaasGroup({\n    name: \"group-0\",\n});\nexport const groupUuid = test.then(test =\u003e test.uuid);\n```\n```python\nimport pulumi\nimport pulumi_juju as juju\n\ntest = juju.get_jaas_group(name=\"group-0\")\npulumi.export(\"groupUuid\", test.uuid)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Juju = Pulumi.Juju;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = Juju.GetJaasGroup.Invoke(new()\n    {\n        Name = \"group-0\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"groupUuid\"] = test.Apply(getJaasGroupResult =\u003e getJaasGroupResult.Uuid),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/juju/juju\"\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 := juju.LookupJaasGroup(ctx, \u0026juju.LookupJaasGroupArgs{\n\t\t\tName: \"group-0\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"groupUuid\", test.Uuid)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.juju.JujuFunctions;\nimport com.pulumi.juju.inputs.GetJaasGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var test = JujuFunctions.getJaasGroup(GetJaasGroupArgs.builder()\n            .name(\"group-0\")\n            .build());\n\n        ctx.export(\"groupUuid\", test.uuid());\n    }\n}\n```\n```yaml\nvariables:\n  test:\n    fn::invoke:\n      function: juju:getJaasGroup\n      arguments:\n        name: group-0\noutputs:\n  groupUuid: ${test.uuid}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getJaasGroup.\n","properties":{"name":{"type":"string","description":"The name of the group.\n"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getJaasGroup.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"name":{"description":"The name of the group.\n","type":"string"},"uuid":{"description":"The UUID of the group.\n","type":"string"}},"required":["id","name","uuid"],"type":"object"}},"juju:index/getJaasRole:getJaasRole":{"description":"A data source representing a Juju JAAS Role.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as juju from \"@pulumi/juju\";\n\nconst test = juju.getJaasRole({\n    name: \"role-0\",\n});\nexport const roleUuid = test.then(test =\u003e test.uuid);\n```\n```python\nimport pulumi\nimport pulumi_juju as juju\n\ntest = juju.get_jaas_role(name=\"role-0\")\npulumi.export(\"roleUuid\", test.uuid)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Juju = Pulumi.Juju;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = Juju.GetJaasRole.Invoke(new()\n    {\n        Name = \"role-0\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"roleUuid\"] = test.Apply(getJaasRoleResult =\u003e getJaasRoleResult.Uuid),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/juju/juju\"\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 := juju.LookupJaasRole(ctx, \u0026juju.LookupJaasRoleArgs{\n\t\t\tName: \"role-0\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"roleUuid\", test.Uuid)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.juju.JujuFunctions;\nimport com.pulumi.juju.inputs.GetJaasRoleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var test = JujuFunctions.getJaasRole(GetJaasRoleArgs.builder()\n            .name(\"role-0\")\n            .build());\n\n        ctx.export(\"roleUuid\", test.uuid());\n    }\n}\n```\n```yaml\nvariables:\n  test:\n    fn::invoke:\n      function: juju:getJaasRole\n      arguments:\n        name: role-0\noutputs:\n  roleUuid: ${test.uuid}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getJaasRole.\n","properties":{"name":{"type":"string","description":"The name of the role.\n"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getJaasRole.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"name":{"description":"The name of the role.\n","type":"string"},"uuid":{"description":"The UUID of the role. The UUID is used to reference roles in other resources.\n","type":"string"}},"required":["id","name","uuid"],"type":"object"}},"juju:index/getMachine:getMachine":{"description":"A data source representing a Juju Machine.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as juju from \"@pulumi/juju\";\n\nconst _this = juju.getMachine({\n    modelUuid: development.uuid,\n    machineId: \"2\",\n});\n```\n```python\nimport pulumi\nimport pulumi_juju as juju\n\nthis = juju.get_machine(model_uuid=development[\"uuid\"],\n    machine_id=\"2\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Juju = Pulumi.Juju;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var @this = Juju.GetMachine.Invoke(new()\n    {\n        ModelUuid = development.Uuid,\n        MachineId = \"2\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/juju/juju\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := juju.LookupMachine(ctx, \u0026juju.LookupMachineArgs{\n\t\t\tModelUuid: development.Uuid,\n\t\t\tMachineId: \"2\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.juju.JujuFunctions;\nimport com.pulumi.juju.inputs.GetMachineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 this = JujuFunctions.getMachine(GetMachineArgs.builder()\n            .modelUuid(development.uuid())\n            .machineId(\"2\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  this:\n    fn::invoke:\n      function: juju:getMachine\n      arguments:\n        modelUuid: ${development.uuid}\n        machineId: '2'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getMachine.\n","properties":{"machineId":{"type":"string","description":"The Juju id of the machine.\n"},"modelUuid":{"type":"string","description":"The UUID of the model.\n"}},"type":"object","required":["machineId","modelUuid"]},"outputs":{"description":"A collection of values returned by getMachine.\n","properties":{"id":{"description":"The ID of this resource.\n","type":"string"},"machineId":{"description":"The Juju id of the machine.\n","type":"string"},"modelUuid":{"description":"The UUID of the model.\n","type":"string"}},"required":["id","machineId","modelUuid"],"type":"object"}},"juju:index/getModel:getModel":{"description":"Use the model data source to retrieve information about an existing Juju model. This is useful when you need to reference model attributes such as the model UUID in other resources.\n\nModels can be looked up either by their UUID or a combination of name and owner e.g. admin/myModel. The owner is the user that created the model and can be found with the 'juju show-model' command.\n\n","inputs":{"description":"A collection of arguments for invoking getModel.\n","properties":{"name":{"type":"string","description":"The name of the model.\n"},"owner":{"type":"string","description":"The owner of the model.\n"},"uuid":{"type":"string","description":"The UUID of the model.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getModel.\n","properties":{"id":{"description":"The ID of this resource.\n","type":"string"},"name":{"description":"The name of the model.\n","type":"string"},"owner":{"description":"The owner of the model.\n","type":"string"},"uuid":{"description":"The UUID of the model.\n","type":"string"}},"required":["id","name","owner","uuid"],"type":"object"}},"juju:index/getOffer:getOffer":{"description":"A data source representing a Juju Offer.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as juju from \"@pulumi/juju\";\n\nconst _this = juju.getOffer({\n    url: \"admin/development.mysql\",\n});\n```\n```python\nimport pulumi\nimport pulumi_juju as juju\n\nthis = juju.get_offer(url=\"admin/development.mysql\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Juju = Pulumi.Juju;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var @this = Juju.GetOffer.Invoke(new()\n    {\n        Url = \"admin/development.mysql\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/juju/juju\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := juju.LookupOffer(ctx, \u0026juju.LookupOfferArgs{\n\t\t\tUrl: \"admin/development.mysql\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.juju.JujuFunctions;\nimport com.pulumi.juju.inputs.GetOfferArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 this = JujuFunctions.getOffer(GetOfferArgs.builder()\n            .url(\"admin/development.mysql\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  this:\n    fn::invoke:\n      function: juju:getOffer\n      arguments:\n        url: admin/development.mysql\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getOffer.\n","properties":{"offeringController":{"type":"string","description":"The name of the offering controller.\n"},"url":{"type":"string","description":"The offer URL.\n"}},"type":"object","required":["url"]},"outputs":{"description":"A collection of values returned by getOffer.\n","properties":{"applicationName":{"description":"The name of the application.\n","type":"string"},"endpoints":{"description":"The endpoint names.\n","items":{"type":"string"},"type":"array"},"id":{"description":"The ID of this resource.\n","type":"string"},"name":{"description":"The name of the offer.\n","type":"string"},"offeringController":{"description":"The name of the offering controller.\n","type":"string"},"url":{"description":"The offer URL.\n","type":"string"}},"required":["applicationName","endpoints","id","name","url"],"type":"object"}},"juju:index/getSecret:getSecret":{"description":"A data source representing a Juju Secret.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as juju from \"@pulumi/juju\";\n\nconst myModel = juju.getModel({\n    name: \"default\",\n});\nconst mySecretDataSource = myModel.then(myModel =\u003e juju.getSecret({\n    name: \"my_secret\",\n    modelUuid: myModel.uuid,\n}));\nconst ubuntu = new juju.Application(\"ubuntu\", {\n    modelUuid: myModel.then(myModel =\u003e myModel.uuid),\n    name: \"ubuntu\",\n    charms: [{\n        name: \"ubuntu\",\n    }],\n    config: {\n        secret: mySecretDataSource.then(mySecretDataSource =\u003e mySecretDataSource.secretId),\n    },\n});\nconst mySecretAccess = new juju.AccessSecret(\"my_secret_access\", {\n    modelUuid: myModel.then(myModel =\u003e myModel.uuid),\n    applications: [ubuntu.name],\n    secretId: mySecretDataSource.then(mySecretDataSource =\u003e mySecretDataSource.secretId),\n});\n```\n```python\nimport pulumi\nimport pulumi_juju as juju\n\nmy_model = juju.get_model(name=\"default\")\nmy_secret_data_source = juju.get_secret(name=\"my_secret\",\n    model_uuid=my_model.uuid)\nubuntu = juju.Application(\"ubuntu\",\n    model_uuid=my_model.uuid,\n    name=\"ubuntu\",\n    charms=[{\n        \"name\": \"ubuntu\",\n    }],\n    config={\n        \"secret\": my_secret_data_source.secret_id,\n    })\nmy_secret_access = juju.AccessSecret(\"my_secret_access\",\n    model_uuid=my_model.uuid,\n    applications=[ubuntu.name],\n    secret_id=my_secret_data_source.secret_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Juju = Pulumi.Juju;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myModel = Juju.GetModel.Invoke(new()\n    {\n        Name = \"default\",\n    });\n\n    var mySecretDataSource = Juju.GetSecret.Invoke(new()\n    {\n        Name = \"my_secret\",\n        ModelUuid = myModel.Apply(getModelResult =\u003e getModelResult.Uuid),\n    });\n\n    var ubuntu = new Juju.Application(\"ubuntu\", new()\n    {\n        ModelUuid = myModel.Apply(getModelResult =\u003e getModelResult.Uuid),\n        Name = \"ubuntu\",\n        Charms = new[]\n        {\n            new Juju.Inputs.ApplicationCharmArgs\n            {\n                Name = \"ubuntu\",\n            },\n        },\n        Config = \n        {\n            { \"secret\", mySecretDataSource.Apply(getSecretResult =\u003e getSecretResult.SecretId) },\n        },\n    });\n\n    var mySecretAccess = new Juju.AccessSecret(\"my_secret_access\", new()\n    {\n        ModelUuid = myModel.Apply(getModelResult =\u003e getModelResult.Uuid),\n        Applications = new[]\n        {\n            ubuntu.Name,\n        },\n        SecretId = mySecretDataSource.Apply(getSecretResult =\u003e getSecretResult.SecretId),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/juju/juju\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyModel, err := juju.LookupModel(ctx, \u0026juju.LookupModelArgs{\n\t\t\tName: pulumi.StringRef(\"default\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmySecretDataSource, err := juju.LookupSecret(ctx, \u0026juju.LookupSecretArgs{\n\t\t\tName:      \"my_secret\",\n\t\t\tModelUuid: myModel.Uuid,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tubuntu, err := juju.NewApplication(ctx, \"ubuntu\", \u0026juju.ApplicationArgs{\n\t\t\tModelUuid: pulumi.String(myModel.Uuid),\n\t\t\tName:      pulumi.String(\"ubuntu\"),\n\t\t\tCharms: juju.ApplicationCharmArray{\n\t\t\t\t\u0026juju.ApplicationCharmArgs{\n\t\t\t\t\tName: pulumi.String(\"ubuntu\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tConfig: pulumi.StringMap{\n\t\t\t\t\"secret\": pulumi.String(mySecretDataSource.SecretId),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = juju.NewAccessSecret(ctx, \"my_secret_access\", \u0026juju.AccessSecretArgs{\n\t\t\tModelUuid: pulumi.String(myModel.Uuid),\n\t\t\tApplications: pulumi.StringArray{\n\t\t\t\tubuntu.Name,\n\t\t\t},\n\t\t\tSecretId: pulumi.String(mySecretDataSource.SecretId),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.juju.JujuFunctions;\nimport com.pulumi.juju.inputs.GetModelArgs;\nimport com.pulumi.juju.inputs.GetSecretArgs;\nimport com.pulumi.juju.Application;\nimport com.pulumi.juju.ApplicationArgs;\nimport com.pulumi.juju.inputs.ApplicationCharmArgs;\nimport com.pulumi.juju.AccessSecret;\nimport com.pulumi.juju.AccessSecretArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 myModel = JujuFunctions.getModel(GetModelArgs.builder()\n            .name(\"default\")\n            .build());\n\n        final var mySecretDataSource = JujuFunctions.getSecret(GetSecretArgs.builder()\n            .name(\"my_secret\")\n            .modelUuid(myModel.uuid())\n            .build());\n\n        var ubuntu = new Application(\"ubuntu\", ApplicationArgs.builder()\n            .modelUuid(myModel.uuid())\n            .name(\"ubuntu\")\n            .charms(ApplicationCharmArgs.builder()\n                .name(\"ubuntu\")\n                .build())\n            .config(Map.of(\"secret\", mySecretDataSource.secretId()))\n            .build());\n\n        var mySecretAccess = new AccessSecret(\"mySecretAccess\", AccessSecretArgs.builder()\n            .modelUuid(myModel.uuid())\n            .applications(ubuntu.name())\n            .secretId(mySecretDataSource.secretId())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ubuntu:\n    type: juju:Application\n    properties:\n      modelUuid: ${myModel.uuid}\n      name: ubuntu\n      charms:\n        - name: ubuntu\n      config:\n        secret: ${mySecretDataSource.secretId}\n  mySecretAccess:\n    type: juju:AccessSecret\n    name: my_secret_access\n    properties:\n      modelUuid: ${myModel.uuid}\n      applications:\n        - ${ubuntu.name}\n      secretId: ${mySecretDataSource.secretId}\nvariables:\n  myModel:\n    fn::invoke:\n      function: juju:getModel\n      arguments:\n        name: default\n  mySecretDataSource:\n    fn::invoke:\n      function: juju:getSecret\n      arguments:\n        name: my_secret\n        modelUuid: ${myModel.uuid}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getSecret.\n","properties":{"modelUuid":{"type":"string","description":"The uuid of the model containing the secret.\n"},"name":{"type":"string","description":"The name of the secret.\n"}},"type":"object","required":["modelUuid","name"]},"outputs":{"description":"A collection of values returned by getSecret.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"modelUuid":{"description":"The uuid of the model containing the secret.\n","type":"string"},"name":{"description":"The name of the secret.\n","type":"string"},"secretId":{"description":"The ID of the secret.\n","type":"string"}},"required":["id","modelUuid","name","secretId"],"type":"object"}},"juju:index/getStoragePool:getStoragePool":{"description":"A data source representing a Juju Storage Pool.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as juju from \"@pulumi/juju\";\n\nconst myModel = juju.getModel({\n    name: \"default\",\n});\nconst myStoragePoolDataSource = myModel.then(myModel =\u003e juju.getStoragePool({\n    name: \"my_storage_pool\",\n    modelUuid: myModel.uuid,\n}));\n```\n```python\nimport pulumi\nimport pulumi_juju as juju\n\nmy_model = juju.get_model(name=\"default\")\nmy_storage_pool_data_source = juju.get_storage_pool(name=\"my_storage_pool\",\n    model_uuid=my_model.uuid)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Juju = Pulumi.Juju;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myModel = Juju.GetModel.Invoke(new()\n    {\n        Name = \"default\",\n    });\n\n    var myStoragePoolDataSource = Juju.GetStoragePool.Invoke(new()\n    {\n        Name = \"my_storage_pool\",\n        ModelUuid = myModel.Apply(getModelResult =\u003e getModelResult.Uuid),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/juju/juju\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyModel, err := juju.LookupModel(ctx, \u0026juju.LookupModelArgs{\n\t\t\tName: pulumi.StringRef(\"default\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = juju.LookupStoragePool(ctx, \u0026juju.LookupStoragePoolArgs{\n\t\t\tName:      \"my_storage_pool\",\n\t\t\tModelUuid: myModel.Uuid,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.juju.JujuFunctions;\nimport com.pulumi.juju.inputs.GetModelArgs;\nimport com.pulumi.juju.inputs.GetStoragePoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 myModel = JujuFunctions.getModel(GetModelArgs.builder()\n            .name(\"default\")\n            .build());\n\n        final var myStoragePoolDataSource = JujuFunctions.getStoragePool(GetStoragePoolArgs.builder()\n            .name(\"my_storage_pool\")\n            .modelUuid(myModel.uuid())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  myModel:\n    fn::invoke:\n      function: juju:getModel\n      arguments:\n        name: default\n  myStoragePoolDataSource:\n    fn::invoke:\n      function: juju:getStoragePool\n      arguments:\n        name: my_storage_pool\n        modelUuid: ${myModel.uuid}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getStoragePool.\n","properties":{"modelUuid":{"type":"string","description":"The uuid of the model containing the storage pool.\n"},"name":{"type":"string","description":"The name of the storage pool.\n"}},"type":"object","required":["modelUuid","name"]},"outputs":{"description":"A collection of values returned by getStoragePool.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"modelUuid":{"description":"The uuid of the model containing the storage pool.\n","type":"string"},"name":{"description":"The name of the storage pool.\n","type":"string"}},"required":["id","modelUuid","name"],"type":"object"}},"pulumi:providers:juju/terraformConfig":{"description":"This function returns a Terraform config object with terraform-namecased keys,to be used with the Terraform Module Provider.","inputs":{"properties":{"__self__":{"$ref":"#/resources/pulumi:providers:juju"}},"type":"object","required":["__self__"]},"outputs":{"properties":{"result":{"additionalProperties":{"$ref":"pulumi.json#/Any"},"type":"object"}},"required":["result"],"type":"object"}}},"parameterization":{"baseProvider":{"name":"terraform-provider","version":"1.0.1"},"parameter":"eyJyZW1vdGUiOnsidXJsIjoicmVnaXN0cnkub3BlbnRvZnUub3JnL2p1anUvanVqdSIsInZlcnNpb24iOiIxLjQuMC1yYzEifX0="}}